diff --git a/DEPS b/DEPS
index 2d11fc4..4e0cce6 100644
--- a/DEPS
+++ b/DEPS
@@ -228,11 +228,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '31df6806c06b2949769a128fc5c1da8408ad1d1e',
+  'skia_revision': 'd7437eec2e9718eda8c8f5cb94ddcef1005c0bfb',
   # 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': '890fc3811c10070e1be72e3d48df0e385af369a2',
+  'v8_revision': 'd5bc1bb5517606fbd131b29cc36170c00d58da13',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -279,7 +279,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
-  'freetype_revision': '47b1a541cb1943d85da3976b93f9a5ed490288e2',
+  'freetype_revision': '09195a82a4a39afb0f8281563f48ce4493455b4e',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
@@ -299,7 +299,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '4505381167a6d6d84ccf2897e903c18bc28f88e2',
+  'catapult_revision': '4360d3a81d9d484e96562f1291f273ffadcb0a7d',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -307,7 +307,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '326dde8dbf802b1e6d7e261d0f158e86e54d70bd',
+  'devtools_frontend_revision': 'f6d1346cfb3fd27044107f94114019f0d39a2aa7',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -347,7 +347,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': 'b7c7f62829b0ed8297d5f35539c862d94d098a64',
+  'dawn_revision': 'ccc4766e76ecaf3424f6cb74aa8ccee80800464b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -395,7 +395,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.
-  'libunwind_revision':    'cdb04dc77cd222c79c00a55bd11d4dc0e91b6cf1',
+  'libunwind_revision':    'b79b97c1f6adf97270247f8cc8dfafa19b971453',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -680,7 +680,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': 'MkXs6TpeCBl3pZazTjAVTWewsffZCrWkgBKMuw0eZFUC',
+          'version': '1URU-9iILPccuJwgENTSMUJmx3PdNRt4uniDnIMcMLkC',
         },
       ],
       'dep_type': 'cipd',
@@ -691,7 +691,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'amCMt5ElDz1OICB6umnsIEI-VlGDuxwiOdmE2m7Bp1QC',
+          'version': 'wSU83B5QT_7vWnrJ8Gkecgy0kvaSMw4JwL70S1m4c_4C',
         },
       ],
       'dep_type': 'cipd',
@@ -702,7 +702,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': '_PtlxrwpL9FLj5dDOhU3VPQMBcmk5YTQHklkKNvl5psC',
+          'version': 'yFEgyjVypfPYm7pgT7EnKPoOqa3otepPvE9duGQbJzEC',
         },
       ],
       'dep_type': 'cipd',
@@ -767,7 +767,7 @@
     'packages': [
       {
           'package': 'chromium/third_party/androidx',
-          'version': 'LeiIWludv84_u11Z19AGLNhYxzZcsn_fP-PjDjkxdCsC',
+          'version': 'lo5p1oo8yhPj2rUylGmKm2aBBQvNarY6hgj1tYbctQkC',
       },
     ],
     'condition': 'checkout_android',
@@ -877,7 +877,7 @@
     Var('chromium_git') + '/angle/angle.git' + '@' +  Var('angle_revision'),
 
   'src/third_party/dav1d/libdav1d':
-    Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + 'e4812a6ad7621bb25f9d4ac40e8413e24ac78857',
+    Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + '7ee2501b362c756cc0fef11412c6afea34de031c',
 
   'src/third_party/dawn':
     Var('dawn_git') + '/dawn.git' + '@' +  Var('dawn_revision'),
@@ -983,7 +983,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '9039a957fa031a62a3afb51da628f405f8ccd1c9',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '923a131e2a899aa635805f583e71e599c099c5c3',
       'condition': 'checkout_chromeos',
   },
 
@@ -1389,7 +1389,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '5d5769f0b54a2a505a62194493f1047dc3b686d1',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '70e408c9bc8610ab9a8484b2ed91461d8416166e',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1621,7 +1621,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'c53abb766db4f9a1369b084b985319379b74f1b7',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'f48d3cfbabbd9c94c358dd78f461cb01a0253d8a',
+    Var('webrtc_git') + '/src.git' + '@' + '53adc7b1c8b200bd3227fb06157a56bff09471bb',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1682,7 +1682,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@aed2dbb78847aee2d4f3997afb84418573b2fc5e',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@0373519cba23d48901497d77251cb5f7e9df5cfa',
     'condition': 'checkout_src_internal',
   },
 
@@ -1701,7 +1701,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'M0YE0T_txF0uEMuGUtJTW-2dOVi1v-xOSUSLpF-ydI8C',
+        'version': 'CXEQ-cXnS4zMzaASwBsQPC18ZbY69QxeHjiil4vn87kC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1712,7 +1712,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'JXDFnXGQv7TTH536aBAeQGpv-yVwwXaGiHQIWyolCUoC',
+        'version': 'WOaciqMMXpXSwqvqLCdrelp36W5o0UTlPeTuT27iyR0C',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java
index 029b7e0..3ce9a05 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java
@@ -51,7 +51,6 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.TraceEvent;
-import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.ScopedSysTraceEvent;
 import org.chromium.base.task.PostTask;
 import org.chromium.components.embedder_support.util.WebResourceResponseInfo;
@@ -1006,8 +1005,6 @@
                 if (TRACE) Log.i(TAG, "getDefaultVideoPoster");
                 result = mWebChromeClient.getDefaultVideoPoster();
             }
-            RecordHistogram.recordBooleanHistogram(
-                    "Android.WebView.CustomDefaultVideoPoster", result != null);
             if (result == null) {
                 // The ic_play_circle_outline_black_48dp icon is transparent so we need to draw it
                 // on a gray background.
diff --git a/ash/app_list/app_list_presenter_unittest.cc b/ash/app_list/app_list_presenter_unittest.cc
index 4eea7f9..81fcefe 100644
--- a/ash/app_list/app_list_presenter_unittest.cc
+++ b/ash/app_list/app_list_presenter_unittest.cc
@@ -6,6 +6,7 @@
 #include <memory>
 
 #include "ash/accessibility/accessibility_controller_impl.h"
+#include "ash/app_list/app_list_bubble_presenter.h"
 #include "ash/app_list/app_list_controller_impl.h"
 #include "ash/app_list/app_list_presenter_impl.h"
 #include "ash/app_list/app_list_test_view_delegate.h"
@@ -13,6 +14,8 @@
 #include "ash/app_list/model/app_list_test_model.h"
 #include "ash/app_list/model/search/test_search_result.h"
 #include "ash/app_list/test/app_list_test_helper.h"
+#include "ash/app_list/views/app_list_bubble_search_page.h"
+#include "ash/app_list/views/app_list_bubble_view.h"
 #include "ash/app_list/views/app_list_folder_view.h"
 #include "ash/app_list/views/app_list_item_view.h"
 #include "ash/app_list/views/app_list_main_view.h"
@@ -304,6 +307,99 @@
   base::test::ScopedFeatureList feature_list_;
 };
 
+// Tests search UI for all tablet/clamshell classic/bubble launcher
+// combinations.
+class SearchUITest
+    : public AshTestBase,
+      public testing::WithParamInterface<std::tuple<bool, bool>> {
+ public:
+  SearchUITest() = default;
+  SearchUITest(const SearchUITest&) = delete;
+  SearchUITest& operator=(const SearchUITest&) = delete;
+  ~SearchUITest() override = default;
+
+  // testing::Test:
+  void SetUp() override {
+    scoped_feature_list_.InitWithFeatureState(features::kAppListBubble,
+                                              app_list_bubble_flag());
+    AppListView::SetShortAnimationForTesting(true);
+    AshTestBase::SetUp();
+
+    // Make the display big enough to hold the app list.
+    UpdateDisplay("1024x768");
+  }
+
+  // testing::Test:
+  void TearDown() override {
+    AshTestBase::TearDown();
+    AppListView::SetShortAnimationForTesting(false);
+  }
+
+  // Whether we should use the AppListBubble flag.
+  bool app_list_bubble_flag() { return std::get<0>(GetParam()); }
+  // Whether we should run the test in tablet mode.
+  bool tablet_mode() { return std::get<1>(GetParam()); }
+
+  // Bubble launcher is visible in clamshell mode with kAppListBubble enabled.
+  bool should_show_bubble_launcher() {
+    return app_list_bubble_flag() && !tablet_mode();
+  }
+  // Zero state be shown in clamshell mode and in tablet mode when bubble
+  // launcher is not enabled.
+  bool should_show_zero_state_search() { return !app_list_bubble_flag(); }
+
+  void MaybeRefreshAppListSearchResultPage() {
+    // Bubble launcher has an AppListBubbleSearchPage which does not need to be
+    // refreshed like the SearchResultViewPage.
+    if (!should_show_bubble_launcher()) {
+      GetAppListTestHelper()
+          ->GetAppListView()
+          ->app_list_main_view()
+          ->contents_view()
+          ->search_result_page_view()
+          ->OnSearchResultContainerResultsChanged();
+    }
+  }
+
+  bool AppListSearchResultPageVisible() {
+    return should_show_bubble_launcher()
+               ? GetAppListTestHelper()->GetBubbleSearchPage()->GetVisible()
+               : GetAppListTestHelper()
+                     ->GetAppListView()
+                     ->app_list_main_view()
+                     ->contents_view()
+                     ->search_result_page_view()
+                     ->GetVisible();
+  }
+
+  void EnsureLauncherShown() {
+    if (should_show_bubble_launcher()) {
+      Shell::Get()->app_list_controller()->bubble_presenter_for_test()->Show(
+          GetPrimaryDisplay().id());
+    } else if (!tablet_mode()) {
+      // App list is always visible in tablet mode so we do not need to show it.
+      GetAppListTestHelper()->ShowAndRunLoop(GetPrimaryDisplayId());
+    }
+  }
+
+  gfx::Point SearchBoxCenterPoint() {
+    if (should_show_bubble_launcher()) {
+      return GetAppListTestHelper()
+          ->GetBubbleSearchBoxView()
+          ->GetBoundsInScreen()
+          .CenterPoint();
+    }
+    return GetAppListTestHelper()
+        ->GetAppListView()
+        ->search_box_view()
+        ->GetBoundsInScreen()
+        .CenterPoint();
+  }
+
+ private:
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
 // Used to test app_list behavior with a populated apps_grid
 class PopulatedAppListTest : public AshTestBase,
                              public testing::WithParamInterface<bool> {
@@ -426,6 +522,35 @@
                          PopulatedAppListWithVKEnabledTest,
                          testing::Bool());
 
+// Instantiate the values in the parameterized tests. First boolean is used to
+// determine whether we should use the kAppListBubble feature flag. The second
+// boolean is to determine whether we should run the test in tablet mode.
+INSTANTIATE_TEST_SUITE_P(All,
+                         SearchUITest,
+                         testing::Combine(testing::Bool(), testing::Bool()));
+
+// Tests that Zero State Search is only shown when needed.
+TEST_P(SearchUITest, LauncherSearchZeroState) {
+  EnableTabletMode(tablet_mode());
+  ui::test::EventGenerator* generator = GetEventGenerator();
+  EnsureLauncherShown();
+
+  // Tap Search Box to activate it and check search result view visibility.
+  generator->GestureTapAt(SearchBoxCenterPoint());
+  MaybeRefreshAppListSearchResultPage();
+  EXPECT_EQ(should_show_zero_state_search(), AppListSearchResultPageVisible());
+
+  // Type a character into the textfield and check visibility.
+  generator->PressKey(ui::VKEY_A, 0);
+  MaybeRefreshAppListSearchResultPage();
+  EXPECT_TRUE(AppListSearchResultPageVisible());
+
+  // Delete the character in the textfield and check visibility.
+  generator->PressKey(ui::VKEY_BACK, 0);
+  MaybeRefreshAppListSearchResultPage();
+  EXPECT_EQ(should_show_zero_state_search(), AppListSearchResultPageVisible());
+}
+
 // Verifies that context menu click should not activate the search box
 // (see https://crbug.com/941428).
 TEST_P(AppListPresenterTest, RightClickSearchBoxInPeeking) {
diff --git a/ash/app_list/views/app_list_bubble_apps_page.cc b/ash/app_list/views/app_list_bubble_apps_page.cc
index 6cedd7d..c4c51187 100644
--- a/ash/app_list/views/app_list_bubble_apps_page.cc
+++ b/ash/app_list/views/app_list_bubble_apps_page.cc
@@ -30,6 +30,10 @@
 
 namespace ash {
 
+namespace {
+constexpr int kContinueColumnCount = 2;
+}  // namespace
+
 AppListBubbleAppsPage::AppListBubbleAppsPage(
     AppListViewDelegate* view_delegate,
     ApplicationDragAndDropHost* drag_and_drop_host) {
@@ -56,8 +60,9 @@
   layout->set_cross_axis_alignment(BoxLayout::CrossAxisAlignment::kStretch);
 
   // Continue section row.
-  continue_section_ = scroll_contents->AddChildView(
-      std::make_unique<ContinueSectionView>(view_delegate));
+  continue_section_ =
+      scroll_contents->AddChildView(std::make_unique<ContinueSectionView>(
+          view_delegate, kContinueColumnCount));
 
   // Recent apps row.
   recent_apps_ = scroll_contents->AddChildView(
diff --git a/ash/app_list/views/continue_section_view.cc b/ash/app_list/views/continue_section_view.cc
index af83b1a..4ff34b76 100644
--- a/ash/app_list/views/continue_section_view.cc
+++ b/ash/app_list/views/continue_section_view.cc
@@ -26,16 +26,17 @@
 namespace ash {
 namespace {
 
-// Horizontal space between suggestions in dips.
-constexpr int kHorizontalSpacing = 8;
+// Vertical space between header and content in dips.
+constexpr int kVerticalSpacing = 8;
 
-constexpr int kContinueColumnCount = 2;
-constexpr int kContinueColumnSpacing = 16;
-constexpr int kContinueRowSpacing = 10;
+// Continue files section constants.
+constexpr int kContinueColumnSpacing = 8;
+constexpr int kContinueRowSpacing = 8;
+constexpr int kMinFilesForContinueSection = 3;
 
-std::unique_ptr<views::Label> CreateLabel(const std::u16string& text) {
+std::unique_ptr<views::Label> CreateContinueLabel(const std::u16string& text) {
   auto label = std::make_unique<views::Label>(text);
-  bubble_utils::ApplyStyle(label.get(), bubble_utils::LabelStyle::kBody);
+  bubble_utils::ApplyStyle(label.get(), bubble_utils::LabelStyle::kSubtitle);
   return label;
 }
 
@@ -75,23 +76,24 @@
 
 }  // namespace
 
-ContinueSectionView::ContinueSectionView(AppListViewDelegate* view_delegate)
-    : view_delegate_(view_delegate) {
+ContinueSectionView::ContinueSectionView(AppListViewDelegate* view_delegate,
+                                         int columns)
+    : view_delegate_(view_delegate), columns_(columns) {
   DCHECK(view_delegate_);
 
   auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kVertical, gfx::Insets(),
-      kHorizontalSpacing));
-  layout->set_main_axis_alignment(views::BoxLayout::MainAxisAlignment::kCenter);
+      kVerticalSpacing));
+  layout->set_main_axis_alignment(views::BoxLayout::MainAxisAlignment::kStart);
 
   // TODO(https://crbug.com/1204551): Localized strings.
   // TODO(https://crbug.com/1204551): Styling.
-  auto* continue_label = AddChildView(CreateLabel(u"Label"));
+  auto* continue_label = AddChildView(CreateContinueLabel(u"Continue"));
   continue_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
 
   suggestions_container_ = AddChildView(std::make_unique<views::View>());
   suggestions_container_->SetLayoutManager(std::make_unique<SimpleGridLayout>(
-      kContinueColumnCount, kContinueColumnSpacing, kContinueRowSpacing));
+      columns_, kContinueColumnSpacing, kContinueRowSpacing));
 
   std::vector<SearchResult*> tasks =
       GetTasksResultsFromSuggestionChips(view_delegate_->GetSearchModel());
@@ -100,7 +102,7 @@
     suggestions_container_->AddChildView(
         std::make_unique<ContinueTaskView>(task));
   }
-  SetVisible(!tasks.empty());
+  SetVisible(GetTasksSuggestionsCount() > kMinFilesForContinueSection);
 }
 
 ContinueSectionView::~ContinueSectionView() = default;
diff --git a/ash/app_list/views/continue_section_view.h b/ash/app_list/views/continue_section_view.h
index 11b89d27..160697f 100644
--- a/ash/app_list/views/continue_section_view.h
+++ b/ash/app_list/views/continue_section_view.h
@@ -19,7 +19,7 @@
  public:
   METADATA_HEADER(ContinueSectionView);
 
-  explicit ContinueSectionView(AppListViewDelegate* view_delegate);
+  ContinueSectionView(AppListViewDelegate* view_delegate, int columns);
   ContinueSectionView(const ContinueSectionView&) = delete;
   ContinueSectionView& operator=(const ContinueSectionView&) = delete;
   ~ContinueSectionView() override;
@@ -30,6 +30,7 @@
  private:
   AppListViewDelegate* const view_delegate_;
 
+  const int columns_;
   views::View* suggestions_container_ = nullptr;
 };
 
diff --git a/ash/app_list/views/continue_task_view.cc b/ash/app_list/views/continue_task_view.cc
index dc1be4d..dcc5c6ac 100644
--- a/ash/app_list/views/continue_task_view.cc
+++ b/ash/app_list/views/continue_task_view.cc
@@ -9,34 +9,72 @@
 #include <string>
 #include <utility>
 
+#include "ash/app_list/app_list_util.h"
 #include "ash/app_list/model/search/search_result.h"
 #include "ash/bubble/bubble_utils.h"
+#include "ash/style/ash_color_provider.h"
 #include "base/strings/string_util.h"
 #include "extensions/common/constants.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
+#include "ui/gfx/image/image_skia_operations.h"
+#include "ui/views/accessibility/view_accessibility.h"
+#include "ui/views/background.h"
+#include "ui/views/controls/image_view.h"
 #include "ui/views/controls/label.h"
-#include "ui/views/layout/fill_layout.h"
+#include "ui/views/layout/box_layout.h"
 
 namespace ash {
+namespace {
+constexpr int kIconSize = 36;
+constexpr int kPreferredWidth = 242;
+constexpr int kPreferredHeight = 52;
+}  // namespace
 
 ContinueTaskView::ContinueTaskView(SearchResult* task_result)
     : result_(task_result) {
-  SetLayoutManager(std::make_unique<views::FillLayout>());
-  title_ = AddChildView(std::make_unique<views::Label>());
-  SetText(result()->title());
+  SetFocusBehavior(FocusBehavior::ALWAYS);
+  SetLayoutManager(std::make_unique<views::BoxLayout>(
+      views::BoxLayout::Orientation::kHorizontal));
+  GetViewAccessibility().OverrideName(result()->title() + u" " +
+                                      result()->details());
+  GetViewAccessibility().OverrideRole(ax::mojom::Role::kListItem);
+
+  icon_ = AddChildView(std::make_unique<views::ImageView>());
+  icon_->SetVerticalAlignment(views::ImageView::Alignment::kLeading);
+  SetIcon(result()->chip_icon());
+
+  auto* label_container = AddChildView(std::make_unique<views::View>());
+  label_container->SetLayoutManager(std::make_unique<views::BoxLayout>(
+      views::BoxLayout::Orientation::kVertical));
+
+  title_ = label_container->AddChildView(
+      std::make_unique<views::Label>(result()->title()));
   title_->SetAccessibleName(result()->accessible_name());
+  title_->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
+  subtitle_ = label_container->AddChildView(
+      std::make_unique<views::Label>(result()->details()));
+  subtitle_->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
+
+  SetPreferredSize(gfx::Size(kPreferredWidth, kPreferredHeight));
 }
 
 ContinueTaskView::~ContinueTaskView() = default;
 
-void ContinueTaskView::SetText(const std::u16string& text) {
-  title_->SetText(text);
-  PreferredSizeChanged();
-}
-
 void ContinueTaskView::OnThemeChanged() {
   views::View::OnThemeChanged();
   bubble_utils::ApplyStyle(title_, bubble_utils::LabelStyle::kBody);
+  bubble_utils::ApplyStyle(subtitle_, bubble_utils::LabelStyle::kSubtitle);
+}
+
+void ContinueTaskView::SetIcon(const gfx::ImageSkia& icon) {
+  gfx::ImageSkia resized(gfx::ImageSkiaOperations::CreateResizedImage(
+      icon, skia::ImageOperations::RESIZE_BEST, GetIconSize()));
+  icon_->SetImage(resized);
+  icon_->SetImageSize(GetIconSize());
+}
+
+gfx::Size ContinueTaskView::GetIconSize() const {
+  return gfx::Size(kIconSize, kIconSize);
 }
 
 BEGIN_METADATA(ContinueTaskView, views::View)
diff --git a/ash/app_list/views/continue_task_view.h b/ash/app_list/views/continue_task_view.h
index 555d231..8d122e1 100644
--- a/ash/app_list/views/continue_task_view.h
+++ b/ash/app_list/views/continue_task_view.h
@@ -5,13 +5,11 @@
 #ifndef ASH_APP_LIST_VIEWS_CONTINUE_TASK_VIEW_H_
 #define ASH_APP_LIST_VIEWS_CONTINUE_TASK_VIEW_H_
 
-#include <memory>
-#include <string>
-
 #include "ash/ash_export.h"
 #include "ui/views/view.h"
 
 namespace views {
+class ImageView;
 class Label;
 }
 
@@ -34,10 +32,13 @@
   SearchResult* result() { return result_; }
 
  private:
-  void SetText(const std::u16string& task_title);
+  void SetIcon(const gfx::ImageSkia& icon);
+  gfx::Size GetIconSize() const;
 
   SearchResult* result_;
-  views::Label* title_;
+  views::Label* title_ = nullptr;
+  views::Label* subtitle_ = nullptr;
+  views::ImageView* icon_ = nullptr;
 };
 
 }  // namespace ash
diff --git a/ash/app_list/views/search_box_view.cc b/ash/app_list/views/search_box_view.cc
index 2cea2cc..ab4e2c6 100644
--- a/ash/app_list/views/search_box_view.cc
+++ b/ash/app_list/views/search_box_view.cc
@@ -18,6 +18,7 @@
 #include "ash/app_list/views/contents_view.h"
 #include "ash/app_list/views/result_selection_controller.h"
 #include "ash/app_list/views/search_result_base_view.h"
+#include "ash/app_list/views/search_result_page_view.h"
 #include "ash/constants/ash_features.h"
 #include "ash/keyboard/ui/keyboard_ui_controller.h"
 #include "ash/public/cpp/app_list/app_list_color_provider.h"
@@ -395,7 +396,9 @@
 
 SkColor SearchBoxView::GetBackgroundColorForState(AppListState state) const {
   if (state == AppListState::kStateSearchResults) {
-    if (features::IsDarkLightModeEnabled())
+    // Search box background is transparent when search results are shown.
+    if (features::IsDarkLightModeEnabled() &&
+        contents_view_->search_result_page_view()->GetVisible())
       return SK_ColorTRANSPARENT;
     return AppListColorProvider::Get()->GetSearchBoxCardBackgroundColor();
   }
diff --git a/ash/app_list/views/search_result_page_view.cc b/ash/app_list/views/search_result_page_view.cc
index d11e214..fc3035f 100644
--- a/ash/app_list/views/search_result_page_view.cc
+++ b/ash/app_list/views/search_result_page_view.cc
@@ -17,6 +17,7 @@
 #include "ash/app_list/views/search_result_list_view.h"
 #include "ash/app_list/views/search_result_page_anchored_dialog.h"
 #include "ash/app_list/views/search_result_tile_item_list_view.h"
+#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/app_list/app_list_color_provider.h"
 #include "ash/public/cpp/app_list/app_list_config.h"
 #include "ash/public/cpp/app_list/app_list_features.h"
@@ -296,6 +297,12 @@
 }
 
 void SearchResultPageView::UpdateResultContainersVisibility() {
+  if (!ShouldShowSearchResultView()) {
+    SetVisible(false);
+    return;
+  }
+  SetVisible(true);
+
   for (auto* container : result_container_views_) {
     // Containers are wrapped by a `SearchCardView`, so update the parent
     // visibility.
@@ -477,6 +484,14 @@
   anchored_dialog_.reset();
 }
 
+bool SearchResultPageView::ShouldShowSearchResultView() const {
+  // TODO: crbug.com/1234969 Remove after we cease zero state result queries.
+  return !features::IsAppListBubbleEnabled() ||
+         !base::TrimWhitespace(search_model_->search_box()->text(),
+                               base::TrimPositions::TRIM_ALL)
+              .empty();
+}
+
 void SearchResultPageView::OnHidden() {
   // Hide the search results page when it is behind search box to avoid focus
   // being moved onto suggested apps when zero state is enabled.
diff --git a/ash/app_list/views/search_result_page_view.h b/ash/app_list/views/search_result_page_view.h
index ca479dc5..db1a6bf 100644
--- a/ash/app_list/views/search_result_page_view.h
+++ b/ash/app_list/views/search_result_page_view.h
@@ -119,6 +119,9 @@
   // Returns background color for the given state.
   SkColor GetBackgroundColorForState(AppListState state) const;
 
+  // Hide zero state search result view when AppListBubble is enabled.
+  bool ShouldShowSearchResultView() const;
+
   PrivacyContainerView* GetPrivacyContainerViewForTest();
   SearchResultTileItemListView* GetSearchResultTileItemListViewForTest();
   SearchResultListView* GetSearchResultListViewForTest();
diff --git a/ash/bubble/bubble_utils.cc b/ash/bubble/bubble_utils.cc
index 99a64c5..3d33e7fb 100644
--- a/ash/bubble/bubble_utils.cc
+++ b/ash/bubble/bubble_utils.cc
@@ -96,31 +96,43 @@
 
 void ApplyStyle(views::Label* label, LabelStyle style) {
   label->SetAutoColorReadabilityEnabled(false);
-  label->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
-      AshColorProvider::ContentLayerType::kTextColorPrimary));
+  AshColorProvider::ContentLayerType text_color;
 
   switch (style) {
     case LabelStyle::kBadge:
+      text_color = AshColorProvider::ContentLayerType::kTextColorPrimary;
       label->SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 14,
                                        gfx::Font::Weight::MEDIUM));
       break;
     case LabelStyle::kBody:
+      text_color = AshColorProvider::ContentLayerType::kTextColorPrimary;
       label->SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 14,
                                        gfx::Font::Weight::NORMAL));
       break;
     case LabelStyle::kChipBody:
+      text_color = AshColorProvider::ContentLayerType::kTextColorPrimary;
       label->SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 10,
                                        gfx::Font::Weight::MEDIUM));
       break;
     case LabelStyle::kChipTitle:
+      text_color = AshColorProvider::ContentLayerType::kTextColorPrimary;
       label->SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 13,
                                        gfx::Font::Weight::NORMAL));
       break;
     case LabelStyle::kHeader:
+      text_color = AshColorProvider::ContentLayerType::kTextColorPrimary;
       label->SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 16,
                                        gfx::Font::Weight::MEDIUM));
       break;
+    case LabelStyle::kSubtitle:
+      text_color = AshColorProvider::ContentLayerType::kTextColorSecondary;
+      label->SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 12,
+                                       gfx::Font::Weight::NORMAL));
+      break;
   }
+
+  label->SetEnabledColor(
+      AshColorProvider::Get()->GetContentLayerColor(text_color));
 }
 
 std::unique_ptr<views::Label> CreateLabel(LabelStyle style,
diff --git a/ash/bubble/bubble_utils.h b/ash/bubble/bubble_utils.h
index 93ec6f6..e0ea343 100644
--- a/ash/bubble/bubble_utils.h
+++ b/ash/bubble/bubble_utils.h
@@ -34,6 +34,7 @@
   kChipBody,
   kChipTitle,
   kHeader,
+  kSubtitle,
 };
 
 // Applies the specified `style` to the given `label`.
diff --git a/ash/public/cpp/tab_cluster/correlation_clusterer.h b/ash/public/cpp/tab_cluster/correlation_clusterer.h
index e9010ee..7560264 100644
--- a/ash/public/cpp/tab_cluster/correlation_clusterer.h
+++ b/ash/public/cpp/tab_cluster/correlation_clusterer.h
@@ -19,7 +19,7 @@
 class EdgeSum;
 
 // Adapted from
-// https://github.com/google-research/google-research/blob/master/parallel_clustering/clustering/config.proto#L66
+// https://github.com/google-research/google-research/blob/HEAD/parallel_clustering/clustering/config.proto#L66
 // Consider a graph with vertex set V, edge set E, non-negative vertex weights
 // k_u, edge weights w_uv, and a "resolution" parameter which must be
 // non-negative. We define "rescaled" edge weights w'_uv for all u, v, in V as:
diff --git a/ash/quick_pair/ui/fast_pair/fast_pair_presenter.cc b/ash/quick_pair/ui/fast_pair/fast_pair_presenter.cc
index ecfb570..8e21a20 100644
--- a/ash/quick_pair/ui/fast_pair/fast_pair_presenter.cc
+++ b/ash/quick_pair/ui/fast_pair/fast_pair_presenter.cc
@@ -30,8 +30,9 @@
 
 void FastPairPresenter::ShowDiscovery(scoped_refptr<Device> device,
                                       DiscoveryCallback callback) {
+  const auto metadata_id = device->metadata_id;
   FastPairRepository::Get()->GetDeviceMetadata(
-      device->metadata_id,
+      metadata_id,
       base::BindOnce(&FastPairPresenter::ShowDiscoveryMetadataRetrieved,
                      weak_pointer_factory_.GetWeakPtr(), std::move(device),
                      std::move(callback)));
diff --git a/ash/webui/shimless_rma/backend/shimless_rma_service.cc b/ash/webui/shimless_rma/backend/shimless_rma_service.cc
index b4a54ac..10a14ee 100644
--- a/ash/webui/shimless_rma/backend/shimless_rma_service.cc
+++ b/ash/webui/shimless_rma/backend/shimless_rma_service.cc
@@ -311,25 +311,9 @@
                             rmad::RmadErrorCode::RMAD_ERROR_REQUEST_INVALID);
     return;
   }
-  // Create a new proto so that the full component list is retained while
-  // transitioning to the next state.
-  // This is not strictly necessary, but as the UX should never display
-  // 'mainboard' it reduces the chance of error.
-  rmad::RmadState state;
-  state.set_allocated_components_repair(new rmad::ComponentsRepairState());
-  rmad::ComponentsRepairState::ComponentRepairStatus* component =
-      state.mutable_components_repair()->add_component_repair();
-  component->set_component(
-      rmad::RmadComponent::RMAD_COMPONENT_MAINBOARD_REWORK);
-  component->set_repair_status(
-      rmad::ComponentsRepairState::ComponentRepairStatus::
-          RMAD_REPAIR_STATUS_REPLACED);
-
-  chromeos::RmadClient::Get()->TransitionNextState(
-      state,
-      base::BindOnce(
-          &ShimlessRmaService::OnGetStateResponse<ReworkMainboardCallback>,
-          weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
+  // TODO(gavindodd): set mainboard_rework flag when new rmad.proto is in
+  // third_party
+  TransitionNextStateGeneric(std::move(callback));
 }
 
 void ShimlessRmaService::ReimageRequired(ReimageRequiredCallback callback) {
diff --git a/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc b/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc
index 2ca17b9..fcea4f2 100644
--- a/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc
+++ b/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc
@@ -983,13 +983,8 @@
   fake_rmad_client_()->SetFakeStateReplies(std::move(fake_states));
   fake_rmad_client_()->check_state_callback =
       base::BindRepeating([](const rmad::RmadState& state) {
-        EXPECT_EQ(state.state_case(), rmad::RmadState::kComponentsRepair);
-        EXPECT_EQ(1, state.components_repair().component_repair_size());
-        EXPECT_EQ(state.components_repair().component_repair(0).component(),
-                  rmad::RmadComponent::RMAD_COMPONENT_MAINBOARD_REWORK);
-        EXPECT_EQ(state.components_repair().component_repair(0).repair_status(),
-                  rmad::ComponentsRepairState::ComponentRepairStatus::
-                      RMAD_REPAIR_STATUS_REPLACED);
+        // TODO(gavindodd): Check the rework_mainboard flag when it is in
+        // rmad.proto.
       });
   base::RunLoop run_loop;
   shimless_rma_provider_->GetCurrentState(base::BindLambdaForTesting(
diff --git a/ash/webui/shimless_rma/mojom/shimless_rma.mojom b/ash/webui/shimless_rma/mojom/shimless_rma.mojom
index 27e24cd..ce6ac2a 100644
--- a/ash/webui/shimless_rma/mojom/shimless_rma.mojom
+++ b/ash/webui/shimless_rma/mojom/shimless_rma.mojom
@@ -80,88 +80,86 @@
   // No error, and wait for a signal.
   kWait = 2,
 
-  // Need a reboot to continue.
-  kNeedReboot = 3,
   // Expect a reboot soon.
-  kExpectReboot = 4,
+  kExpectReboot = 3,
   // Expect a reboot soon.
-  kExpectShutdown = 5,
+  kExpectShutdown = 4,
 
   // The device is not in RMA mode.
-  kRmaNotRequired = 6,
+  kRmaNotRequired = 5,
 
   // No corresponding state handler for a state.
-  kStateHandlerMissing = 7,
+  kStateHandlerMissing = 6,
   // State handler initialization failed.
-  kStateHandlerInitializationFailed = 8,
+  kStateHandlerInitializationFailed = 7,
   // The request could not be processed (e.g. bad proto).
-  kRequestInvalid = 9,
+  kRequestInvalid = 8,
   // The request is missing mandatory arguments.
-  kRequestArgsMissing = 10,
+  kRequestArgsMissing = 9,
     // The request arguments are violating some rules of the state.
-  kRequestArgsViolation = 11,
+  kRequestArgsViolation = 10,
   // It is not possible to go back to the previous state at this point.
-  kTransitionFailed = 12,
+  kTransitionFailed = 11,
 
   // Failed to abort the RMA process.
-  kAbortFailed = 13,
+  kAbortFailed = 12,
 
   // An expected component was not found.
-  kMissingComponent = 14,
+  kMissingComponent = 13,
 
   // Cannot get the RSU challenge code.
-  kWriteProtectDisableRsuNoChallenge = 15,
+  kWriteProtectDisableRsuNoChallenge = 14,
   // The RSU code was incorrect.
-  kWriteProtectDisableRsuCodeInvalid = 16,
+  kWriteProtectDisableRsuCodeInvalid = 15,
   // The battery was not disconnected when WP disable was required.
-  kWriteProtectDisableBatteryNotDisconnected = 17,
+  kWriteProtectDisableBatteryNotDisconnected = 16,
   // WP was not disabled when required.
-  kWriteProtectSignalNotDetected = 18,
+  kWriteProtectSignalNotDetected = 17,
 
   // Firmware image could not be downloaded because a network connection was
   // unavailable.
-  kReimagingDownloadNoNetwork = 19,
+  kReimagingDownloadNoNetwork = 18,
   // Firmware image download did not complete because of a network error.
-  kReimagingDownloadNetworkError = 20,
+  kReimagingDownloadNetworkError = 19,
   // The user cancelled the firmware image download.
-  kReimagingDownloadCancelled = 21,
+  kReimagingDownloadCancelled = 20,
   // No valid USB device with a firmware image was found.
-  kReimagingUsbNotFound = 22,
+  kReimagingUsbNotFound = 21,
   // More than one USB device with a firmware image was found.
-  kReimagingUsbTooManyFound = 23,
+  kReimagingUsbTooManyFound = 22,
   // The firmware image found was corrupt.
-  kReimagingUsbInvalidImage = 24,
+  kReimagingUsbInvalidImage = 23,
   // The firmware image could not be written.
-  kReimagingImagingFailed = 25,
+  kReimagingImagingFailed = 24,
   // An unexpected failure prevented imaging from completing.
-  kReimagingUnknownFailure = 26,
+  kReimagingUnknownFailure = 25,
 
   // The device info is incorrect.
-  kDeviceInfoInvalid = 27,
+  kDeviceInfoInvalid = 26,
 
   // Calibration component is missing.
-  kCalibrationMissingComponent = 28,
+  kCalibrationMissingComponent = 27,
   // Calibration failed for a component.
-  kCalibrationFailed = 29,
+  kCalibrationFailed = 28,
 
   // Provisioning failed for the device.
-  kProvisioningFailed = 30,
+  kProvisioningFailed = 29,
 
   // Device could not be powerwashed.
-  kPowerwashFailed = 31,
+  kPowerwashFailed = 30,
 
   // Device finalization failed.
-  kFinalizationFailed = 32,
+  kFinalizationFailed = 31,
 
   // Logs failed to upload because the server could not be reached.
-  kLogUploadFtpServerCannotConnect = 33,
+  kLogUploadFtpServerCannotConnect = 32,
   // Logs failed to upload because the server refused the connection.
-  kLogUploadFtpServerConnectionRejected = 34,
+  kLogUploadFtpServerConnectionRejected = 33,
   // Logs failed to upload because the connection was interrupted.
-  kLogUploadFtpServerTransferFailed = 35,
+  kLogUploadFtpServerTransferFailed = 34,
 
   // It is not possible to cancel RMA finalization process at this point.
-  kCannotCancelRma = 36,
+  kCannotCancelRma = 35,
 };
 
 // TODO(gavindodd): This is copied from
@@ -188,35 +186,32 @@
   // Used as a safety fallback default, and therefore should always trigger safe
   // fallback behavior when present.
   kComponentUnknown = 0,
-  // NOTE: This is a special case for mainboards that will be restocked after
-  // repair. The board will stay in RMA until it is used in another device.
-  kMainboardRework = 1,
 
   // Standard components.
-  kAudioCodec = 2,
-  kBattery = 3,
-  kStorage = 4,
-  kVpdCached = 5,
-  kNetwork = 6,  // Obsolete in M91.
-  kCamera = 7,
-  kStylus = 8,
-  kTouchpad = 9,
-  kTouchsreen = 10,
-  kDram = 11,
-  kDisplayPanel = 12,
-  kCellular = 13,
-  kEthernet = 14,
-  kWireless = 15,
+  kAudioCodec = 1,
+  kBattery = 2,
+  kStorage = 3,
+  kVpdCached = 4,
+  kNetwork = 5,  // Obsolete in M91.
+  kCamera = 6,
+  kStylus = 7,
+  kTouchpad = 8,
+  kTouchsreen = 9,
+  kDram = 10,
+  kDisplayPanel = 11,
+  kCellular = 12,
+  kEthernet = 13,
+  kWireless = 14,
 
   // Additional rmad components.
-  kGyroscope = 16,
-  kAccelerometer = 17,
-  kScreen = 18,
+  kGyroscope = 15,
+  kAccelerometer = 16,
+  kScreen = 17,
 
   // Irrelevant components.
   // TODO(chenghan): Do we really need these?
-  kKeyboard = 19,
-  kPowerButton = 20,
+  kKeyboard = 18,
+  kPowerButton = 19,
 };
 
 // Component repair state
diff --git a/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits.cc b/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits.cc
index ce996f1..77593891 100644
--- a/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits.cc
+++ b/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits.cc
@@ -85,8 +85,6 @@
       return MojomRmadErrorCode::kOk;
     case ProtoRmadErrorCode::RMAD_ERROR_WAIT:
       return MojomRmadErrorCode::kWait;
-    case ProtoRmadErrorCode::RMAD_ERROR_NEED_REBOOT:
-      return MojomRmadErrorCode::kNeedReboot;
     case ProtoRmadErrorCode::RMAD_ERROR_EXPECT_REBOOT:
       return MojomRmadErrorCode::kExpectReboot;
     case ProtoRmadErrorCode::RMAD_ERROR_EXPECT_SHUTDOWN:
@@ -177,9 +175,6 @@
     case MojomRmadErrorCode::kWait:
       *out = ProtoRmadErrorCode::RMAD_ERROR_WAIT;
       return true;
-    case MojomRmadErrorCode::kNeedReboot:
-      *out = ProtoRmadErrorCode::RMAD_ERROR_NEED_REBOOT;
-      return true;
     case MojomRmadErrorCode::kExpectReboot:
       *out = ProtoRmadErrorCode::RMAD_ERROR_EXPECT_REBOOT;
       return true;
@@ -299,9 +294,6 @@
 MojomComponentType EnumTraits<MojomComponentType, ProtoComponentType>::ToMojom(
     ProtoComponentType component) {
   switch (component) {
-    case rmad::RmadComponent::RMAD_COMPONENT_MAINBOARD_REWORK:
-      return MojomComponentType::kMainboardRework;
-
     case rmad::RmadComponent::RMAD_COMPONENT_AUDIO_CODEC:
       return MojomComponentType::kAudioCodec;
     case rmad::RmadComponent::RMAD_COMPONENT_BATTERY:
@@ -358,10 +350,6 @@
     MojomComponentType component,
     ProtoComponentType* out) {
   switch (component) {
-    case MojomComponentType::kMainboardRework:
-      *out = ProtoComponentType::RMAD_COMPONENT_MAINBOARD_REWORK;
-      return true;
-
     case MojomComponentType::kAudioCodec:
       *out = rmad::RmadComponent::RMAD_COMPONENT_AUDIO_CODEC;
       return true;
diff --git a/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits_unittest.cc b/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits_unittest.cc
index 07d6de3..f0f22384 100644
--- a/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits_unittest.cc
+++ b/ash/webui/shimless_rma/mojom/shimless_rma_mojom_traits_unittest.cc
@@ -113,8 +113,6 @@
                                                 rmad::RmadErrorCode>(
       {{mojom::RmadErrorCode::kOk, rmad::RmadErrorCode::RMAD_ERROR_OK},
        {mojom::RmadErrorCode::kWait, rmad::RmadErrorCode::RMAD_ERROR_WAIT},
-       {mojom::RmadErrorCode::kNeedReboot,
-        rmad::RmadErrorCode::RMAD_ERROR_NEED_REBOOT},
        {mojom::RmadErrorCode::kExpectReboot,
         rmad::RmadErrorCode::RMAD_ERROR_EXPECT_REBOOT},
        {mojom::RmadErrorCode::kExpectShutdown,
@@ -192,10 +190,7 @@
 TEST_F(ShimlessRmaMojoToProtoTest, RepairComponentsMatch) {
   constexpr auto enums =
       base::MakeFixedFlatMap<mojom::ComponentType, rmad::RmadComponent>(
-          {{mojom::ComponentType::kMainboardRework,
-            rmad::RmadComponent::RMAD_COMPONENT_MAINBOARD_REWORK},
-
-           {mojom::ComponentType::kAudioCodec,
+          {{mojom::ComponentType::kAudioCodec,
             rmad::RmadComponent::RMAD_COMPONENT_AUDIO_CODEC},
            {mojom::ComponentType::kBattery,
             rmad::RmadComponent::RMAD_COMPONENT_BATTERY},
diff --git a/base/trace_event/common/trace_event_common.h b/base/trace_event/common/trace_event_common.h
index e7825446..e8a0de7 100644
--- a/base/trace_event/common/trace_event_common.h
+++ b/base/trace_event/common/trace_event_common.h
@@ -1106,9 +1106,6 @@
 #define TRACE_EVENT_FLAG_HAS_PROCESS_ID (static_cast<unsigned int>(1 << 10))
 #define TRACE_EVENT_FLAG_HAS_LOCAL_ID (static_cast<unsigned int>(1 << 11))
 #define TRACE_EVENT_FLAG_HAS_GLOBAL_ID (static_cast<unsigned int>(1 << 12))
-// TODO(eseckler): Remove once we have native support for typed proto events in
-// TRACE_EVENT macros.
-#define TRACE_EVENT_FLAG_TYPED_PROTO_ARGS (static_cast<unsigned int>(1 << 15))
 #define TRACE_EVENT_FLAG_JAVA_STRING_LITERALS \
   (static_cast<unsigned int>(1 << 16))
 
diff --git a/base/values.cc b/base/values.cc
index 6a9be72..a01cdac7 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -1367,23 +1367,6 @@
       key, const_cast<const ListValue**>(out_value));
 }
 
-bool DictionaryValue::Remove(StringPiece path,
-                             std::unique_ptr<Value>* out_value) {
-  DCHECK(IsStringUTF8AllowingNoncharacters(path));
-  StringPiece current_path(path);
-  DictionaryValue* current_dictionary = this;
-  size_t delimiter_position = current_path.rfind('.');
-  if (delimiter_position != StringPiece::npos) {
-    if (!GetDictionary(current_path.substr(0, delimiter_position),
-                       &current_dictionary))
-      return false;
-    current_path = current_path.substr(delimiter_position + 1);
-  }
-
-  return current_dictionary->RemoveWithoutPathExpansion(current_path,
-                                                        out_value);
-}
-
 bool DictionaryValue::RemoveWithoutPathExpansion(
     StringPiece key,
     std::unique_ptr<Value>* out_value) {
diff --git a/base/values.h b/base/values.h
index b21776a8..2bd7aa7 100644
--- a/base/values.h
+++ b/base/values.h
@@ -749,16 +749,6 @@
   // DEPRECATED, use `Value::FindListKey(key)` instead.
   bool GetListWithoutPathExpansion(StringPiece key, ListValue** out_value);
 
-  // Removes the Value with the specified path from this dictionary (or one
-  // of its child dictionaries, if the path is more than just a local key).
-  // If `out_value` is non-NULL, the removed Value will be passed out via
-  // `out_value`.  If `out_value` is NULL, the removed value will be deleted.
-  // This method returns true if `path` is a valid path; otherwise it will
-  // return false and the DictionaryValue object will be unchanged.
-  // DEPRECATED, use `Value::RemovePath(path)` or `Value::ExtractPath(path)`
-  // instead.
-  bool Remove(StringPiece path, std::unique_ptr<Value>* out_value);
-
   // Like Remove(), but without special treatment of '.'.  This allows e.g. URLs
   // to be used as paths.
   // DEPRECATED, use `Value::RemoveKey(key)` or `Value::ExtractKey(key)`
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index 805eab7..eded0a40 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -1559,36 +1559,6 @@
   }
 }
 
-TEST(ValuesTest, DictionaryRemoval) {
-  std::string key = "test";
-  std::unique_ptr<Value> removed_item;
-
-  {
-    DictionaryValue dict;
-    EXPECT_EQ(0U, dict.DictSize());
-    EXPECT_TRUE(dict.DictEmpty());
-    dict.Set(key, std::make_unique<Value>());
-    EXPECT_TRUE(dict.HasKey(key));
-    EXPECT_FALSE(dict.Remove("absent key", &removed_item));
-    EXPECT_EQ(1U, dict.DictSize());
-    EXPECT_FALSE(dict.DictEmpty());
-
-    EXPECT_TRUE(dict.Remove(key, &removed_item));
-    EXPECT_FALSE(dict.HasKey(key));
-    ASSERT_TRUE(removed_item);
-    EXPECT_EQ(0U, dict.DictSize());
-    EXPECT_TRUE(dict.DictEmpty());
-  }
-
-  {
-    DictionaryValue dict;
-    dict.Set(key, std::make_unique<Value>());
-    EXPECT_TRUE(dict.HasKey(key));
-    EXPECT_TRUE(dict.Remove(key, nullptr));
-    EXPECT_FALSE(dict.HasKey(key));
-  }
-}
-
 TEST(ValuesTest, DictionaryWithoutPathExpansion) {
   DictionaryValue dict;
   dict.Set("this.is.expanded", std::make_unique<Value>());
@@ -1790,7 +1760,7 @@
   // Check if Equals detects differences in only the keys.
   copy = dv.CreateDeepCopy();
   EXPECT_EQ(dv, *copy);
-  copy->Remove("a", nullptr);
+  copy->RemoveKey("a");
   copy->SetBoolKey("aa", false);
   EXPECT_NE(dv, *copy);
 }
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index e2cc597..818d5ba 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-6.20210801.3.1
+6.20210802.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index e2cc597..818d5ba 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-6.20210801.3.1
+6.20210802.1.1
diff --git a/build/lacros/test_runner.py b/build/lacros/test_runner.py
index 0a49e05..aad200b7 100755
--- a/build/lacros/test_runner.py
+++ b/build/lacros/test_runner.py
@@ -274,6 +274,19 @@
   """
   if args.ash_chrome_path_override:
     ash_chrome_file = args.ash_chrome_path_override
+    if not os.path.exists(ash_chrome_file):
+      logging.error("""Can not find ash chrome at %s. Did you download \
+the ash from CIPD? If you don't plan to build your own ash, you need \
+to download first. Example commandlines:
+ $ cipd auth-login
+ $ echo "chromium/testing/linux-ash-chromium/x86_64/ash.zip \
+version:92.0.4515.130" > /tmp/ensure-file.txt
+ $ cipd ensure -ensure-file /tmp/ensure-file.txt \
+-root lacros_version_skew_tests_v92.0.4515.130
+ Then you can use --ash-chrome-path-override=\
+lacros_version_skew_tests_v92.0.4515.130/test_ash_chrome
+""" % ash_chrome_file)
+      return 1
   elif args.ash_chrome_path:
     ash_chrome_file = args.ash_chrome_path
   else:
diff --git a/cc/scheduler/begin_frame_tracker.cc b/cc/scheduler/begin_frame_tracker.cc
index 2f5d645..ffeda4c 100644
--- a/cc/scheduler/begin_frame_tracker.cc
+++ b/cc/scheduler/begin_frame_tracker.cc
@@ -86,6 +86,7 @@
 }
 
 void BeginFrameTracker::AsProtozeroInto(
+    perfetto::EventContext& ctx,
     base::TimeTicks now,
     perfetto::protos::pbzero::BeginImplFrameArgs* state) const {
   state->set_updated_at_us(current_updated_at_.since_origin().InMicroseconds());
@@ -94,11 +95,11 @@
   if (HasFinished()) {
     state->set_state(
         perfetto::protos::pbzero::BeginImplFrameArgs::BEGIN_FRAME_FINISHED);
-    current_args_.AsProtozeroInto(state->set_current_args());
+    current_args_.AsProtozeroInto(ctx, state->set_current_args());
   } else {
     state->set_state(
         perfetto::protos::pbzero::BeginImplFrameArgs::BEGIN_FRAME_USING);
-    current_args_.AsProtozeroInto(state->set_last_args());
+    current_args_.AsProtozeroInto(ctx, state->set_last_args());
   }
 
   base::TimeTicks frame_time = current_args_.frame_time;
diff --git a/cc/scheduler/begin_frame_tracker.h b/cc/scheduler/begin_frame_tracker.h
index c718ca39..1165a0ca 100644
--- a/cc/scheduler/begin_frame_tracker.h
+++ b/cc/scheduler/begin_frame_tracker.h
@@ -12,6 +12,7 @@
 #include "components/viz/common/frame_sinks/begin_frame_args.h"
 
 namespace perfetto {
+class EventContext;
 namespace protos {
 namespace pbzero {
 class BeginImplFrameArgs;
@@ -71,6 +72,7 @@
   base::TimeDelta Interval() const;
 
   void AsProtozeroInto(
+      perfetto::EventContext& ctx,
       base::TimeTicks now,
       perfetto::protos::pbzero::BeginImplFrameArgs* dict) const;
 
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
index 1d5bc26..37165ae 100644
--- a/cc/scheduler/scheduler.cc
+++ b/cc/scheduler/scheduler.cc
@@ -844,7 +844,8 @@
     action = state_machine_.NextAction();
     TRACE_EVENT(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"),
                 "SchedulerStateMachine", [this](perfetto::EventContext ctx) {
-                  this->AsProtozeroInto(ctx.event()->set_cc_scheduler_state());
+                  this->AsProtozeroInto(ctx,
+                                        ctx.event()->set_cc_scheduler_state());
                 });
     base::AutoReset<SchedulerStateMachine::Action> mark_inside_action(
         &inside_action_, action);
@@ -931,6 +932,7 @@
 }
 
 void Scheduler::AsProtozeroInto(
+    perfetto::EventContext& ctx,
     perfetto::protos::pbzero::ChromeCompositorSchedulerState* state) const {
   base::TimeTicks now = Now();
 
@@ -957,14 +959,15 @@
   state->set_now_to_deadline_scheduled_at_delta_us(
       (deadline_scheduled_at_ - Now()).InMicroseconds());
 
-  begin_impl_frame_tracker_.AsProtozeroInto(now,
+  begin_impl_frame_tracker_.AsProtozeroInto(ctx, now,
                                             state->set_begin_impl_frame_args());
 
   BeginFrameObserverBase::AsProtozeroInto(
-      state->set_begin_frame_observer_state());
+      ctx, state->set_begin_frame_observer_state());
 
   if (begin_frame_source_) {
-    begin_frame_source_->AsProtozeroInto(state->set_begin_frame_source_state());
+    begin_frame_source_->AsProtozeroInto(ctx,
+                                         state->set_begin_frame_source_state());
   }
 }
 
diff --git a/cc/scheduler/scheduler.h b/cc/scheduler/scheduler.h
index 7ee9bef..082fcb5 100644
--- a/cc/scheduler/scheduler.h
+++ b/cc/scheduler/scheduler.h
@@ -250,6 +250,7 @@
   void SetMainThreadWantsBeginMainFrameNotExpected(bool new_state);
 
   void AsProtozeroInto(
+      perfetto::EventContext& ctx,
       perfetto::protos::pbzero::ChromeCompositorSchedulerState* state) const;
 
   void SetVideoNeedsBeginFrames(bool video_needs_begin_frames);
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index f97423a55..4295afff 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -555,6 +555,7 @@
   "javatests/src/org/chromium/chrome/browser/tab/state/LevelDBPersistedTabDataStorageTest.java",
   "javatests/src/org/chromium/chrome/browser/tab/state/LoadCallbackHelper.java",
   "javatests/src/org/chromium/chrome/browser/tab/state/PersistedTabDataTest.java",
+  "javatests/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLoggerTest.java",
   "javatests/src/org/chromium/chrome/browser/tab/state/ShoppingPersistedTabDataLegacyTest.java",
   "javatests/src/org/chromium/chrome/browser/tab/state/ShoppingPersistedTabDataLegacyWithPASTest.java",
   "javatests/src/org/chromium/chrome/browser/tab/state/ShoppingPersistedTabDataTest.java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/device_dialog/UsbChooserDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/device_dialog/UsbChooserDialog.java
index d3538abfb..ea035fc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/device_dialog/UsbChooserDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/device_dialog/UsbChooserDialog.java
@@ -99,7 +99,7 @@
         ItemChooserDialog.ItemChooserLabels labels =
                 new ItemChooserDialog.ItemChooserLabels(title, searching, noneFound, statusActive,
                         statusIdleNoneFound, statusIdleSomeFound, positiveButton);
-        mItemChooserDialog = new ItemChooserDialog(activity, this, labels);
+        mItemChooserDialog = new ItemChooserDialog(activity, activity.getWindow(), this, labels);
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninChecker.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninChecker.java
index 122f111d..7f4efa6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninChecker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninChecker.java
@@ -26,6 +26,7 @@
 import org.chromium.components.signin.ChildAccountStatus;
 import org.chromium.components.signin.ChildAccountStatus.Status;
 import org.chromium.components.signin.base.CoreAccountInfo;
+import org.chromium.components.signin.identitymanager.AccountInfoServiceProvider;
 import org.chromium.components.signin.identitymanager.AccountTrackerService;
 import org.chromium.components.signin.identitymanager.ConsentLevel;
 import org.chromium.components.signin.metrics.SigninAccessPoint;
@@ -92,7 +93,10 @@
      */
     private void validatePrimaryAccountExists(List<Account> accounts) {
         final CoreAccountInfo oldAccount =
-                mSigninManager.getIdentityManager().getPrimaryAccountInfo(ConsentLevel.SYNC);
+                mSigninManager.getIdentityManager().getPrimaryAccountInfo(ConsentLevel.SIGNIN);
+        boolean oldSyncConsent =
+                mSigninManager.getIdentityManager().getPrimaryAccountInfo(ConsentLevel.SYNC)
+                != null;
         if (oldAccount == null
                 || AccountUtils.findAccountByName(accounts, oldAccount.getEmail()) != null) {
             // Do nothing if user is not signed in or if the primary account is still on device
@@ -103,22 +107,9 @@
                 .getNewNameOfRenamedAccountAsync(oldAccount.getEmail(), accounts)
                 .then(newAccountName -> {
                     if (newAccountName != null) {
-                        // Sign in to the new account if the current primary account is renamed
-                        // to a new account
-                        mSigninManager.signOut(SignoutReason.USER_CLICKED_SIGNOUT_SETTINGS, () -> {
-                            mSigninManager.signinAndEnableSync(SigninAccessPoint.ACCOUNT_RENAMED,
-                                    AccountUtils.createAccountFromName(newAccountName),
-                                    new SignInCallback() {
-                                        @Override
-                                        public void onSignInComplete() {
-                                            SyncService.get().setFirstSetupComplete(
-                                                    SyncFirstSetupCompleteSource.BASIC_FLOW);
-                                        }
-
-                                        @Override
-                                        public void onSignInAborted() {}
-                                    });
-                        }, false);
+                        // Sign in to the new account if the current primary account is renamed to
+                        // a new account.
+                        resigninAfterAccountRename(newAccountName, oldSyncConsent);
                     } else {
                         // Sign out if the current primary account is not renamed
                         mSigninManager.signOut(SignoutReason.ACCOUNT_REMOVED_FROM_DEVICE);
@@ -126,6 +117,28 @@
                 });
     }
 
+    private void resigninAfterAccountRename(String newAccountName, boolean shouldEnableSync) {
+        mSigninManager.signOut(SignoutReason.USER_CLICKED_SIGNOUT_SETTINGS, () -> {
+            if (shouldEnableSync) {
+                mSigninManager.signinAndEnableSync(SigninAccessPoint.ACCOUNT_RENAMED,
+                        AccountUtils.createAccountFromName(newAccountName), new SignInCallback() {
+                            @Override
+                            public void onSignInComplete() {
+                                SyncService.get().setFirstSetupComplete(
+                                        SyncFirstSetupCompleteSource.BASIC_FLOW);
+                            }
+
+                            @Override
+                            public void onSignInAborted() {}
+                        });
+            } else {
+                AccountInfoServiceProvider.get()
+                        .getAccountInfoByEmail(newAccountName)
+                        .then(accountInfo -> { mSigninManager.signin(accountInfo, null); });
+            }
+        }, false);
+    }
+
     private void checkChildAccount(List<Account> accounts) {
         if (accounts.size() == 1) {
             // Child accounts can't share a device.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java
index 24b8498..30b43aa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java
@@ -153,7 +153,7 @@
     @Override
     public void onAccountsSeeded(List<CoreAccountInfo> accountInfos) {
         if (ChromeFeatureList.isEnabled(ChromeFeatureList.DEPRECATE_MENAGERIE_API)) {
-            mIdentityManager.forceRefreshOfExtendedAccountInfo(accountInfos);
+            mIdentityManager.refreshAccountInfoIfStale(accountInfos);
         }
     }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java
index 6a4949c4..c3d1a3ea 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java
@@ -19,7 +19,6 @@
 import android.content.SharedPreferences;
 import android.graphics.Point;
 import android.os.Build;
-import android.os.Build.VERSION_CODES;
 import android.os.SystemClock;
 import android.support.test.InstrumentationRegistry;
 import android.text.TextUtils;
@@ -3879,10 +3878,8 @@
     @Test
     @SmallTest
     @Feature({"ContextualSearch"})
-    @DisableIf.Build(sdk_is_less_than = VERSION_CODES.O,
-            message = "Flaky < P, https://crbug.com/1048827; Flaky on P, crbug.com/1181088")
-    public void
-    testLongpressExtendingSelectionExactResolve() throws Exception {
+    @DisabledTest(message = "https://crbug.com/1048827, https://crbug.com/1181088")
+    public void testLongpressExtendingSelectionExactResolve() throws Exception {
         // Enabling Translations implicitly enables Longpress too.
         FeatureList.setTestFeatures(ENABLE_TRANSLATIONS);
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/device_dialog/ItemChooserDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/device_dialog/ItemChooserDialogTest.java
index 4c24423f..a4d356c1 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/device_dialog/ItemChooserDialogTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/device_dialog/ItemChooserDialogTest.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.device_dialog;
 
+import android.app.Activity;
 import android.app.Dialog;
 import android.graphics.drawable.Drawable;
 import android.text.SpannableString;
@@ -115,15 +116,14 @@
         SpannableString statusIdleNoneFound = new SpannableString("statusIdleNoneFound");
         SpannableString statusIdleSomeFound = new SpannableString("statusIdleSomeFound");
         String positiveButton = new String("positiveButton");
-        final ItemChooserDialog.ItemChooserLabels labels =
+        ItemChooserDialog.ItemChooserLabels labels =
                 new ItemChooserDialog.ItemChooserLabels(title, searching, noneFound, statusActive,
                         statusIdleNoneFound, statusIdleSomeFound, positiveButton);
-        ItemChooserDialog dialog = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ItemChooserDialog dialog1 = new ItemChooserDialog(
-                    sActivityTestRule.getActivity(), ItemChooserDialogTest.this, labels);
-            return dialog1;
+        Activity activity = sActivityTestRule.getActivity();
+        return TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return new ItemChooserDialog(
+                    activity, activity.getWindow(), ItemChooserDialogTest.this, labels);
         });
-        return dialog;
     }
 
     private void selectItem(Dialog dialog, int position, String expectedItemId,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java
index 69b07bba..d1cc637 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java
@@ -39,6 +39,7 @@
 import org.chromium.components.signin.AccountRenameChecker;
 import org.chromium.components.signin.ChildAccountStatus;
 import org.chromium.components.signin.base.CoreAccountInfo;
+import org.chromium.components.signin.identitymanager.ConsentLevel;
 import org.chromium.components.signin.test.util.FakeAccountManagerFacade;
 
 /**
@@ -84,7 +85,6 @@
 
     @Test
     @MediumTest
-    @FlakyTest(message = "https://crbug.com/1205346")
     public void signinWhenPrimaryAccountIsRenamedToAKnownAccount() {
         mActivityTestRule.startMainActivityOnBlankPage();
         mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com");
@@ -106,7 +106,6 @@
 
     @Test
     @MediumTest
-    @FlakyTest(message = "https://crbug.com/1205346")
     public void signoutWhenPrimaryAccountIsRenamedToAnUnknownAccount() {
         mActivityTestRule.startMainActivityOnBlankPage();
         mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com");
@@ -147,6 +146,23 @@
 
     @Test
     @MediumTest
+    public void signoutWhenPrimaryAccountWithoutSyncConsentIsRemoved() {
+        mActivityTestRule.startMainActivityOnBlankPage();
+        mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com");
+        final CoreAccountInfo oldAccount = mAccountManagerTestRule.addTestAccountThenSignin();
+
+        mAccountManagerTestRule.removeAccountAndWaitForSeeding(oldAccount.getEmail());
+
+        CriteriaHelper.pollUiThread(() -> {
+            return IdentityServicesProvider.get()
+                           .getIdentityManager(Profile.getLastUsedRegularProfile())
+                           .getPrimaryAccountInfo(ConsentLevel.SIGNIN)
+                    == null;
+        });
+    }
+
+    @Test
+    @MediumTest
     public void signinWhenChildAccountIsTheOnlyAccount() {
         mActivityTestRule.startMainActivityOnBlankPage();
         UserActionTester actionTester = new UserActionTester();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLoggerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLoggerTest.java
new file mode 100644
index 0000000..f37585c
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLoggerTest.java
@@ -0,0 +1,151 @@
+// Copyright 2021 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.tab.state;
+
+import static org.mockito.Mockito.doReturn;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.base.test.BaseJUnit4ClassRunner;
+import org.chromium.base.test.UiThreadTest;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.test.ChromeBrowserTestRule;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test relating to {@link PriceDropsMetricsLogger}
+ */
+@RunWith(BaseJUnit4ClassRunner.class)
+@CommandLineFlags.
+Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+public class PriceDropMetricsLoggerTest {
+    @Rule
+    public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule();
+
+    @Mock
+    private ShoppingPersistedTabData mShoppingPersistedTabData;
+
+    private PriceDropMetricsLogger mPriceDropMetricsLogger;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        doReturn("offer-id").when(mShoppingPersistedTabData).getMainOfferId();
+        doReturn(true).when(mShoppingPersistedTabData).hasPriceMicros();
+        doReturn(true).when(mShoppingPersistedTabData).hasPreviousPriceMicros();
+        mPriceDropMetricsLogger = new PriceDropMetricsLogger(mShoppingPersistedTabData);
+    }
+
+    @UiThreadTest
+    @SmallTest
+    @Test
+    public void testTabUsageStatus() {
+        Assert.assertEquals(PriceDropMetricsLogger.TabUsageStatus.ABANDONED,
+                PriceDropMetricsLogger.getTabUsageStatus(TimeUnit.DAYS.toMillis(100)));
+        Assert.assertEquals(PriceDropMetricsLogger.TabUsageStatus.ABANDONED,
+                PriceDropMetricsLogger.getTabUsageStatus(TimeUnit.DAYS.toMillis(90)));
+        Assert.assertEquals(PriceDropMetricsLogger.TabUsageStatus.STALE,
+                PriceDropMetricsLogger.getTabUsageStatus(TimeUnit.DAYS.toMillis(45)));
+        Assert.assertEquals(PriceDropMetricsLogger.TabUsageStatus.STALE,
+                PriceDropMetricsLogger.getTabUsageStatus(TimeUnit.DAYS.toMillis(1)));
+        Assert.assertEquals(PriceDropMetricsLogger.TabUsageStatus.ACTIVE,
+                PriceDropMetricsLogger.getTabUsageStatus(TimeUnit.HOURS.toMillis(12)));
+    }
+
+    @UiThreadTest
+    @SmallTest
+    @Test
+    public void testMetricsStaleTabNavigation() {
+        mPriceDropMetricsLogger.logPriceDropMetrics(
+                "NavigationComplete", TimeUnit.DAYS.toMillis(45));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.StaleTabNavigationComplete.IsProductDetailPage"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.StaleTabNavigationComplete.ContainsPrice"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.StaleTabNavigationComplete.ContainsPriceDrop"));
+    }
+
+    @UiThreadTest
+    @SmallTest
+    @Test
+    public void testMetrics2StaleTabEnterTabSwitcher() {
+        mPriceDropMetricsLogger.logPriceDropMetrics("EnterTabSwitcher", TimeUnit.DAYS.toMillis(45));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.StaleTabEnterTabSwitcher.IsProductDetailPage"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.StaleTabEnterTabSwitcher.ContainsPrice"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.StaleTabEnterTabSwitcher.ContainsPriceDrop"));
+    }
+
+    @UiThreadTest
+    @SmallTest
+    @Test
+    public void testMetricsActiveTabNavigationComplete() {
+        mPriceDropMetricsLogger.logPriceDropMetrics(
+                "NavigationComplete", TimeUnit.HOURS.toMillis(12));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabNavigationComplete.IsProductDetailPage"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabNavigationComplete.ContainsPrice"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabNavigationComplete.ContainsPriceDrop"));
+    }
+
+    @UiThreadTest
+    @SmallTest
+    @Test
+    public void testMetricsActiveTabEnterTabSwitcher() {
+        mPriceDropMetricsLogger.logPriceDropMetrics(
+                "EnterTabSwitcher", TimeUnit.HOURS.toMillis(12));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabEnterTabSwitcher.IsProductDetailPage"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabEnterTabSwitcher.ContainsPrice"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabEnterTabSwitcher.ContainsPriceDrop"));
+    }
+
+    @UiThreadTest
+    @SmallTest
+    @Test
+    public void testMetricsPriceNoPriceDrop() {
+        mPriceDropMetricsLogger.logPriceDropMetrics(
+                "EnterTabSwitcher", TimeUnit.HOURS.toMillis(12));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabEnterTabSwitcher.IsProductDetailPage"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabEnterTabSwitcher.ContainsPrice"));
+        Assert.assertEquals(1,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        "Commerce.PriceDrops.ActiveTabEnterTabSwitcher.ContainsPriceDrop"));
+    }
+}
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index afa67bd..2b2c676 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-93.0.4577.21_rc-r1-merged.afdo.bz2
+chromeos-chrome-amd64-93.0.4577.22_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 9609f01..59902b4 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -5591,7 +5591,7 @@
       <message name="IDS_UPLOAD_IMAGE_FORMAT" desc="The permitted upload image format for the custom background. (On the New Tab Page)">
         *.jpeg, *.jpg, *.png
       </message>
-      <message name="IDS_NTP_CUSTOM_LINKS_NAME" desc="The title for custom link name input field on the edit shortcut dialog. (On the New Tab Page)">
+      <message name="IDS_NTP_CUSTOM_LINKS_NAME" desc="The title for custom link name input field on the edit shortcut dialog. (On the New Tab Page)" meaning="Name of an inanimate object">
         Name
       </message>
       <message name="IDS_NTP_CUSTOM_LINKS_URL" desc="The title for custom link URL input field on the edit shortcut dialog. (On the New Tab Page)">
@@ -8084,7 +8084,7 @@
       <message name="IDS_COOKIES_REMOVE_LABEL" desc="The label of the 'Remove' button in the Cookies Window">
         Remove
       </message>
-      <message name="IDS_COOKIES_COOKIE_NAME_LABEL" desc="The Cookie Name label">
+      <message name="IDS_COOKIES_COOKIE_NAME_LABEL" desc="The Cookie Name label" meaning="Name of an inanimate object">
         Name
       </message>
       <message name="IDS_COOKIES_COOKIE_CONTENT_LABEL" desc="The Cookie Content label">
@@ -8638,7 +8638,7 @@
       <message name="IDS_DIRECTORY_LISTING_PARENT" desc="When viewing a local directory, this is the text for a link to the parent directory.">
         [parent directory]
       </message>
-      <message name="IDS_DIRECTORY_LISTING_NAME" desc="When viewing a local directory, this is the text for the column above the filenames.">
+      <message name="IDS_DIRECTORY_LISTING_NAME" desc="When viewing a local directory, this is the text for the column above the filenames." meaning="Name of an inanimate object">
         Name
       </message>
       <message name="IDS_DIRECTORY_LISTING_SIZE" desc="When viewing a local directory, this is the text for the column above the file sizes.">
diff --git a/chrome/app/generated_resources_grd/IDS_COOKIES_COOKIE_NAME_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_COOKIES_COOKIE_NAME_LABEL.png.sha1
new file mode 100644
index 0000000..40d68cb9
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_COOKIES_COOKIE_NAME_LABEL.png.sha1
@@ -0,0 +1 @@
+c76bf36135280ea6b20a93452448853becf8a2b9
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DIRECTORY_LISTING_NAME.png.sha1 b/chrome/app/generated_resources_grd/IDS_DIRECTORY_LISTING_NAME.png.sha1
new file mode 100644
index 0000000..8eb31a63
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_DIRECTORY_LISTING_NAME.png.sha1
@@ -0,0 +1 @@
+23f3e07748aac139619e88f567748a58473efd80
\ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_COOKIES_COOKIE_NAME_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_COOKIES_COOKIE_NAME_LABEL.png.sha1
index 40d68cb9..4703fb29 100644
--- a/chrome/app/settings_strings_grdp/IDS_SETTINGS_COOKIES_COOKIE_NAME_LABEL.png.sha1
+++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_COOKIES_COOKIE_NAME_LABEL.png.sha1
@@ -1 +1 @@
-c76bf36135280ea6b20a93452448853becf8a2b9
\ No newline at end of file
+72c135a78f1f47fd8c2f9207421b8b63800aa580
\ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index ad2b45b..8369636 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -382,6 +382,7 @@
     "data_use_measurement/chrome_data_use_measurement.h",
     "defaults.cc",
     "defaults.h",
+    "device_reauth/chrome_biometric_authenticator.h",
     "display_capture/display_capture_permission_context.cc",
     "display_capture/display_capture_permission_context.h",
     "dom_distiller/dom_distiller_service_factory.cc",
@@ -1022,7 +1023,6 @@
     "password_manager/affiliation_service_factory.h",
     "password_manager/bulk_leak_check_service_factory.cc",
     "password_manager/bulk_leak_check_service_factory.h",
-    "password_manager/chrome_biometric_authenticator.h",
     "password_manager/chrome_password_manager_client.cc",
     "password_manager/chrome_password_manager_client.h",
     "password_manager/credentials_cleaner_runner_factory.cc",
@@ -2019,6 +2019,7 @@
     "//components/data_reduction_proxy/core/browser",
     "//components/data_use_measurement/core:ascriber",
     "//components/device_event_log",
+    "//components/device_reauth",
     "//components/digital_asset_links",
     "//components/dom_distiller/content/browser",
     "//components/dom_distiller/content/common/mojom",
@@ -2969,6 +2970,11 @@
       "data_reduction_proxy/data_reduction_promo_infobar_delegate_android.h",
       "data_reduction_proxy/data_reduction_proxy_settings_android.cc",
       "data_reduction_proxy/data_reduction_proxy_settings_android.h",
+      "device_reauth/android/biometric_authenticator_android.cc",
+      "device_reauth/android/biometric_authenticator_android.h",
+      "device_reauth/android/biometric_authenticator_bridge.h",
+      "device_reauth/android/biometric_authenticator_bridge_impl.cc",
+      "device_reauth/android/biometric_authenticator_bridge_impl.h",
       "dom_distiller/dom_distiller_service_factory_android.cc",
       "dom_distiller/dom_distiller_service_factory_android.h",
       "dom_distiller/tab_utils_android.cc",
@@ -3088,11 +3094,6 @@
       "password_manager/android/auto_signin_first_run_dialog_android.h",
       "password_manager/android/auto_signin_prompt_controller.cc",
       "password_manager/android/auto_signin_prompt_controller.h",
-      "password_manager/android/biometric_authenticator_android.cc",
-      "password_manager/android/biometric_authenticator_android.h",
-      "password_manager/android/biometric_authenticator_bridge.h",
-      "password_manager/android/biometric_authenticator_bridge_impl.cc",
-      "password_manager/android/biometric_authenticator_bridge_impl.h",
       "password_manager/android/credential_android.cc",
       "password_manager/android/credential_android.h",
       "password_manager/android/credential_leak_controller_android.cc",
@@ -3253,6 +3254,7 @@
       "//chrome/browser/content_creation/notes/internal/android:jni_headers",
       "//chrome/browser/continuous_search:jni_headers",
       "//chrome/browser/continuous_search/internal",
+      "//chrome/browser/device_reauth/android:jni_headers",
       "//chrome/browser/download/internal/android",
       "//chrome/browser/endpoint_fetcher:jni_headers",
       "//chrome/browser/feed/android:jni_headers",
@@ -3313,6 +3315,7 @@
       "//components/content_creation/notes/core/templates",
       "//components/content_settings/android",
       "//components/crash/android:crash_android",
+      "//components/device_reauth",
       "//components/embedder_support/android:browser_context",
       "//components/embedder_support/android:context_menu",
       "//components/embedder_support/android:simple_factory_key",
@@ -6448,40 +6451,6 @@
       "local_discovery/service_discovery_shared_client.cc",
       "local_discovery/service_discovery_shared_client.h",
     ]
-    if (enable_basic_printing) {
-      sources += [
-        "printing/cloud_print/cloud_print_printer_list.cc",
-        "printing/cloud_print/cloud_print_printer_list.h",
-        "printing/cloud_print/device_description.cc",
-        "printing/cloud_print/device_description.h",
-        "printing/cloud_print/gcd_api_flow.cc",
-        "printing/cloud_print/gcd_api_flow.h",
-        "printing/cloud_print/gcd_api_flow_impl.cc",
-        "printing/cloud_print/gcd_api_flow_impl.h",
-        "printing/cloud_print/gcd_constants.cc",
-        "printing/cloud_print/gcd_constants.h",
-        "printing/cloud_print/privet_confirm_api_flow.cc",
-        "printing/cloud_print/privet_confirm_api_flow.h",
-        "printing/cloud_print/privet_constants.cc",
-        "printing/cloud_print/privet_constants.h",
-        "printing/cloud_print/privet_device_lister.cc",
-        "printing/cloud_print/privet_device_lister.h",
-        "printing/cloud_print/privet_device_lister_impl.cc",
-        "printing/cloud_print/privet_device_lister_impl.h",
-        "printing/cloud_print/privet_http.cc",
-        "printing/cloud_print/privet_http.h",
-        "printing/cloud_print/privet_http_asynchronous_factory.cc",
-        "printing/cloud_print/privet_http_asynchronous_factory.h",
-        "printing/cloud_print/privet_http_asynchronous_factory_impl.cc",
-        "printing/cloud_print/privet_http_asynchronous_factory_impl.h",
-        "printing/cloud_print/privet_http_impl.cc",
-        "printing/cloud_print/privet_http_impl.h",
-        "printing/cloud_print/privet_local_printer_lister.cc",
-        "printing/cloud_print/privet_local_printer_lister.h",
-        "printing/cloud_print/privet_url_loader.cc",
-        "printing/cloud_print/privet_url_loader.h",
-      ]
-    }
 
     if (enable_mdns) {
       sources += [
@@ -6490,12 +6459,6 @@
         "local_discovery/service_discovery_client_mdns.cc",
         "local_discovery/service_discovery_client_mdns.h",
       ]
-      if (enable_basic_printing) {
-        sources += [
-          "printing/cloud_print/privet_traffic_detector.cc",
-          "printing/cloud_print/privet_traffic_detector.h",
-        ]
-      }
     }
   }
 
@@ -7286,8 +7249,6 @@
 
   if (enable_extensions) {
     sources += [
-      "extensions/api/messaging/native_messaging_test_util.cc",
-      "extensions/api/messaging/native_messaging_test_util.h",
       "extensions/chrome_extension_test_notification_observer.cc",
       "extensions/chrome_extension_test_notification_observer.h",
       "extensions/chrome_test_extension_loader.cc",
@@ -7324,6 +7285,13 @@
       "//google_apis:test_support",
       "//services/data_decoder/public/cpp:test_support",
     ]
+    if (!is_fuchsia) {
+      # Native Messaging is not available under Fuchsia.
+      sources += [
+        "extensions/api/messaging/native_messaging_test_util.cc",
+        "extensions/api/messaging/native_messaging_test_util.h",
+      ]
+    }
     if (is_chromeos_ash) {
       deps += [ "//chrome/browser/chromeos" ]
     }
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index e45df1e..dbf5814 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -3338,6 +3338,12 @@
     {"username-first-flow", flag_descriptions::kUsernameFirstFlowName,
      flag_descriptions::kUsernameFirstFlowDescription, kOsAll,
      FEATURE_VALUE_TYPE(password_manager::features::kUsernameFirstFlow)},
+    {"username-first-flow-fallback-crowdsourcing",
+     flag_descriptions::kUsernameFirstFlowFallbackCrowdsourcingName,
+     flag_descriptions::kUsernameFirstFlowFallbackCrowdsourcingDescription,
+     kOsAll,
+     FEATURE_VALUE_TYPE(
+         password_manager::features::kUsernameFirstFlowFallbackCrowdsourcing)},
     {"username-first-flow-filling",
      flag_descriptions::kUsernameFirstFlowFillingName,
      flag_descriptions::kUsernameFirstFlowFillingDescription, kOsAll,
diff --git a/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc b/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc
index 3f97a74..0769a71 100644
--- a/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc
+++ b/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc
@@ -460,6 +460,21 @@
 }
 
 ExtensionFunction::ResponseAction
+AccessibilityPrivateMagnifierCenterOnPointFunction::Run() {
+  std::unique_ptr<accessibility_private::MagnifierCenterOnPoint::Params>
+      params =
+          accessibility_private::MagnifierCenterOnPoint::Params::Create(*args_);
+  EXTENSION_FUNCTION_VALIDATE(params);
+  gfx::Point point_in_screen(params->point.x, params->point.y);
+
+  auto* magnification_manager = ash::MagnificationManager::Get();
+  DCHECK(magnification_manager);
+  magnification_manager->HandleMagnifierCenterOnPointIfEnabled(point_in_screen);
+
+  return RespondNow(NoArguments());
+}
+
+ExtensionFunction::ResponseAction
 AccessibilityPrivateToggleDictationFunction::Run() {
   ash::DictationToggleSource source = ash::DictationToggleSource::kChromevox;
   if (extension()->id() == extension_misc::kSwitchAccessExtensionId)
diff --git a/chrome/browser/accessibility/accessibility_extension_api_chromeos.h b/chrome/browser/accessibility/accessibility_extension_api_chromeos.h
index cc1426e..c6825a2 100644
--- a/chrome/browser/accessibility/accessibility_extension_api_chromeos.h
+++ b/chrome/browser/accessibility/accessibility_extension_api_chromeos.h
@@ -127,6 +127,16 @@
                              ACCESSIBILITY_PRIVATE_MOVEMAGNIFIERTORECT)
 };
 
+// API function that is called by the Accessibility Common extension to center
+// the magnifier viewport on a passed-in point.
+class AccessibilityPrivateMagnifierCenterOnPointFunction
+    : public ExtensionFunction {
+  ~AccessibilityPrivateMagnifierCenterOnPointFunction() override {}
+  ResponseAction Run() override;
+  DECLARE_EXTENSION_FUNCTION("accessibilityPrivate.magnifierCenterOnPoint",
+                             ACCESSIBILITY_PRIVATE_MAGNIFIERCENTERONPOINT)
+};
+
 // API function that is called when a user toggles Dictation from another
 // acessibility feature.
 class AccessibilityPrivateToggleDictationFunction : public ExtensionFunction {
diff --git a/chrome/browser/android/metrics/OWNERS b/chrome/browser/android/metrics/OWNERS
index b9e8da9..4793d7d 100644
--- a/chrome/browser/android/metrics/OWNERS
+++ b/chrome/browser/android/metrics/OWNERS
@@ -1 +1,3 @@
 asvitkine@chromium.org
+
+per-file android_session_durations_service.*=rhalavati@chromium.org
diff --git a/chrome/browser/android/search_permissions/search_permissions_service.cc b/chrome/browser/android/search_permissions/search_permissions_service.cc
index 636b770..cf0f4ee7c 100644
--- a/chrome/browser/android/search_permissions/search_permissions_service.cc
+++ b/chrome/browser/android/search_permissions/search_permissions_service.cc
@@ -197,10 +197,17 @@
 void SearchPermissionsService::ResetDSEPermission(ContentSettingsType type) {
   url::Origin dse_origin = delegate_->GetDSEOrigin();
   GURL dse_url = dse_origin.GetURL();
-  DCHECK(dse_url.is_empty() || IsPermissionControlledByDSE(type, dse_origin));
+  bool auto_grant_enabled = !base::FeatureList::IsEnabled(
+      permissions::features::kRevertDSEAutomaticPermissions);
 
-  if (!dse_url.is_empty())
-    SetContentSetting(dse_url, type, CONTENT_SETTING_ALLOW);
+  DCHECK(dse_url.is_empty() || IsPermissionControlledByDSE(type, dse_origin) ||
+         !auto_grant_enabled);
+
+  if (!dse_url.is_empty()) {
+    SetContentSetting(
+        dse_url, type,
+        auto_grant_enabled ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_DEFAULT);
+  }
 }
 
 void SearchPermissionsService::ResetDSEPermissions() {
diff --git a/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc b/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc
index 559e6741..366b6b88 100644
--- a/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc
+++ b/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc
@@ -653,6 +653,22 @@
       GetContentSetting(kGoogleAusURL, ContentSettingsType::NOTIFICATIONS));
   EXPECT_EQ(CONTENT_SETTING_BLOCK,
             GetContentSetting(kGoogleURL, ContentSettingsType::GEOLOCATION));
+
+  // After enabling `kRevertDSEAutomaticPermissions` ResetDSEPermissions reverts
+  // it to ASK.
+  base::test::ScopedFeatureList features(
+      permissions::features::kRevertDSEAutomaticPermissions);
+  SetContentSetting(kGoogleAusURL, ContentSettingsType::GEOLOCATION,
+                    CONTENT_SETTING_BLOCK);
+  SetContentSetting(kGoogleAusURL, ContentSettingsType::NOTIFICATIONS,
+                    CONTENT_SETTING_BLOCK);
+
+  GetService()->ResetDSEPermissions();
+  EXPECT_EQ(CONTENT_SETTING_ASK,
+            GetContentSetting(kGoogleAusURL, ContentSettingsType::GEOLOCATION));
+  EXPECT_EQ(
+      CONTENT_SETTING_ASK,
+      GetContentSetting(kGoogleAusURL, ContentSettingsType::NOTIFICATIONS));
 }
 
 // Setting the `RevertDSEAutomaticPermissions` feature disables DSE permissions.
diff --git a/chrome/browser/ash/accessibility/magnification_manager.cc b/chrome/browser/ash/accessibility/magnification_manager.cc
index f4f6332..35cc9ca 100644
--- a/chrome/browser/ash/accessibility/magnification_manager.cc
+++ b/chrome/browser/ash/accessibility/magnification_manager.cc
@@ -109,8 +109,20 @@
         rect);
     return;
   }
-  if (IsDockedMagnifierEnabled()) {
+  if (IsDockedMagnifierEnabled())
     Shell::Get()->docked_magnifier_controller()->MoveMagnifierToRect(rect);
+}
+
+void MagnificationManager::HandleMagnifierCenterOnPointIfEnabled(
+    const gfx::Point& point_in_screen) {
+  // Fullscreen magnifier and docked magnifier are mutually exclusive.
+  if (fullscreen_magnifier_enabled_) {
+    Shell::Get()->fullscreen_magnifier_controller()->CenterOnPoint(
+        point_in_screen);
+    return;
+  }
+  if (IsDockedMagnifierEnabled()) {
+    Shell::Get()->docked_magnifier_controller()->CenterOnPoint(point_in_screen);
   }
 }
 
diff --git a/chrome/browser/ash/accessibility/magnification_manager.h b/chrome/browser/ash/accessibility/magnification_manager.h
index 46fa944a..0700b54 100644
--- a/chrome/browser/ash/accessibility/magnification_manager.h
+++ b/chrome/browser/ash/accessibility/magnification_manager.h
@@ -67,6 +67,9 @@
   // Move magnifier to ensure rect is within viewport if a magnifier is enabled.
   void HandleMoveMagnifierToRectIfEnabled(const gfx::Rect& rect);
 
+  // Move magnified region to center on point if a magnifier is enabled.
+  void HandleMagnifierCenterOnPointIfEnabled(const gfx::Point& point_in_screen);
+
   // ProfileObserver:
   void OnProfileWillBeDestroyed(Profile* profile) override;
 
diff --git a/chrome/browser/ash/policy/core/device_cloud_policy_manager_ash.cc b/chrome/browser/ash/policy/core/device_cloud_policy_manager_ash.cc
index 9405b9a..45d3e0a 100644
--- a/chrome/browser/ash/policy/core/device_cloud_policy_manager_ash.cc
+++ b/chrome/browser/ash/policy/core/device_cloud_policy_manager_ash.cc
@@ -29,7 +29,7 @@
 #include "chrome/browser/ash/login/reporting/login_logout_reporter.h"
 #include "chrome/browser/ash/policy/core/device_cloud_policy_store_ash.h"
 #include "chrome/browser/ash/policy/core/policy_pref_names.h"
-#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.h"
+#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h"
 #include "chrome/browser/ash/policy/rsu/lookup_key_uploader.h"
 #include "chrome/browser/ash/policy/server_backed_state/server_backed_state_keys_broker.h"
 #include "chrome/browser/ash/policy/status_collector/device_status_collector.h"
@@ -224,7 +224,7 @@
 
   // Start remote commands services now that we have setup everything they need.
   core()->StartRemoteCommandsService(
-      std::make_unique<DeviceCommandsFactoryChromeOS>(this),
+      std::make_unique<DeviceCommandsFactoryAsh>(this),
       PolicyInvalidationScope::kDevice);
 
   // Enable device reporting and status monitoring for cloud managed devices. We
diff --git a/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc b/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc
index 15fc6e3..b7513e5 100644
--- a/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc
+++ b/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc
@@ -28,7 +28,7 @@
 #include "chrome/browser/ash/login/users/chrome_user_manager_impl.h"
 #include "chrome/browser/ash/policy/core/policy_oauth2_token_fetcher.h"
 #include "chrome/browser/ash/policy/login/wildcard_login_checker.h"
-#include "chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.h"
+#include "chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.h"
 #include "chrome/browser/ash/policy/reporting/arc_app_install_event_log_uploader.h"
 #include "chrome/browser/ash/policy/reporting/extension_install_event_log_uploader.h"
 #include "chrome/browser/browser_process.h"
@@ -808,7 +808,7 @@
     return;
 
   core()->StartRemoteCommandsService(
-      std::make_unique<UserCommandsFactoryChromeOS>(profile_),
+      std::make_unique<UserCommandsFactoryAsh>(profile_),
       PolicyInvalidationScope::kUser);
   invalidator_ = std::make_unique<RemoteCommandsInvalidatorImpl>(
       core(), base::DefaultClock::GetInstance(),
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_remote_powerwash_job_unittest.cc b/chrome/browser/ash/policy/remote_commands/device_command_remote_powerwash_job_unittest.cc
index b2cc956..3538b07 100644
--- a/chrome/browser/ash/policy/remote_commands/device_command_remote_powerwash_job_unittest.cc
+++ b/chrome/browser/ash/policy/remote_commands/device_command_remote_powerwash_job_unittest.cc
@@ -14,7 +14,7 @@
 #include "base/test/test_mock_time_task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/time/time.h"
-#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.h"
+#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h"
 #include "chromeos/dbus/session_manager/fake_session_manager_client.h"
 #include "chromeos/dbus/session_manager/session_manager_client.h"
 #include "components/policy/core/common/cloud/mock_cloud_policy_client.h"
@@ -33,7 +33,7 @@
 class TestingRemoteCommandsService : public RemoteCommandsService {
  public:
   explicit TestingRemoteCommandsService(MockCloudPolicyClient* client)
-      : RemoteCommandsService(std::make_unique<DeviceCommandsFactoryChromeOS>(
+      : RemoteCommandsService(std::make_unique<DeviceCommandsFactoryAsh>(
                                   /*policy_manager=*/nullptr),
                               client,
                               /*store=*/nullptr,
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h
index da5b576..ded52cc 100644
--- a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h
+++ b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h
@@ -152,7 +152,7 @@
   absl::optional<std::string> oauth_token_for_test_;
 
   // The Delegate is used to interact with chrome services and CRD host.
-  // Owned by DeviceCommandsFactoryChromeOS.
+  // Owned by DeviceCommandsFactoryAsh.
   Delegate* delegate_;
 
   bool terminate_session_attempted_ = false;
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_wipe_users_job_unittest.cc b/chrome/browser/ash/policy/remote_commands/device_command_wipe_users_job_unittest.cc
index e7d84ff..b801e9b9 100644
--- a/chrome/browser/ash/policy/remote_commands/device_command_wipe_users_job_unittest.cc
+++ b/chrome/browser/ash/policy/remote_commands/device_command_wipe_users_job_unittest.cc
@@ -16,7 +16,7 @@
 #include "base/task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/time/time.h"
-#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.h"
+#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h"
 #include "chrome/browser/ash/system/user_removal_manager.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/common/pref_names.h"
@@ -39,7 +39,7 @@
 class TestingRemoteCommandsService : public RemoteCommandsService {
  public:
   explicit TestingRemoteCommandsService(MockCloudPolicyClient* client)
-      : RemoteCommandsService(std::make_unique<DeviceCommandsFactoryChromeOS>(
+      : RemoteCommandsService(std::make_unique<DeviceCommandsFactoryAsh>(
                                   /*policy_manager=*/nullptr),
                               client,
                               /*store=*/nullptr,
diff --git a/chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.cc b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc
similarity index 89%
rename from chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.cc
rename to chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc
index 74c9af4..27424d1 100644
--- a/chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.cc
+++ b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.h"
+#include "chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h"
 
 #include "base/notreached.h"
 #include "chrome/browser/ash/policy/core/device_cloud_policy_manager_ash.h"
@@ -27,15 +27,15 @@
 
 namespace policy {
 
-DeviceCommandsFactoryChromeOS::DeviceCommandsFactoryChromeOS(
+DeviceCommandsFactoryAsh::DeviceCommandsFactoryAsh(
     DeviceCloudPolicyManagerAsh* policy_manager)
     : policy_manager_(policy_manager) {}
 
-DeviceCommandsFactoryChromeOS::~DeviceCommandsFactoryChromeOS() = default;
+DeviceCommandsFactoryAsh::~DeviceCommandsFactoryAsh() = default;
 
-std::unique_ptr<RemoteCommandJob>
-DeviceCommandsFactoryChromeOS::BuildJobForType(em::RemoteCommand_Type type,
-                                               RemoteCommandsService* service) {
+std::unique_ptr<RemoteCommandJob> DeviceCommandsFactoryAsh::BuildJobForType(
+    em::RemoteCommand_Type type,
+    RemoteCommandsService* service) {
   switch (type) {
     case em::RemoteCommand_Type_DEVICE_REBOOT:
       return std::make_unique<DeviceCommandRebootJob>(
@@ -64,14 +64,14 @@
     case em::RemoteCommand_Type_DEVICE_GET_DIAGNOSTIC_ROUTINE_UPDATE:
       return std::make_unique<DeviceCommandGetRoutineUpdateJob>();
     default:
-      // Other types of commands should be sent to UserCommandsFactoryChromeOS
+      // Other types of commands should be sent to UserCommandsFactoryAsh
       // instead of here.
       NOTREACHED();
       return nullptr;
   }
 }
 
-CRDHostDelegate* DeviceCommandsFactoryChromeOS::GetCRDHostDelegate() {
+CRDHostDelegate* DeviceCommandsFactoryAsh::GetCRDHostDelegate() {
   if (!crd_host_delegate_) {
     crd_host_delegate_ = std::make_unique<CRDHostDelegate>();
   }
diff --git a/chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.h b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h
similarity index 77%
rename from chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.h
rename to chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h
index a9279fb..bd2ec93 100644
--- a/chrome/browser/ash/policy/remote_commands/device_commands_factory_chromeos.h
+++ b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMANDS_FACTORY_CHROMEOS_H_
-#define CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMANDS_FACTORY_CHROMEOS_H_
+#ifndef CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMANDS_FACTORY_ASH_H_
+#define CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMANDS_FACTORY_ASH_H_
 
 #include <memory>
 
@@ -15,11 +15,11 @@
 class CRDHostDelegate;
 class DeviceCloudPolicyManagerAsh;
 
-class DeviceCommandsFactoryChromeOS : public RemoteCommandsFactory {
+class DeviceCommandsFactoryAsh : public RemoteCommandsFactory {
  public:
-  explicit DeviceCommandsFactoryChromeOS(
+  explicit DeviceCommandsFactoryAsh(
       DeviceCloudPolicyManagerAsh* policy_manager);
-  ~DeviceCommandsFactoryChromeOS() override;
+  ~DeviceCommandsFactoryAsh() override;
 
   // RemoteCommandsFactory:
   std::unique_ptr<RemoteCommandJob> BuildJobForType(
@@ -32,9 +32,9 @@
 
   CRDHostDelegate* GetCRDHostDelegate();
 
-  DISALLOW_COPY_AND_ASSIGN(DeviceCommandsFactoryChromeOS);
+  DISALLOW_COPY_AND_ASSIGN(DeviceCommandsFactoryAsh);
 };
 
 }  // namespace policy
 
-#endif  // CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMANDS_FACTORY_CHROMEOS_H_
+#endif  // CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMANDS_FACTORY_ASH_H_
diff --git a/chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.cc b/chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.cc
similarity index 77%
rename from chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.cc
rename to chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.cc
index c3abd788..8c3a1aa 100644
--- a/chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.cc
+++ b/chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.h"
+#include "chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.h"
 
 #include "base/notreached.h"
 #include "chrome/browser/ash/policy/remote_commands/user_command_arc_job.h"
@@ -13,19 +13,19 @@
 
 namespace policy {
 
-UserCommandsFactoryChromeOS::UserCommandsFactoryChromeOS(Profile* profile)
+UserCommandsFactoryAsh::UserCommandsFactoryAsh(Profile* profile)
     : profile_(profile) {}
 
-UserCommandsFactoryChromeOS::~UserCommandsFactoryChromeOS() = default;
+UserCommandsFactoryAsh::~UserCommandsFactoryAsh() = default;
 
-std::unique_ptr<RemoteCommandJob> UserCommandsFactoryChromeOS::BuildJobForType(
+std::unique_ptr<RemoteCommandJob> UserCommandsFactoryAsh::BuildJobForType(
     em::RemoteCommand_Type type,
     RemoteCommandsService* service) {
   switch (type) {
     case em::RemoteCommand_Type_USER_ARC_COMMAND:
       return std::make_unique<UserCommandArcJob>(profile_);
     default:
-      // Other types of commands should be sent to DeviceCommandsFactoryChromeOS
+      // Other types of commands should be sent to DeviceCommandsFactoryAsh
       // instead of here.
       NOTREACHED();
       return nullptr;
diff --git a/chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.h b/chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.h
similarity index 72%
rename from chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.h
rename to chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.h
index 67d16a0..3c79959 100644
--- a/chrome/browser/ash/policy/remote_commands/user_commands_factory_chromeos.h
+++ b/chrome/browser/ash/policy/remote_commands/user_commands_factory_ash.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_USER_COMMANDS_FACTORY_CHROMEOS_H_
-#define CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_USER_COMMANDS_FACTORY_CHROMEOS_H_
+#ifndef CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_USER_COMMANDS_FACTORY_ASH_H_
+#define CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_USER_COMMANDS_FACTORY_ASH_H_
 
 #include <memory>
 
@@ -14,10 +14,10 @@
 
 namespace policy {
 
-class UserCommandsFactoryChromeOS : public RemoteCommandsFactory {
+class UserCommandsFactoryAsh : public RemoteCommandsFactory {
  public:
-  explicit UserCommandsFactoryChromeOS(Profile* profile);
-  ~UserCommandsFactoryChromeOS() override;
+  explicit UserCommandsFactoryAsh(Profile* profile);
+  ~UserCommandsFactoryAsh() override;
 
   // RemoteCommandsFactory:
   std::unique_ptr<RemoteCommandJob> BuildJobForType(
@@ -27,9 +27,9 @@
  private:
   Profile* const profile_;
 
-  DISALLOW_COPY_AND_ASSIGN(UserCommandsFactoryChromeOS);
+  DISALLOW_COPY_AND_ASSIGN(UserCommandsFactoryAsh);
 };
 
 }  // namespace policy
 
-#endif  // CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_USER_COMMANDS_FACTORY_CHROMEOS_H_
+#endif  // CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_USER_COMMANDS_FACTORY_ASH_H_
diff --git a/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc b/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc
index 7518deb..919a4d7 100644
--- a/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc
+++ b/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc
@@ -241,7 +241,8 @@
     // elements in a form to determine if the form is ready for interaction.
     feature_list_.InitWithFeatures(
         /*enabled_features=*/{features::kAutofillAcrossIframes,
-                              features::kAutofillShowTypePredictions},
+                              features::kAutofillShowTypePredictions,
+                              features::kAutofillUseNewFormExtraction},
         /*disabled_features=*/{});
     command_line->AppendSwitchASCII(
         variations::switches::kVariationsOverrideCountry, "us");
@@ -259,9 +260,9 @@
     return recipe_replayer_.get();
   }
 
-  const CreditCard credit_card() { return card_; }
+  const CreditCard& credit_card() { return card_; }
 
-  const AutofillProfile profile() { return profile_; }
+  const AutofillProfile& profile() { return profile_; }
 
  private:
   bool ShowAutofillSuggestion(const std::string& target_element_xpath,
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
index 0945a06..be44fe6 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -99,10 +99,11 @@
 #include "components/os_crypt/os_crypt_mocker.h"
 #include "components/password_manager/core/browser/mock_field_info_store.h"
 #include "components/password_manager/core/browser/mock_password_store.h"
-#include "components/password_manager/core/browser/mock_password_sync_metadata_store.h"
+#include "components/password_manager/core/browser/mock_password_store_interface.h"
 #include "components/password_manager/core/browser/mock_smart_bubble_stats_store.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
 #include "components/password_manager/core/browser/password_store_consumer.h"
+#include "components/password_manager/core/browser/password_store_interface.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/permissions/features.h"
 #include "components/permissions/permission_decision_auto_blocker.h"
@@ -537,13 +538,14 @@
     PasswordStoreFactory::GetInstance()->SetTestingFactory(
         testing_profile,
         base::BindRepeating(
-            &password_manager::BuildPasswordStore<
+            &password_manager::BuildPasswordStoreInterface<
                 content::BrowserContext,
-                testing::NiceMock<password_manager::MockPasswordStore>>));
+                testing::NiceMock<
+                    password_manager::MockPasswordStoreInterface>>));
 
-    profile_store_ = static_cast<password_manager::MockPasswordStore*>(
-        PasswordStoreFactory::GetForProfile(testing_profile,
-                                            ServiceAccessType::EXPLICIT_ACCESS)
+    profile_store_ = static_cast<password_manager::MockPasswordStoreInterface*>(
+        PasswordStoreFactory::GetInterfaceForProfile(
+            testing_profile, ServiceAccessType::EXPLICIT_ACCESS)
             .get());
 
     if (base::FeatureList::IsEnabled(
@@ -551,14 +553,16 @@
       AccountPasswordStoreFactory::GetInstance()->SetTestingFactory(
           testing_profile,
           base::BindRepeating(
-              &password_manager::BuildPasswordStore<
+              &password_manager::BuildPasswordStoreInterface<
                   content::BrowserContext,
-                  testing::NiceMock<password_manager::MockPasswordStore>>));
+                  testing::NiceMock<
+                      password_manager::MockPasswordStoreInterface>>));
 
-      account_store_ = static_cast<password_manager::MockPasswordStore*>(
-          AccountPasswordStoreFactory::GetForProfile(
-              testing_profile, ServiceAccessType::EXPLICIT_ACCESS)
-              .get());
+      account_store_ =
+          static_cast<password_manager::MockPasswordStoreInterface*>(
+              AccountPasswordStoreFactory::GetInterfaceForProfile(
+                  testing_profile, ServiceAccessType::EXPLICIT_ACCESS)
+                  .get());
     }
 
     OSCryptMocker::SetUp();
@@ -569,18 +573,14 @@
 
   ~RemovePasswordsTester() { OSCryptMocker::TearDown(); }
 
-  password_manager::MockPasswordStore* profile_store() {
+  password_manager::MockPasswordStoreInterface* profile_store() {
     return profile_store_;
   }
 
-  password_manager::MockPasswordStore* account_store() {
+  password_manager::MockPasswordStoreInterface* account_store() {
     return account_store_;
   }
 
-  password_manager::MockPasswordSyncMetadataStore* account_metadata_store() {
-    return &account_metadata_store_;
-  }
-
   password_manager::MockSmartBubbleStatsStore* mock_smart_bubble_stats_store() {
     return &mock_smart_bubble_stats_store_;
   }
@@ -590,9 +590,8 @@
   }
 
  private:
-  password_manager::MockPasswordStore* profile_store_;
-  password_manager::MockPasswordStore* account_store_;
-  password_manager::MockPasswordSyncMetadataStore account_metadata_store_;
+  password_manager::MockPasswordStoreInterface* profile_store_;
+  password_manager::MockPasswordStoreInterface* account_store_;
   testing::NiceMock<password_manager::MockSmartBubbleStatsStore>
       mock_smart_bubble_stats_store_;
   testing::NiceMock<password_manager::MockFieldInfoStore>
@@ -1179,7 +1178,7 @@
   }
 
   void ExpectRemoveLoginsByURLAndTime(
-      password_manager::MockPasswordStore* store) {
+      password_manager::MockPasswordStoreInterface* store) {
     EXPECT_CALL(*store, RemoveLoginsByURLAndTime)
         .WillOnce(
             testing::WithArgs<3, 4>([](auto callback, auto sync_callback) {
@@ -1190,7 +1189,7 @@
   }
 
   void ExpectRemoveLoginsByURLAndTimeWithFilter(
-      password_manager::MockPasswordStore* store,
+      password_manager::MockPasswordStoreInterface* store,
       base::RepeatingCallback<bool(const GURL&)> filter) {
     EXPECT_CALL(*store, RemoveLoginsByURLAndTime(ProbablySameFilter(filter), _,
                                                  _, _, _))
@@ -2103,7 +2102,6 @@
         base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
                                                       std::move(completion));
       }));
-
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
       content::BrowsingDataRemover::DATA_TYPE_COOKIES |
@@ -3155,11 +3153,6 @@
 
   EXPECT_CALL(*tester.profile_store(), RemoveLoginsByURLAndTime).Times(0);
   ExpectRemoveLoginsByURLAndTime(tester.account_store());
-  // For the account store, the remover delegate also waits until all the
-  // deletions have propagated to the Sync server. Pretend that happens
-  // immediately.
-  EXPECT_CALL(*tester.account_metadata_store(), HasUnsyncedDeletions())
-      .WillRepeatedly(Return(false));
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
                                 constants::DATA_TYPE_ACCOUNT_PASSWORDS, false);
@@ -3171,11 +3164,6 @@
 
   EXPECT_CALL(*tester.profile_store(), RemoveLoginsByURLAndTime).Times(0);
   ExpectRemoveLoginsByURLAndTime(tester.account_store());
-  // For the account store, the remover delegate also waits until all the
-  // deletions have propagated to the Sync server. In this test, that never
-  // happens.
-  EXPECT_CALL(*tester.account_metadata_store(), HasUnsyncedDeletions())
-      .WillRepeatedly(Return(true));
 
   uint64_t failed_data_types = BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(), constants::DATA_TYPE_ACCOUNT_PASSWORDS,
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 4c6ed66c..3b8a4e9 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -2292,14 +2292,14 @@
     "../ash/policy/remote_commands/device_command_start_crd_session_job.h",
     "../ash/policy/remote_commands/device_command_wipe_users_job.cc",
     "../ash/policy/remote_commands/device_command_wipe_users_job.h",
-    "../ash/policy/remote_commands/device_commands_factory_chromeos.cc",
-    "../ash/policy/remote_commands/device_commands_factory_chromeos.h",
+    "../ash/policy/remote_commands/device_commands_factory_ash.cc",
+    "../ash/policy/remote_commands/device_commands_factory_ash.h",
     "../ash/policy/remote_commands/screenshot_delegate.cc",
     "../ash/policy/remote_commands/screenshot_delegate.h",
     "../ash/policy/remote_commands/user_command_arc_job.cc",
     "../ash/policy/remote_commands/user_command_arc_job.h",
-    "../ash/policy/remote_commands/user_commands_factory_chromeos.cc",
-    "../ash/policy/remote_commands/user_commands_factory_chromeos.h",
+    "../ash/policy/remote_commands/user_commands_factory_ash.cc",
+    "../ash/policy/remote_commands/user_commands_factory_ash.h",
     "../ash/policy/reporting/app_install_event_log_manager_wrapper.cc",
     "../ash/policy/reporting/app_install_event_log_manager_wrapper.h",
     "../ash/policy/reporting/arc_app_install_event_log.cc",
diff --git a/chrome/browser/continuous_search/internal/android/java/src/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducer.java b/chrome/browser/continuous_search/internal/android/java/src/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducer.java
index 927f251..25e3c8a 100644
--- a/chrome/browser/continuous_search/internal/android/java/src/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducer.java
+++ b/chrome/browser/continuous_search/internal/android/java/src/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducer.java
@@ -83,16 +83,15 @@
      * @param url The URL of SRP data was fetched for.
      * @param query The query associated with the SRP.
      * @param resultCategory The type of results: news, organic, etc.
-     * @param groupLabel One entry per group (g) naming the type of results.
-     * @param isAdGroup One entry per group (g) specifying the size of the group.
+     * @param groupType One entry per group (g) specifying the type of results.
      * @param groupSize One entry per group (g) specifying the number (n_g) of titles and urls in
      *     the respective group.
      * @param titles One title per item ordered by group. There will be (sum n_g forall g) entries.
      * @param urls One URL per item ordered by group. There will be (sum n_g forall g) entries.
      */
     @CalledByNative
-    void onResultsAvailable(GURL url, String query, int resultCategory, String[] groupLabel,
-            boolean[] isAdGroup, int[] groupSize, String[] titles, GURL[] urls) {
+    void onResultsAvailable(GURL url, String query, int resultCategory, int[] groupType,
+            int[] groupSize, String[] titles, GURL[] urls) {
         final int oldState = mState;
         mState = State.READY;
         if (oldState == State.CANCELLED) return;
@@ -100,8 +99,9 @@
         int groupOffset = 0;
         int urlCount = 0;
         List<PageGroup> groups = new ArrayList<PageGroup>();
-        for (int i = 0; i < groupLabel.length; i++) {
-            if (isAdGroup[i]) {
+        for (int i = 0; i < groupType.length; i++) {
+            boolean isAdGroup = groupType[i] == 1; // continuous_search::mojom::ResultType::kAds.
+            if (isAdGroup) {
                 // Account for the resulting group offset to ensure proper indexing.
                 groupOffset += groupSize[i];
                 continue;
@@ -118,7 +118,7 @@
             }
 
             groupOffset += groupSize[i];
-            groups.add(new PageGroup(groupLabel[i], isAdGroup[i], results));
+            groups.add(new PageGroup(/*label=*/"", isAdGroup, results));
         }
 
         if (urlCount < mMinimumUrlCount) {
diff --git a/chrome/browser/continuous_search/internal/android/junit/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducerTest.java b/chrome/browser/continuous_search/internal/android/junit/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducerTest.java
index 8168f826..cd6299f4 100644
--- a/chrome/browser/continuous_search/internal/android/junit/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducerTest.java
+++ b/chrome/browser/continuous_search/internal/android/junit/org/chromium/chrome/browser/continuous_search/SearchResultExtractorProducerTest.java
@@ -95,8 +95,7 @@
         GURL url5 = JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL);
 
         mSearchResultProducer.onResultsAvailable(mTestUrl, TEST_QUERY, TEST_RESULT_TYPE,
-                new String[] {"Foo", "Bar", "Baz"}, new boolean[] {true, false, false},
-                new int[] {1, 3, 1},
+                new int[] {1, 0, 0}, new int[] {1, 3, 1},
                 new String[] {"Foo.com 1", "Bar.com 1", "Bar.com 2", "Bar.com 3", "Baz.com 1"},
                 new GURL[] {url1, url2, url3, url4, url5});
 
@@ -111,10 +110,10 @@
         results2.add(new PageItem(url2, "Bar.com 1"));
         results2.add(new PageItem(url3, "Bar.com 2"));
         results2.add(new PageItem(url4, "Bar.com 3"));
-        groups.add(new PageGroup("Bar", false, results2));
+        groups.add(new PageGroup("", false, results2));
         List<PageItem> results3 = new ArrayList<PageItem>();
         results3.add(new PageItem(url5, "Baz.com 1"));
-        groups.add(new PageGroup("Baz", false, results3));
+        groups.add(new PageGroup("", false, results3));
 
         verify(mListenerMock, times(1))
                 .onResult(new ContinuousNavigationMetadata(
diff --git a/chrome/browser/continuous_search/internal/search_result_extractor_producer.cc b/chrome/browser/continuous_search/internal/search_result_extractor_producer.cc
index 0d931f7..49135ae 100644
--- a/chrome/browser/continuous_search/internal/search_result_extractor_producer.cc
+++ b/chrome/browser/continuous_search/internal/search_result_extractor_producer.cc
@@ -44,14 +44,13 @@
       const base::android::JavaRef<jobject>& url,
       const base::android::JavaRef<jstring>& query,
       jint result_type,
-      const base::android::JavaRef<jobjectArray>& group_label,
-      const base::android::JavaRef<jbooleanArray>& is_ad_group,
+      const base::android::JavaRef<jintArray>& group_type,
       const base::android::JavaRef<jintArray>& group_size,
       const base::android::JavaRef<jobjectArray>& titles,
       const base::android::JavaRef<jobjectArray>& urls) override {
     Java_SearchResultExtractorProducer_onResultsAvailable(
-        env, obj, url, query, result_type, group_label, is_ad_group, group_size,
-        titles, urls);
+        env, obj, url, query, result_type, group_type, group_size, titles,
+        urls);
   }
 };
 
@@ -82,6 +81,7 @@
       content::WebContents::FromJavaWebContents(j_web_contents);
   client_.RequestData(
       web_contents,
+      {mojom::ResultType::kSearchResults, mojom::ResultType::kAds},
       base::BindOnce(&SearchResultExtractorProducer::OnResultsCallback,
                      weak_ptr_factory_.GetWeakPtr(),
                      base::android::ConvertJavaStringToUTF8(env, j_query)));
@@ -108,14 +108,9 @@
   base::UmaHistogramCounts100(
       "Browser.ContinuousSearch.NumberOfSearchResultsExtracted", result_count);
 
-  std::vector<std::string> labels;
+  std::vector<int> group_types;
+  group_types.reserve(results->groups.size());
   std::vector<int> group_sizes;
-  // std::vector<bool> doesn't provide data() due to its unique packing
-  // implementation and there is no JNI method for returning a Java array of
-  // booleans from a base::span<bool> or std::vector<bool>. This is the next
-  // best option.
-  std::unique_ptr<bool[]> groups_are_ad_type(new bool[results->groups.size()]);
-  labels.reserve(results->groups.size());
   group_sizes.reserve(results->groups.size());
 
   std::vector<std::u16string> titles;
@@ -124,8 +119,7 @@
   urls.reserve(result_count);
   for (size_t i = 0; i < results->groups.size(); ++i) {
     const mojom::ResultGroupPtr& group = results->groups[i];
-    labels.push_back(group->label);
-    groups_are_ad_type[i] = group->is_ad_group;
+    group_types.push_back(static_cast<int>(group->type));
     group_sizes.push_back(group->results.size());
 
     for (const mojom::SearchResultPtr& result : group->results) {
@@ -144,9 +138,7 @@
       url::GURLAndroid::FromNativeGURL(env, results->document_url),
       base::android::ConvertUTF8ToJavaString(env, query),
       static_cast<jint>(GetSrpPageCategoryForUrl(results->document_url)),
-      base::android::ToJavaArrayOfStrings(env, labels),
-      base::android::ToJavaBooleanArray(env, groups_are_ad_type.get(),
-                                        results->groups.size()),
+      base::android::ToJavaIntArray(env, group_types),
       base::android::ToJavaIntArray(env, group_sizes),
       base::android::ToJavaArrayOfStrings(env, titles),
       url::GURLAndroid::ToJavaArrayOfGURLs(env, urls));
diff --git a/chrome/browser/continuous_search/internal/search_result_extractor_producer_interface.h b/chrome/browser/continuous_search/internal/search_result_extractor_producer_interface.h
index c9bee6c..193a30f 100644
--- a/chrome/browser/continuous_search/internal/search_result_extractor_producer_interface.h
+++ b/chrome/browser/continuous_search/internal/search_result_extractor_producer_interface.h
@@ -30,8 +30,7 @@
       const base::android::JavaRef<jobject>& url,
       const base::android::JavaRef<jstring>& query,
       jint result_type,
-      const base::android::JavaRef<jobjectArray>& group_label,
-      const base::android::JavaRef<jbooleanArray>& is_ad_group,
+      const base::android::JavaRef<jintArray>& group_type,
       const base::android::JavaRef<jintArray>& group_size,
       const base::android::JavaRef<jobjectArray>& titles,
       const base::android::JavaRef<jobjectArray>& urls) = 0;
diff --git a/chrome/browser/continuous_search/internal/search_result_extractor_producer_unittest.cc b/chrome/browser/continuous_search/internal/search_result_extractor_producer_unittest.cc
index f9f5d88..9681ac9 100644
--- a/chrome/browser/continuous_search/internal/search_result_extractor_producer_unittest.cc
+++ b/chrome/browser/continuous_search/internal/search_result_extractor_producer_unittest.cc
@@ -36,8 +36,7 @@
   expected_results->category_type = mojom::Category::kOrganic;
   {
     mojom::ResultGroupPtr result_group = mojom::ResultGroup::New();
-    result_group->label = "Group 1";
-    result_group->is_ad_group = false;
+    result_group->type = mojom::ResultType::kSearchResults;
     {
       mojom::SearchResultPtr result = mojom::SearchResult::New();
       result->link = GURL("https://www.bar.com/");
@@ -68,8 +67,7 @@
                const base::android::JavaRef<jobject>& url,
                const base::android::JavaRef<jstring>& query,
                jint result_type,
-               const base::android::JavaRef<jobjectArray>& group_label,
-               const base::android::JavaRef<jbooleanArray>& is_ad_group,
+               const base::android::JavaRef<jintArray>& group_type,
                const base::android::JavaRef<jintArray>& group_size,
                const base::android::JavaRef<jobjectArray>& titles,
                const base::android::JavaRef<jobjectArray>& urls),
@@ -180,8 +178,7 @@
                   ::testing::_, ::testing::_, EqualsJavaGURL(GURL(kUrl)),
                   EqualsJavaString(kQuery),
                   static_cast<jint>(PageCategory::kOrganicSrp),
-                  EqualsJavaStringArray(std::vector<std::string>({"Group 1"})),
-                  EqualsJavaBooleanArray(std::vector<bool>({false})),
+                  EqualsJavaIntArray(std::vector<int>({0})),
                   EqualsJavaIntArray(std::vector<int>({1})),
                   EqualsJavaStringArray(std::vector<std::string>({"Bar"})),
                   EqualsJavaGURLArray(
diff --git a/chrome/browser/device_reauth/DEPS b/chrome/browser/device_reauth/DEPS
new file mode 100644
index 0000000..4f13864
--- /dev/null
+++ b/chrome/browser/device_reauth/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+    "+components/device_reauth/biometric_authenticator.h",
+]
diff --git a/chrome/browser/device_reauth/OWNERS b/chrome/browser/device_reauth/OWNERS
new file mode 100644
index 0000000..275fae6
--- /dev/null
+++ b/chrome/browser/device_reauth/OWNERS
@@ -0,0 +1,2 @@
+ioanap@chromium.org
+roagarwal@chromium.org
diff --git a/chrome/browser/device_reauth/android/BUILD.gn b/chrome/browser/device_reauth/android/BUILD.gn
new file mode 100644
index 0000000..da5a2879
--- /dev/null
+++ b/chrome/browser/device_reauth/android/BUILD.gn
@@ -0,0 +1,34 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/android/config.gni")
+import("//build/config/android/rules.gni")
+
+android_library("java") {
+  deps = [
+    "//base:base_java",
+    "//chrome/browser/ui/android/strings:ui_strings_grd",
+    "//components/browser_ui/strings/android:browser_ui_strings_grd",
+    "//components/device_reauth:device_reauth_java_enums",
+    "//content/public/android:content_main_dex_java",
+    "//third_party/android_deps:com_android_support_support_annotations_java",
+    "//third_party/androidx:androidx_annotation_annotation_java",
+    "//ui/android:ui_no_recycler_view_java",
+  ]
+  srcjar_deps = [ ":device_reauth_java_enums_srcjar" ]
+
+  sources = [ "java/src/org/chromium/chrome/browser/device_reauth/BiometricAuthenticatorBridge.java" ]
+
+  annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
+
+  resources_package = "org.chromium.chrome.browser.device_reauth"
+}
+
+generate_jni("jni_headers") {
+  sources = [ "java/src/org/chromium/chrome/browser/device_reauth/BiometricAuthenticatorBridge.java" ]
+}
+
+java_cpp_enum("device_reauth_java_enums_srcjar") {
+  sources = [ "biometric_authenticator_bridge.h" ]
+}
diff --git a/chrome/browser/device_reauth/android/DEPS b/chrome/browser/device_reauth/android/DEPS
new file mode 100644
index 0000000..6fbf0e2
--- /dev/null
+++ b/chrome/browser/device_reauth/android/DEPS
@@ -0,0 +1,4 @@
+include_rules = [
+    "+components/device_reauth/biometric_authenticator.h",
+    "+content/public/android/java/src/org/chromium/content_public",
+]
diff --git a/chrome/browser/password_manager/android/biometric_authenticator_android.cc b/chrome/browser/device_reauth/android/biometric_authenticator_android.cc
similarity index 81%
rename from chrome/browser/password_manager/android/biometric_authenticator_android.cc
rename to chrome/browser/device_reauth/android/biometric_authenticator_android.cc
index 583426f..e170b75 100644
--- a/chrome/browser/password_manager/android/biometric_authenticator_android.cc
+++ b/chrome/browser/device_reauth/android/biometric_authenticator_android.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/password_manager/android/biometric_authenticator_android.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_android.h"
 
 #include <memory>
 #include <utility>
@@ -15,9 +15,9 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/time/time.h"
-#include "chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.h"
 #include "components/autofill/core/common/autofill_features.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/core/browser/origin_credential_store.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "content/public/browser/browser_task_traits.h"
@@ -27,9 +27,9 @@
 #include "ui/android/view_android.h"
 
 using content::WebContents;
-using password_manager::BiometricAuthFinalResult;
-using password_manager::BiometricAuthUIResult;
-using password_manager::BiometricsAvailability;
+using device_reauth::BiometricAuthFinalResult;
+using device_reauth::BiometricAuthUIResult;
+using device_reauth::BiometricsAvailability;
 using password_manager::UiCredential;
 
 namespace {
@@ -42,14 +42,14 @@
          result == BiometricAuthUIResult::kSuccessWithDeviceLock;
 }
 
-password_manager::BiometricAuthFinalResult MapUIResultToFinal(
+device_reauth::BiometricAuthFinalResult MapUIResultToFinal(
     BiometricAuthUIResult result) {
   switch (result) {
     case BiometricAuthUIResult::kSuccessWithUnknownMethod:
       return BiometricAuthFinalResult::kSuccessWithUnknownMethod;
     case BiometricAuthUIResult::kSuccessWithBiometrics:
       return BiometricAuthFinalResult::kSuccessWithBiometrics;
-    case password_manager::BiometricAuthUIResult::kSuccessWithDeviceLock:
+    case BiometricAuthUIResult::kSuccessWithDeviceLock:
       return BiometricAuthFinalResult::kSuccessWithDeviceLock;
     case BiometricAuthUIResult::kCanceledByUser:
       return BiometricAuthFinalResult::kCanceledByUser;
@@ -66,7 +66,7 @@
 }  // namespace
 
 // static
-scoped_refptr<password_manager::BiometricAuthenticator>
+scoped_refptr<device_reauth::BiometricAuthenticator>
 ChromeBiometricAuthenticator::Create(WebContents* web_contents) {
   auto* window_android = web_contents->GetNativeView()->GetWindowAndroid();
   if (!window_android) {
@@ -93,7 +93,7 @@
 }
 
 void BiometricAuthenticatorAndroid::Authenticate(
-    password_manager::BiometricAuthRequester requester,
+    device_reauth::BiometricAuthRequester requester,
     AuthenticateCallback callback) {
   DCHECK(!callback_);
   DCHECK(!requester_.has_value());
@@ -105,7 +105,7 @@
   if (last_good_auth_timestamp_.has_value() &&
       base::TimeTicks::Now() - last_good_auth_timestamp_.value() <
           base::TimeDelta::FromSeconds(kAuthValidSeconds)) {
-    LogAuthResult(password_manager::BiometricAuthFinalResult::kAuthStillValid);
+    LogAuthResult(BiometricAuthFinalResult::kAuthStillValid);
     std::move(callback_).Run(/*success=*/true);
     requester_ = absl::nullopt;
     return;
@@ -117,7 +117,7 @@
 }
 
 void BiometricAuthenticatorAndroid::Cancel(
-    password_manager::BiometricAuthRequester requester) {
+    device_reauth::BiometricAuthRequester requester) {
   // The object cancelling the auth is not the same as the one to which
   // the ongoing auth corresponds.
   if (!requester_.has_value() || requester != requester_.value())
@@ -132,11 +132,9 @@
   bool success = IsSuccessfulResult(ui_result);
   if (callback_.is_null()) {
     if (success) {
-      LogAuthResult(
-          password_manager::BiometricAuthFinalResult::kSuccessButCanceled);
+      LogAuthResult(BiometricAuthFinalResult::kSuccessButCanceled);
     } else {
-      LogAuthResult(
-          password_manager::BiometricAuthFinalResult::kFailedAndCanceled);
+      LogAuthResult(BiometricAuthFinalResult::kFailedAndCanceled);
     }
     return;
   }
diff --git a/chrome/browser/password_manager/android/biometric_authenticator_android.h b/chrome/browser/device_reauth/android/biometric_authenticator_android.h
similarity index 64%
rename from chrome/browser/password_manager/android/biometric_authenticator_android.h
rename to chrome/browser/device_reauth/android/biometric_authenticator_android.h
index 56c3c39..f1561d8 100644
--- a/chrome/browser/password_manager/android/biometric_authenticator_android.h
+++ b/chrome/browser/device_reauth/android/biometric_authenticator_android.h
@@ -2,16 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_ANDROID_H_
-#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_ANDROID_H_
+#ifndef CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_ANDROID_H_
+#define CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_ANDROID_H_
 
 #include "base/callback.h"
 #include "base/time/time.h"
-#include "chrome/browser/password_manager/android/biometric_authenticator_bridge.h"
-#include "chrome/browser/password_manager/chrome_biometric_authenticator.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_bridge.h"
+#include "chrome/browser/device_reauth/chrome_biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
+#include "components/password_manager/core/browser/origin_credential_store.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
+#include "ui/android/window_android.h"
+
 // Android implementation of the BiometricAuthenticator interface.
 class BiometricAuthenticatorAndroid : public ChromeBiometricAuthenticator {
  public:
@@ -19,25 +22,25 @@
       std::unique_ptr<BiometricAuthenticatorBridge> bridge);
 
   // Checks whether biometrics are available.
-  password_manager::BiometricsAvailability CanAuthenticate() override;
+  device_reauth::BiometricsAvailability CanAuthenticate() override;
 
   // Trigges an authentication flow based on biometrics, with the
   // screen lock as fallback. Note: this only supports one authentication
   // request at a time.
-  void Authenticate(password_manager::BiometricAuthRequester requester,
+  void Authenticate(device_reauth::BiometricAuthRequester requester,
                     AuthenticateCallback callback) override;
 
   // Should be called by the object using the authenticator if the purpose
   // for which the auth was requested becomes obsolete or the object is
   // destroyed.
-  void Cancel(password_manager::BiometricAuthRequester requester) override;
+  void Cancel(device_reauth::BiometricAuthRequester requester) override;
 
  private:
   ~BiometricAuthenticatorAndroid() override;
 
   // Called when the authentication compeletes with the result
   void OnAuthenticationCompleted(
-      password_manager::BiometricAuthUIResult ui_result);
+      device_reauth::BiometricAuthUIResult ui_result);
 
   // Time of last successful re-auth. nullopt if there hasn't been an auth yet.
   absl::optional<base::TimeTicks> last_good_auth_timestamp_;
@@ -47,10 +50,10 @@
 
   // Enum value representing the filling surface that has requested the current
   // authentication.
-  absl::optional<password_manager::BiometricAuthRequester> requester_;
+  absl::optional<device_reauth::BiometricAuthRequester> requester_;
 
   // Bridge used to call into the Java side.
   std::unique_ptr<BiometricAuthenticatorBridge> bridge_;
 };
 
-#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_ANDROID_H_
+#endif  // CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_ANDROID_H_
diff --git a/chrome/browser/password_manager/android/biometric_authenticator_android_unittest.cc b/chrome/browser/device_reauth/android/biometric_authenticator_android_unittest.cc
similarity index 92%
rename from chrome/browser/password_manager/android/biometric_authenticator_android_unittest.cc
rename to chrome/browser/device_reauth/android/biometric_authenticator_android_unittest.cc
index 7605af8..5078d8c 100644
--- a/chrome/browser/password_manager/android/biometric_authenticator_android_unittest.cc
+++ b/chrome/browser/device_reauth/android/biometric_authenticator_android_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/password_manager/android/biometric_authenticator_android.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_android.h"
 
 #include <memory>
 
@@ -13,8 +13,8 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/mock_callback.h"
 #include "base/test/task_environment.h"
-#include "chrome/browser/password_manager/android/biometric_authenticator_bridge.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_bridge.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -23,11 +23,11 @@
 
 using base::Bucket;
 using base::test::RunOnceCallback;
-using password_manager::BiometricAuthenticator;
-using password_manager::BiometricAuthFinalResult;
-using password_manager::BiometricAuthRequester;
-using password_manager::BiometricAuthUIResult;
-using password_manager::BiometricsAvailability;
+using device_reauth::BiometricAuthenticator;
+using device_reauth::BiometricAuthFinalResult;
+using device_reauth::BiometricAuthRequester;
+using device_reauth::BiometricAuthUIResult;
+using device_reauth::BiometricsAvailability;
 using testing::_;
 using testing::ElementsAre;
 using testing::Return;
@@ -37,7 +37,7 @@
   MOCK_METHOD(BiometricsAvailability, CanAuthenticate, (), (override));
   MOCK_METHOD(void,
               Authenticate,
-              (base::OnceCallback<void(password_manager::BiometricAuthUIResult)>
+              (base::OnceCallback<void(device_reauth::BiometricAuthUIResult)>
                    response_callback),
               (override));
   MOCK_METHOD(void, Cancel, (), (override));
diff --git a/chrome/browser/password_manager/android/biometric_authenticator_bridge.h b/chrome/browser/device_reauth/android/biometric_authenticator_bridge.h
similarity index 62%
rename from chrome/browser/password_manager/android/biometric_authenticator_bridge.h
rename to chrome/browser/device_reauth/android/biometric_authenticator_bridge.h
index e5ea8a0..bfb0cee 100644
--- a/chrome/browser/password_manager/android/biometric_authenticator_bridge.h
+++ b/chrome/browser/device_reauth/android/biometric_authenticator_bridge.h
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_H_
-#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_H_
+#ifndef CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_H_
+#define CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_H_
 
 #include "base/callback_forward.h"
-#include "chrome/browser/password_manager/android/biometric_authenticator_android.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_android.h"
+#include "components/device_reauth/biometric_authenticator.h"
 
-namespace password_manager {
+namespace device_reauth {
 
 // The biometric authentication result as returned by the biometric prompt.
 //
-// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.password_manager
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.device_reauth
 enum class BiometricAuthUIResult {
   kSuccessWithUnknownMethod = 0,
   kSuccessWithBiometrics = 1,
@@ -22,7 +22,7 @@
   kFailed = 4,
 };
 
-}  // namespace password_manager
+}  // namespace device_reauth
 
 // Interface for the biometric authenticator bridge connecting the C++ side
 // of the implementation to the Java one.
@@ -31,13 +31,13 @@
   virtual ~BiometricAuthenticatorBridge() = default;
 
   // Checks whether biometrics are available.
-  virtual password_manager::BiometricsAvailability CanAuthenticate() = 0;
+  virtual device_reauth::BiometricsAvailability CanAuthenticate() = 0;
 
   // Trigges an authentication flow based on biometrics, with the
   // screen lock as fallback. Note: this only supports one authentication
   // request at a time.
   virtual void Authenticate(
-      base::OnceCallback<void(password_manager::BiometricAuthUIResult)>
+      base::OnceCallback<void(device_reauth::BiometricAuthUIResult)>
           response_callback) = 0;
 
   // Called when the authentication flow becomes obsolete (e.g. the original
@@ -45,4 +45,4 @@
   virtual void Cancel() = 0;
 };
 
-#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_H_
+#endif  // CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_H_
diff --git a/chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.cc b/chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.cc
similarity index 77%
rename from chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.cc
rename to chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.cc
index 69133ae..261b460 100644
--- a/chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.cc
+++ b/chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.cc
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.h"
 
 #include "base/android/jni_android.h"
 #include "base/callback.h"
-#include "chrome/browser/password_manager/android/biometric_authenticator_android.h"
-#include "chrome/browser/password_manager/android/jni_headers/BiometricAuthenticatorBridge_jni.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_android.h"
+#include "chrome/browser/device_reauth/android/jni_headers/BiometricAuthenticatorBridge_jni.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "ui/android/window_android.h"
 
 using base::android::AttachCurrentThread;
-using password_manager::BiometricAuthUIResult;
-using password_manager::BiometricsAvailability;
+using device_reauth::BiometricAuthUIResult;
+using device_reauth::BiometricsAvailability;
 
 BiometricAuthenticatorBridgeImpl::BiometricAuthenticatorBridgeImpl(
     ui::WindowAndroid* window_android) {
@@ -34,7 +34,7 @@
 }
 
 void BiometricAuthenticatorBridgeImpl::Authenticate(
-    base::OnceCallback<void(password_manager::BiometricAuthUIResult)>
+    base::OnceCallback<void(device_reauth::BiometricAuthUIResult)>
         response_callback) {
   response_callback_ = std::move(response_callback);
   Java_BiometricAuthenticatorBridge_authenticate(AttachCurrentThread(),
diff --git a/chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.h b/chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.h
similarity index 72%
rename from chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.h
rename to chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.h
index c1e0eac..63f0969 100644
--- a/chrome/browser/password_manager/android/biometric_authenticator_bridge_impl.h
+++ b/chrome/browser/device_reauth/android/biometric_authenticator_bridge_impl.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_IMPL_H_
-#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_IMPL_H_
+#ifndef CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_IMPL_H_
+#define CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_IMPL_H_
 
 #include "base/callback_forward.h"
-#include "chrome/browser/password_manager/android/biometric_authenticator_android.h"
+#include "chrome/browser/device_reauth/android/biometric_authenticator_android.h"
 #include "ui/android/window_android.h"
 
 class BiometricAuthenticatorBridgeImpl : public BiometricAuthenticatorBridge {
@@ -23,11 +23,11 @@
   BiometricAuthenticatorBridgeImpl&& operator=(
       const BiometricAuthenticatorBridgeImpl&&) = delete;
 
-  password_manager::BiometricsAvailability CanAuthenticate() override;
+  device_reauth::BiometricsAvailability CanAuthenticate() override;
 
   // Starts the authentication.
   void Authenticate(
-      base::OnceCallback<void(password_manager::BiometricAuthUIResult)>
+      base::OnceCallback<void(device_reauth::BiometricAuthUIResult)>
           response_callback) override;
 
   // Cancels the ongoing authentication.
@@ -38,7 +38,7 @@
 
  private:
   // Called when the authentication completes.
-  base::OnceCallback<void(password_manager::BiometricAuthUIResult)>
+  base::OnceCallback<void(device_reauth::BiometricAuthUIResult)>
       response_callback_;
 
   // This object is an instance of BiometricAuthenticatorBridge, i.e. the Java
@@ -46,4 +46,4 @@
   base::android::ScopedJavaGlobalRef<jobject> java_object_;
 };
 
-#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_IMPL_H_
+#endif  // CHROME_BROWSER_DEVICE_REAUTH_ANDROID_BIOMETRIC_AUTHENTICATOR_BRIDGE_IMPL_H_
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/BiometricAuthenticatorBridge.java b/chrome/browser/device_reauth/android/java/src/org/chromium/chrome/browser/device_reauth/BiometricAuthenticatorBridge.java
similarity index 98%
rename from chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/BiometricAuthenticatorBridge.java
rename to chrome/browser/device_reauth/android/java/src/org/chromium/chrome/browser/device_reauth/BiometricAuthenticatorBridge.java
index 92627c83..2fc3cb1 100644
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/BiometricAuthenticatorBridge.java
+++ b/chrome/browser/device_reauth/android/java/src/org/chromium/chrome/browser/device_reauth/BiometricAuthenticatorBridge.java
@@ -2,7 +2,7 @@
 // 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.password_manager;
+package org.chromium.chrome.browser.device_reauth;
 
 import static android.hardware.biometrics.BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE;
 import static android.hardware.biometrics.BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED;
diff --git a/chrome/browser/password_manager/chrome_biometric_authenticator.h b/chrome/browser/device_reauth/chrome_biometric_authenticator.h
similarity index 64%
rename from chrome/browser/password_manager/chrome_biometric_authenticator.h
rename to chrome/browser/device_reauth/chrome_biometric_authenticator.h
index 369f77e..f1840e5 100644
--- a/chrome/browser/password_manager/chrome_biometric_authenticator.h
+++ b/chrome/browser/device_reauth/chrome_biometric_authenticator.h
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_PASSWORD_MANAGER_CHROME_BIOMETRIC_AUTHENTICATOR_H_
-#define CHROME_BROWSER_PASSWORD_MANAGER_CHROME_BIOMETRIC_AUTHENTICATOR_H_
+#ifndef CHROME_BROWSER_DEVICE_REAUTH_CHROME_BIOMETRIC_AUTHENTICATOR_H_
+#define CHROME_BROWSER_DEVICE_REAUTH_CHROME_BIOMETRIC_AUTHENTICATOR_H_
 
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 
 namespace content {
 class WebContents;
@@ -15,16 +15,16 @@
 // provide an implementation for Create(), instantiating authenticators for a
 // given platform.
 class ChromeBiometricAuthenticator
-    : public password_manager::BiometricAuthenticator {
+    : public device_reauth::BiometricAuthenticator {
  public:
   // Create an instance of the ChromeBiometricAuthenticator. Trying to use this
   // API on platforms that do not provide an implementation will result in a
   // link error. So far only Android provides an implementation.
-  static scoped_refptr<password_manager::BiometricAuthenticator> Create(
+  static scoped_refptr<device_reauth::BiometricAuthenticator> Create(
       content::WebContents* web_contents);
 
  protected:
   ~ChromeBiometricAuthenticator() override = default;
 };
 
-#endif  // CHROME_BROWSER_PASSWORD_MANAGER_CHROME_BIOMETRIC_AUTHENTICATOR_H_
+#endif  // CHROME_BROWSER_DEVICE_REAUTH_CHROME_BIOMETRIC_AUTHENTICATOR_H_
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn
index 6fa3fe4..39c6c89 100644
--- a/chrome/browser/extensions/BUILD.gn
+++ b/chrome/browser/extensions/BUILD.gn
@@ -1259,6 +1259,13 @@
     ]
   }
 
+  if (is_fuchsia) {
+    sources += [
+      "api/image_writer_private/removable_storage_provider_fuchsia.cc",
+      "api/messaging/native_process_launcher_fuchsia.cc",
+    ]
+  }
+
   if (enable_plugins) {
     sources += [
       "plugin_manager.cc",
diff --git a/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_fuchsia.cc b/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_fuchsia.cc
new file mode 100644
index 0000000..45b1f60
--- /dev/null
+++ b/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_fuchsia.cc
@@ -0,0 +1,19 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/api/image_writer_private/removable_storage_provider.h"
+
+#include "base/notreached.h"
+
+namespace extensions {
+
+// static
+scoped_refptr<StorageDeviceList>
+RemovableStorageProvider::PopulateDeviceList() {
+  // TODO(crbug.com/1233550): Integrate once platform APIs exist.
+  NOTIMPLEMENTED_LOG_ONCE();
+  return {};
+}
+
+}  // namespace extensions
diff --git a/chrome/browser/extensions/api/messaging/native_process_launcher_fuchsia.cc b/chrome/browser/extensions/api/messaging/native_process_launcher_fuchsia.cc
new file mode 100644
index 0000000..4822e62
--- /dev/null
+++ b/chrome/browser/extensions/api/messaging/native_process_launcher_fuchsia.cc
@@ -0,0 +1,29 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/api/messaging/native_process_launcher.h"
+
+#include "base/notreached.h"
+
+namespace extensions {
+
+// static
+base::FilePath NativeProcessLauncher::FindManifest(const std::string& host_name,
+                                                   bool allow_user_level_hosts,
+                                                   std::string* error_message) {
+  *error_message = "Not implemented";
+  return base::FilePath();
+}
+
+// static
+bool NativeProcessLauncher::LaunchNativeProcess(
+    const base::CommandLine& command_line,
+    base::Process* process,
+    base::File* read_file,
+    base::File* write_file) {
+  NOTIMPLEMENTED_LOG_ONCE();
+  return false;
+}
+
+}  // namespace extensions
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
index b68ea15..1be2c72 100644
--- a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
+++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
@@ -136,16 +136,6 @@
           })));
 }
 
-password_manager::InsecureCredential MakeInsecureCredential(
-    base::StringPiece signon_realm,
-    base::StringPiece16 username,
-    base::TimeDelta time_since_creation = base::TimeDelta(),
-    InsecureType compromise_type = InsecureType::kLeaked) {
-  return password_manager::InsecureCredential(
-      std::string(signon_realm), std::u16string(username),
-      base::Time::Now() - time_since_creation, compromise_type, IsMuted(false));
-}
-
 PasswordForm MakeSavedPassword(base::StringPiece signon_realm,
                                base::StringPiece16 username,
                                base::StringPiece16 password = kPassword1,
@@ -165,6 +155,14 @@
   return form;
 }
 
+void AddIssueToForm(PasswordForm* form,
+                    InsecureType type,
+                    base::TimeDelta time_since_creation = base::TimeDelta()) {
+  form->password_issues->insert_or_assign(
+      type, InsecurityMetadata(base::Time::Now() - time_since_creation,
+                               IsMuted(false)));
+}
+
 std::string MakeAndroidRealm(base::StringPiece package_name) {
   return base::StrCat({"android://hash@", package_name});
 }
@@ -353,23 +351,26 @@
 // credentials are before leaked credentials and that within each group
 // credentials are ordered by recency.
 TEST_F(PasswordCheckDelegateTest, GetCompromisedCredentialsOrders) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername2));
-  store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername1));
-  store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername2));
+  PasswordForm form_com_username1 = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form_com_username1, InsecureType::kLeaked,
+                 base::TimeDelta::FromMinutes(1));
+  store().AddLogin(form_com_username1);
 
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername1, base::TimeDelta::FromMinutes(1),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername2, base::TimeDelta::FromMinutes(2),
-      InsecureType::kPhished));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleOrg, kUsername2, base::TimeDelta::FromMinutes(3),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleOrg, kUsername1, base::TimeDelta::FromMinutes(4),
-      InsecureType::kPhished));
+  PasswordForm form_com_username2 = MakeSavedPassword(kExampleCom, kUsername2);
+  AddIssueToForm(&form_com_username2, InsecureType::kPhished,
+                 base::TimeDelta::FromMinutes(2));
+  store().AddLogin(form_com_username2);
+
+  PasswordForm form_org_username1 = MakeSavedPassword(kExampleOrg, kUsername1);
+  AddIssueToForm(&form_org_username1, InsecureType::kPhished,
+                 base::TimeDelta::FromMinutes(4));
+  store().AddLogin(form_org_username1);
+
+  PasswordForm form_org_username2 = MakeSavedPassword(kExampleOrg, kUsername2);
+  AddIssueToForm(&form_org_username2, InsecureType::kLeaked,
+                 base::TimeDelta::FromMinutes(3));
+  store().AddLogin(form_org_username2);
+
   RunUntilIdle();
 
   EXPECT_THAT(
@@ -401,23 +402,26 @@
 // credential covers the "Just now" cases (less than a minute ago), as well as
 // months and years.
 TEST_F(PasswordCheckDelegateTest, GetCompromisedCredentialsHandlesTimes) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername2));
-  store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername1));
-  store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername2));
+  PasswordForm form_com_username1 = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form_com_username1, InsecureType::kLeaked,
+                 base::TimeDelta::FromSeconds(59));
+  store().AddLogin(form_com_username1);
 
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername1, base::TimeDelta::FromSeconds(59),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername2, base::TimeDelta::FromSeconds(60),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleOrg, kUsername1, base::TimeDelta::FromDays(100),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleOrg, kUsername2, base::TimeDelta::FromDays(800),
-      InsecureType::kLeaked));
+  PasswordForm form_com_username2 = MakeSavedPassword(kExampleCom, kUsername2);
+  AddIssueToForm(&form_com_username2, InsecureType::kLeaked,
+                 base::TimeDelta::FromSeconds(60));
+  store().AddLogin(form_com_username2);
+
+  PasswordForm form_org_username1 = MakeSavedPassword(kExampleOrg, kUsername1);
+  AddIssueToForm(&form_org_username1, InsecureType::kLeaked,
+                 base::TimeDelta::FromDays(100));
+  store().AddLogin(form_org_username1);
+
+  PasswordForm form_org_username2 = MakeSavedPassword(kExampleOrg, kUsername2);
+  AddIssueToForm(&form_org_username2, InsecureType::kLeaked,
+                 base::TimeDelta::FromDays(800));
+  store().AddLogin(form_org_username2);
+
   RunUntilIdle();
 
   EXPECT_THAT(
@@ -451,29 +455,30 @@
 // most recent compromise.
 TEST_F(PasswordCheckDelegateTest,
        GetCompromisedCredentialsDedupesLeakedAndCompromised) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername2));
-  store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername1));
-  store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername2));
+  PasswordForm form_com_username1 = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form_com_username1, InsecureType::kLeaked,
+                 base::TimeDelta::FromMinutes(1));
+  AddIssueToForm(&form_com_username1, InsecureType::kPhished,
+                 base::TimeDelta::FromMinutes(5));
+  store().AddLogin(form_com_username1);
 
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername1, base::TimeDelta::FromMinutes(1),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername2, base::TimeDelta::FromMinutes(2),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleOrg, kUsername1, base::TimeDelta::FromMinutes(3),
-      InsecureType::kPhished));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleOrg, kUsername2, base::TimeDelta::FromMinutes(4),
-      InsecureType::kPhished));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername1, base::TimeDelta::FromMinutes(5),
-      InsecureType::kPhished));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleOrg, kUsername2, base::TimeDelta::FromMinutes(6),
-      InsecureType::kLeaked));
+  PasswordForm form_com_username2 = MakeSavedPassword(kExampleCom, kUsername2);
+  AddIssueToForm(&form_com_username2, InsecureType::kLeaked,
+                 base::TimeDelta::FromMinutes(2));
+  store().AddLogin(form_com_username2);
+
+  PasswordForm form_org_username1 = MakeSavedPassword(kExampleOrg, kUsername1);
+  AddIssueToForm(&form_org_username1, InsecureType::kPhished,
+                 base::TimeDelta::FromMinutes(3));
+  store().AddLogin(form_org_username1);
+
+  PasswordForm form_org_username2 = MakeSavedPassword(kExampleOrg, kUsername2);
+  AddIssueToForm(&form_org_username2, InsecureType::kPhished,
+                 base::TimeDelta::FromMinutes(4));
+  AddIssueToForm(&form_org_username2, InsecureType::kLeaked,
+                 base::TimeDelta::FromMinutes(6));
+  store().AddLogin(form_org_username2);
+
   RunUntilIdle();
 
   EXPECT_THAT(
@@ -502,20 +507,22 @@
 }
 
 TEST_F(PasswordCheckDelegateTest, GetCompromisedCredentialsInjectsAndroid) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddLogin(MakeSavedAndroidPassword(kExampleApp, kUsername2,
-                                            "Example App", kExampleCom));
-  // Test Android credential without affiliation information.
-  store().AddLogin(MakeSavedAndroidPassword(kExampleApp, kUsername1));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername1, base::TimeDelta::FromMinutes(5),
-      InsecureType::kLeaked));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      MakeAndroidRealm(kExampleApp), kUsername2, base::TimeDelta::FromDays(3),
-      InsecureType::kPhished));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      MakeAndroidRealm(kExampleApp), kUsername1, base::TimeDelta::FromDays(4),
-      InsecureType::kPhished));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked, base::TimeDelta::FromMinutes(5));
+  store().AddLogin(form);
+
+  PasswordForm android_form1 =
+      MakeSavedAndroidPassword(kExampleApp, kUsername1);
+  AddIssueToForm(&android_form1, InsecureType::kPhished,
+                 base::TimeDelta::FromDays(4));
+  store().AddLogin(android_form1);
+
+  PasswordForm android_form2 = MakeSavedAndroidPassword(
+      kExampleApp, kUsername2, "Example App", kExampleCom);
+  AddIssueToForm(&android_form2, InsecureType::kPhished,
+                 base::TimeDelta::FromDays(3));
+  store().AddLogin(android_form2);
+
   RunUntilIdle();
 
   // Verify that the compromised credentials match what is stored in the
@@ -554,21 +561,23 @@
             event_router_observer().events().at(kEventName)->histogram_value);
   event_router_observer().ClearEvents();
 
-  // Verify that a subsequent call to AddInsecureCredential results in the
-  // expected event.
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
+  // Verify that a subsequent updating the form with a password issue results in
+  // the expected event.
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  store().AddLogin(form);
   RunUntilIdle();
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().UpdateLogin(form);
   RunUntilIdle();
   EXPECT_EQ(events::PASSWORDS_PRIVATE_ON_COMPROMISED_CREDENTIALS_INFO_CHANGED,
             event_router_observer().events().at(kEventName)->histogram_value);
 }
 
 TEST_F(PasswordCheckDelegateTest, GetPlaintextInsecurePasswordRejectsWrongId) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
+
   RunUntilIdle();
 
   InsecureCredential credential =
@@ -584,11 +593,11 @@
 
 TEST_F(PasswordCheckDelegateTest,
        GetPlaintextInsecurePasswordRejectsWrongSignonRealm) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
-  RunUntilIdle();
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
 
+  RunUntilIdle();
   InsecureCredential credential =
       std::move(delegate().GetCompromisedCredentials().at(0));
   EXPECT_EQ(kExampleCom, credential.signon_realm);
@@ -602,9 +611,9 @@
 
 TEST_F(PasswordCheckDelegateTest,
        GetPlaintextInsecurePasswordRejectsWrongUsername) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
@@ -620,9 +629,9 @@
 
 TEST_F(PasswordCheckDelegateTest,
        GetPlaintextInsecurePasswordReturnsCorrectPassword) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1, kPassword1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
@@ -643,9 +652,9 @@
 
 // Test that changing a insecure password fails if the ids don't match.
 TEST_F(PasswordCheckDelegateTest, ChangeInsecureCredentialIdMismatch) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
@@ -659,15 +668,15 @@
 // Test that changing a insecure password fails if the underlying insecure
 // credential no longer exists.
 TEST_F(PasswordCheckDelegateTest, ChangeInsecureCredentialStaleData) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
       std::move(delegate().GetCompromisedCredentials().at(0));
 
-  store().RemoveLogin(MakeSavedPassword(kExampleCom, kUsername1));
+  store().RemoveLogin(form);
   RunUntilIdle();
 
   EXPECT_FALSE(delegate().ChangeInsecureCredential(credential, "new_pass"));
@@ -675,9 +684,9 @@
 
 // Test that changing a insecure password succeeds.
 TEST_F(PasswordCheckDelegateTest, ChangeInsecureCredentialSuccess) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
@@ -698,11 +707,15 @@
 
 // Test that changing a insecure password removes duplicates from store.
 TEST_F(PasswordCheckDelegateTest, ChangeInsecureCredentialRemovesDupes) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1,
-                                     u"different_element"));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1, kPassword1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
+
+  PasswordForm duplicate_form = MakeSavedPassword(
+      kExampleCom, kUsername1, kPassword1, u"different_element");
+  AddIssueToForm(&duplicate_form, InsecureType::kLeaked);
+  store().AddLogin(duplicate_form);
+
   RunUntilIdle();
 
   EXPECT_EQ(2u, store().stored_passwords().at(kExampleCom).size());
@@ -720,9 +733,9 @@
 
 // Test that removing a insecure password fails if the ids don't match.
 TEST_F(PasswordCheckDelegateTest, RemoveInsecureCredentialIdMismatch) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
@@ -736,14 +749,14 @@
 // Test that removing a insecure password fails if the underlying insecure
 // credential no longer exists.
 TEST_F(PasswordCheckDelegateTest, RemoveInsecureCredentialStaleData) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
       std::move(delegate().GetCompromisedCredentials().at(0));
-  store().RemoveLogin(MakeSavedPassword(kExampleCom, kUsername1));
+  store().RemoveLogin(form);
   RunUntilIdle();
 
   EXPECT_FALSE(delegate().RemoveInsecureCredential(credential));
@@ -751,9 +764,9 @@
 
 // Test that removing a insecure password succeeds.
 TEST_F(PasswordCheckDelegateTest, RemoveInsecureCredentialSuccess) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
   RunUntilIdle();
 
   InsecureCredential credential =
@@ -770,10 +783,11 @@
 // saved password.
 TEST_F(PasswordCheckDelegateTest, OnLeakFoundDoesNotCreateCredential) {
   identity_test_env().MakeAccountAvailable(kTestEmail);
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1, kPassword1);
+  store().AddLogin(form);
   RunUntilIdle();
   delegate().StartPasswordCheck();
-  store().RemoveLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
+  store().RemoveLogin(form);
   RunUntilIdle();
   static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential(
       LeakCheckCredential(kUsername1, kPassword1), IsLeaked(true));
@@ -825,17 +839,20 @@
       base::StrCat({kUsername2, u"@email.com"});
   PasswordForm form_com_username1 =
       MakeSavedPassword(kExampleCom, kUsername1, kPassword1);
+  store().AddLogin(form_com_username1);
+
   PasswordForm form_org_username1 =
       MakeSavedPassword(kExampleOrg, kUsername1, kPassword1);
+  store().AddLogin(form_org_username1);
+
   PasswordForm form_com_username2 =
       MakeSavedPassword(kExampleCom, kUsername2Upper, kPassword2);
+  store().AddLogin(form_com_username2);
+
   PasswordForm form_org_username2 =
       MakeSavedPassword(kExampleOrg, kUsername2Email, kPassword2);
-
-  store().AddLogin(form_com_username1);
-  store().AddLogin(form_org_username1);
-  store().AddLogin(form_com_username2);
   store().AddLogin(form_org_username2);
+
   RunUntilIdle();
 
   identity_test_env().MakeAccountAvailable(kTestEmail);
@@ -1126,10 +1143,9 @@
 }
 
 TEST_F(PasswordCheckDelegateTest, WellKnownChangePasswordUrl) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername1, base::TimeDelta::FromMinutes(1),
-      InsecureType::kLeaked));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form, InsecureType::kLeaked);
+  store().AddLogin(form);
 
   RunUntilIdle();
   GURL change_password_url(
@@ -1139,19 +1155,18 @@
 }
 
 TEST_F(PasswordCheckDelegateTest, WellKnownChangePasswordUrl_androidrealm) {
-  store().AddLogin(
-      MakeSavedAndroidPassword(kExampleApp, kUsername1, "", kExampleCom));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      MakeAndroidRealm(kExampleApp), kUsername1, base::TimeDelta::FromDays(3),
-      InsecureType::kPhished));
+  PasswordForm form1 =
+      MakeSavedAndroidPassword(kExampleApp, kUsername1, "", kExampleCom);
+  AddIssueToForm(&form1, InsecureType::kLeaked);
+  store().AddLogin(form1);
 
-  store().AddLogin(MakeSavedAndroidPassword(kExampleApp, kUsername2,
-                                            "Example App", kExampleCom));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      MakeAndroidRealm(kExampleApp), kUsername2, base::TimeDelta::FromDays(3),
-      InsecureType::kPhished));
+  PasswordForm form2 = MakeSavedAndroidPassword(kExampleApp, kUsername2,
+                                                "Example App", kExampleCom);
+  form2.password_issues = form1.password_issues;
+  store().AddLogin(form2);
 
   RunUntilIdle();
+
   EXPECT_EQ(delegate().GetCompromisedCredentials().at(0).change_password_url,
             nullptr);
   EXPECT_EQ(
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
index 2777d1f..eec28a3 100644
--- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
+++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
@@ -597,11 +597,11 @@
   PasswordsPrivateDelegateImpl delegate(&profile_);
 
   password_manager::PasswordForm form = CreateSampleForm();
-  password_manager::InsecureCredential compromised_credentials;
-  compromised_credentials.signon_realm = form.signon_realm;
-  compromised_credentials.username = form.username_value;
+  form.password_issues = {
+      {password_manager::InsecureType::kLeaked,
+       password_manager::InsecurityMetadata(base::Time::FromTimeT(1),
+                                            password_manager::IsMuted(false))}};
   store_->AddLogin(form);
-  store_->AddInsecureCredential(compromised_credentials);
   base::RunLoop().RunUntilIdle();
 
   api::passwords_private::InsecureCredential credential =
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_performancetest.cc b/chrome/browser/extensions/api/tab_capture/tab_capture_performancetest.cc
index d8f8ffb..a7971c4d 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_performancetest.cc
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_performancetest.cc
@@ -282,8 +282,11 @@
 
 }  // namespace
 
-// Using MSAN on ChromeOS causes problems due to its hardware OpenGL library.
 #if BUILDFLAG(IS_CHROMEOS_ASH) && defined(MEMORY_SANITIZER)
+// Using MSAN on ChromeOS causes problems due to its hardware OpenGL library.
+#define MAYBE_Performance DISABLED_Performance
+#elif defined(OS_MAC)
+// flaky on Mac 10.11 See: http://crbug.com/1235358
 #define MAYBE_Performance DISABLED_Performance
 #else
 #define MAYBE_Performance Performance
diff --git a/chrome/browser/extensions/error_console/error_console_browsertest.cc b/chrome/browser/extensions/error_console/error_console_browsertest.cc
index f3d34b0..e15116caa 100644
--- a/chrome/browser/extensions/error_console/error_console_browsertest.cc
+++ b/chrome/browser/extensions/error_console/error_console_browsertest.cc
@@ -352,10 +352,8 @@
 
 // Load an extension which, upon visiting any page, first sends out a console
 // log, and then crashes with a JS TypeError.
-// TODO(pthier, v8:11365): Update error message and re-enable test once
-// https://crrev.com/c/2979599 is rolled into chromium.
 IN_PROC_BROWSER_TEST_F(ErrorConsoleBrowserTest,
-                       DISABLED_ContentScriptLogAndRuntimeError) {
+                       ContentScriptLogAndRuntimeError) {
   const Extension* extension = nullptr;
   LoadExtensionAndCheckErrors(
       "content_script_log_and_runtime_error",
@@ -398,7 +396,7 @@
   CheckRuntimeError(errors[1].get(), extension->id(), script_url,
                     false,  // not from incognito
                     "Uncaught TypeError: "
-                    "Cannot set property 'foo' of undefined",
+                    "Cannot set properties of undefined (setting 'foo')",
                     logging::LOG_ERROR,  // JS errors are always ERROR level.
                     GetTestURL(), 1u);
 
@@ -468,10 +466,7 @@
 
 // Test that we catch an error when we try to call an API method without
 // permission.
-// TODO(pthier, v8:11365): Update error message and re-enable test once
-// https://crrev.com/c/2979599 is rolled into chromium.
-IN_PROC_BROWSER_TEST_F(ErrorConsoleBrowserTest,
-                       DISABLED_BadAPIPermissionsRuntimeError) {
+IN_PROC_BROWSER_TEST_F(ErrorConsoleBrowserTest, BadAPIPermissionsRuntimeError) {
   const Extension* extension = nullptr;
   LoadExtensionAndCheckErrors(
       "bad_api_permissions_runtime_error", {.ignore_manifest_warnings = false},
@@ -484,11 +479,12 @@
   const ErrorList& errors =
       error_console()->GetErrorsForExtension(extension->id());
 
-  CheckRuntimeError(
-      errors[0].get(), extension->id(), script_url,
-      false,  // not incognito
-      "Uncaught TypeError: Cannot read property 'addUrl' of undefined",
-      logging::LOG_ERROR, extension->GetResourceURL(kBackgroundPageName), 1u);
+  CheckRuntimeError(errors[0].get(), extension->id(), script_url,
+                    false,  // not incognito
+                    "Uncaught TypeError: Cannot read properties of undefined "
+                    "(reading 'addUrl')",
+                    logging::LOG_ERROR,
+                    extension->GetResourceURL(kBackgroundPageName), 1u);
 
   const StackTrace& stack_trace = GetStackTraceFromError(errors[0].get());
   ASSERT_EQ(1u, stack_trace.size());
diff --git a/chrome/browser/extensions/external_pref_loader.cc b/chrome/browser/extensions/external_pref_loader.cc
index aa0418f1..260b09e 100644
--- a/chrome/browser/extensions/external_pref_loader.cc
+++ b/chrome/browser/extensions/external_pref_loader.cc
@@ -87,7 +87,7 @@
       base::FileEnumerator::FILES);
 #if defined(OS_WIN)
   base::FilePath::StringType extension = base::UTF8ToWide(".json");
-#elif defined(OS_POSIX)
+#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
   base::FilePath::StringType extension(".json");
 #endif
   do {
@@ -415,7 +415,7 @@
 #if defined(OS_WIN)
         base::WideToASCII(
             extension_candidate_path.RemoveExtension().BaseName().value());
-#elif defined(OS_POSIX)
+#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
         extension_candidate_path.RemoveExtension().BaseName().value();
 #endif
 
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 3c6ad929..59ae710 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -4449,12 +4449,12 @@
   {
     "name": "page-info-discoverability",
     "owners": [ "eokoyomon", "dullweber" ],
-    "expiry_milestone": 93
+    "expiry_milestone": 95
   },
   {
     "name": "page-info-history",
-    "owners": [ "oroshiba", "dullweber" ],
-    "expiry_milestone": 93
+    "owners": [ "eokoyomon", "dullweber" ],
+    "expiry_milestone": 95
   },
   {
     "name": "page-info-performance-hints",
@@ -5692,6 +5692,11 @@
     "expiry_milestone": 95
   },
   {
+    "name": "username-first-flow-fallback-crowdsourcing",
+    "owners": [ "kazinova@google.com", "kolos" ],
+    "expiry_milestone": 98
+  },
+  {
     "name": "username-first-flow-filling",
     "owners": [ "kazinova@google.com", "kolos" ],
     "expiry_milestone": 95
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 45f36d4..0309ecb 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2771,7 +2771,18 @@
 const char kUsernameFirstFlowDescription[] =
     "Support of sending votes on username first flow i.e. login "
     "flows where a user has to type username first on one page and then "
-    "password on another page";
+    "password on another page. Votes are send on single username forms and are "
+    "based on user interaction with the save prompt.";
+
+const char kUsernameFirstFlowFallbackCrowdsourcingName[] =
+    "Username first flow fallback crowdsourcing";
+const char kUsernameFirstFlowFallbackCrowdsourcingDescription[] =
+    "Support of sending additional votes on username first flow i.e. login "
+    "flows where a user has to type username first on one page and then "
+    "password on another page. These votes are sent on single password forms "
+    "and contain information whether a 1-password form follows a 1-text form "
+    "and the value's type(or pattern) in the latter (e.g. email-like, "
+    "phone-like, arbitrary string).";
 
 const char kUsernameFirstFlowFillingName[] = "Username first flow filling";
 const char kUsernameFirstFlowFillingDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index aaa2105..5bab29b 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -962,6 +962,9 @@
 extern const char kUsernameFirstFlowName[];
 extern const char kUsernameFirstFlowDescription[];
 
+extern const char kUsernameFirstFlowFallbackCrowdsourcingName[];
+extern const char kUsernameFirstFlowFallbackCrowdsourcingDescription[];
+
 extern const char kUsernameFirstFlowFillingName[];
 extern const char kUsernameFirstFlowFillingDescription[];
 
diff --git a/chrome/browser/password_check/android/password_check_manager_unittest.cc b/chrome/browser/password_check/android/password_check_manager_unittest.cc
index cc4b9b56..014bf35 100644
--- a/chrome/browser/password_check/android/password_check_manager_unittest.cc
+++ b/chrome/browser/password_check/android/password_check_manager_unittest.cc
@@ -21,6 +21,7 @@
 #include "chrome/browser/sync/sync_service_factory.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/password_manager/core/browser/bulk_leak_check_service.h"
+#include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
 #include "components/password_manager/core/browser/test_password_store.h"
 #include "components/password_manager/core/common/password_manager_features.h"
@@ -172,14 +173,13 @@
   return form;
 }
 
-InsecureCredential MakeInsecureCredential(
-    base::StringPiece signon_realm,
-    base::StringPiece16 username,
-    base::TimeDelta time_since_creation = base::TimeDelta(),
-    InsecureType compromise_type = InsecureType::kLeaked) {
-  return InsecureCredential(std::string(signon_realm), std::u16string(username),
-                            base::Time::Now() - time_since_creation,
-                            compromise_type, password_manager::IsMuted(false));
+void AddIssueToForm(PasswordForm* form,
+                    InsecureType type = InsecureType::kLeaked,
+                    base::TimeDelta time_since_creation = base::TimeDelta()) {
+  form->password_issues->insert_or_assign(
+      type, password_manager::InsecurityMetadata(
+                base::Time::Now() - time_since_creation,
+                password_manager::IsMuted(false)));
 }
 
 // Creates matcher for a given compromised credential
@@ -278,12 +278,13 @@
   // and once when the saved password is added.
   EXPECT_CALL(mock_observer(), OnCompromisedCredentialsChanged(0)).Times(2);
   InitializeManager();
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  store().AddLogin(form);
   RunUntilIdle();
 
   EXPECT_CALL(mock_observer(), OnCompromisedCredentialsChanged(1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  AddIssueToForm(&form);
+  store().UpdateLogin(form);
   RunUntilIdle();
 }
 
@@ -348,9 +349,9 @@
 
 TEST_F(PasswordCheckManagerTest, CorrectlyCreatesUIStructForSiteCredential) {
   InitializeManager();
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form);
+  store().AddLogin(form);
   RunUntilIdle();
   EXPECT_THAT(manager().GetCompromisedCredentials(),
               ElementsAre(ExpectCompromisedCredentialForUI(
@@ -363,16 +364,18 @@
 
 TEST_F(PasswordCheckManagerTest, CorrectlyCreatesUIStructForAppCredentials) {
   InitializeManager();
-  // A credential without affiliation information.
-  store().AddLogin(MakeSavedAndroidPassword(kExampleApp, kUsername1));
-  // A credential for which affiliation information is known.
-  store().AddLogin(MakeSavedAndroidPassword(kExampleApp, kUsername2,
-                                            "Example App", kExampleCom));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(MakeAndroidRealm(kExampleApp), kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(MakeAndroidRealm(kExampleApp), kUsername2));
 
+  // A credential without affiliation information.
+  PasswordForm form_no_affiliation =
+      MakeSavedAndroidPassword(kExampleApp, kUsername1);
+  AddIssueToForm(&form_no_affiliation);
+  store().AddLogin(form_no_affiliation);
+
+  // A credential for which affiliation information is known.
+  PasswordForm form_with_affiliation = MakeSavedAndroidPassword(
+      kExampleApp, kUsername2, "Example App", kExampleCom);
+  AddIssueToForm(&form_with_affiliation);
+  store().AddLogin(form_with_affiliation);
   RunUntilIdle();
 
   EXPECT_THAT(
@@ -428,11 +431,11 @@
       {password_manager::features::kPasswordScriptsFetching,
        password_manager::features::kPasswordChangeInSettings},
       {});
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
-
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form);
+  store().AddLogin(form);
   RunUntilIdle();
+
   // To have precise metrics, scripts are not requested for users who cannot
   // start a script, i.e. non-sync users.
   EXPECT_CALL(fetcher(), RefreshScriptsIfNecessary).Times(0);
@@ -458,11 +461,11 @@
       {password_manager::features::kPasswordScriptsFetching,
        password_manager::features::kPasswordChangeInSettings},
       {});
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
-
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form);
+  store().AddLogin(form);
   RunUntilIdle();
+
   EXPECT_CALL(fetcher(), RefreshScriptsIfNecessary)
       .WillOnce(Invoke(
           [](base::OnceClosure callback) { std::move(callback).Run(); }));
@@ -488,10 +491,12 @@
       {password_manager::features::kPasswordScriptsFetching,
        password_manager::features::kPasswordChangeInSettings},
       {});
-  store().AddLogin(MakeSavedPassword(kExampleCom, u""));
-  store().AddInsecureCredential(MakeInsecureCredential(kExampleCom, u""));
 
+  PasswordForm form = MakeSavedPassword(kExampleCom, u"");
+  AddIssueToForm(&form);
+  store().AddLogin(form);
   RunUntilIdle();
+
   EXPECT_CALL(fetcher(), RefreshScriptsIfNecessary)
       .WillOnce(Invoke(
           [](base::OnceClosure callback) { std::move(callback).Run(); }));
@@ -521,11 +526,12 @@
                                 kPasswordScriptsFetching},
       /*disabled_features=*/{
           password_manager::features::kPasswordChangeInSettings});
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
 
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form);
+  store().AddLogin(form);
   RunUntilIdle();
+
   EXPECT_CALL(fetcher(), RefreshScriptsIfNecessary)
       .WillOnce(Invoke(
           [](base::OnceClosure callback) { std::move(callback).Run(); }));
@@ -553,11 +559,12 @@
       {password_manager::features::kPasswordScriptsFetching,
        password_manager::features::kPasswordChangeInSettings},
       {});
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1));
-  store().AddInsecureCredential(
-      MakeInsecureCredential(kExampleCom, kUsername1));
 
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1);
+  AddIssueToForm(&form);
+  store().AddLogin(form);
   RunUntilIdle();
+
   EXPECT_CALL(fetcher(), RefreshScriptsIfNecessary)
       .WillOnce(Invoke(
           [](base::OnceClosure callback) { std::move(callback).Run(); }));
@@ -578,6 +585,7 @@
 TEST_F(PasswordCheckManagerTest, UpdatesProgressCorrectly) {
   identity_test_env().MakeAccountAvailable(kTestEmail);
   InitializeManager();
+
   store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1));
   store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername1, kPassword1));
   store().AddLogin(MakeSavedPassword(kExampleCom, kUsername2));
diff --git a/chrome/browser/password_manager/account_password_store_factory.cc b/chrome/browser/password_manager/account_password_store_factory.cc
index af3fc1f..62d48be 100644
--- a/chrome/browser/password_manager/account_password_store_factory.cc
+++ b/chrome/browser/password_manager/account_password_store_factory.cc
@@ -28,6 +28,7 @@
 #include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/browser/password_store_factory_util.h"
 #include "components/password_manager/core/browser/password_store_impl.h"
+#include "components/password_manager/core/browser/password_store_interface.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/browser/browser_context.h"
@@ -48,6 +49,7 @@
 #endif  // !defined(OS_ANDROID)
 
 using password_manager::PasswordStore;
+using password_manager::PasswordStoreInterface;
 
 #if !defined(OS_ANDROID)
 
@@ -125,10 +127,22 @@
 #endif  // defined(OS_ANDROID)
 }
 
+// TODO(crbug.com/1218413): Delete this method when the migration to
+// PasswordStoreInterface is complete and rename the method below to
+// GetForProfile.
 // static
 scoped_refptr<PasswordStore> AccountPasswordStoreFactory::GetForProfile(
     Profile* profile,
     ServiceAccessType access_type) {
+  return base::WrapRefCounted(static_cast<PasswordStore*>(
+      GetInterfaceForProfile(profile, access_type).get()));
+}
+
+// static
+scoped_refptr<PasswordStoreInterface>
+AccountPasswordStoreFactory::GetInterfaceForProfile(
+    Profile* profile,
+    ServiceAccessType access_type) {
   if (!base::FeatureList::IsEnabled(
           password_manager::features::kEnablePasswordsAccountStorage)) {
     return nullptr;
@@ -140,8 +154,9 @@
       profile->IsOffTheRecord()) {
     return nullptr;
   }
-  return base::WrapRefCounted(static_cast<password_manager::PasswordStore*>(
-      GetInstance()->GetServiceForBrowserContext(profile, true).get()));
+  return base::WrapRefCounted(
+      static_cast<password_manager::PasswordStoreInterface*>(
+          GetInstance()->GetServiceForBrowserContext(profile, true).get()));
 }
 
 // static
diff --git a/chrome/browser/password_manager/account_password_store_factory.h b/chrome/browser/password_manager/account_password_store_factory.h
index c6baf21..07e9cb3 100644
--- a/chrome/browser/password_manager/account_password_store_factory.h
+++ b/chrome/browser/password_manager/account_password_store_factory.h
@@ -9,6 +9,7 @@
 #include "base/memory/singleton.h"
 #include "components/keyed_service/content/refcounted_browser_context_keyed_service_factory.h"
 #include "components/keyed_service/core/service_access_type.h"
+#include "components/password_manager/core/browser/password_store_interface.h"
 
 class Profile;
 
@@ -25,6 +26,9 @@
       Profile* profile,
       ServiceAccessType set);
 
+  static scoped_refptr<password_manager::PasswordStoreInterface>
+  GetInterfaceForProfile(Profile* profile, ServiceAccessType set);
+
   static AccountPasswordStoreFactory* GetInstance();
 
  private:
diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn
index bf0108e..2b571b9 100644
--- a/chrome/browser/password_manager/android/BUILD.gn
+++ b/chrome/browser/password_manager/android/BUILD.gn
@@ -8,8 +8,10 @@
   deps = [
     ":java_resources",
     "//base:base_java",
+    "//chrome/browser/device_reauth/android:java",
     "//chrome/browser/settings:java",
     "//components/browser_ui/settings/android:java",
+    "//components/device_reauth:device_reauth_java_enums",
     "//components/password_manager/core/browser:password_manager_java_enums",
     "//components/sync/protocol:protocol_java",
     "//content/public/android:content_java",
@@ -20,10 +22,8 @@
     "//ui/android:ui_no_recycler_view_java",
     "//url:gurl_java",
   ]
-  srcjar_deps = [ ":password_manager_android_java_enums_srcjar" ]
 
   sources = [
-    "java/src/org/chromium/chrome/browser/password_manager/BiometricAuthenticatorBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordScriptsFetcherBridge.java",
@@ -42,7 +42,6 @@
 generate_jni("jni_headers") {
   visibility = [ "//chrome/browser" ]
   sources = [
-    "java/src/org/chromium/chrome/browser/password_manager/BiometricAuthenticatorBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordScriptsFetcherBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordStoreBridge.java",
@@ -75,7 +74,3 @@
     "//components/browser_ui/styles/android:java_resources",
   ]
 }
-
-java_cpp_enum("password_manager_android_java_enums_srcjar") {
-  sources = [ "biometric_authenticator_bridge.h" ]
-}
diff --git a/chrome/browser/password_manager/android/DEPS b/chrome/browser/password_manager/android/DEPS
index ca4acba..3136276 100644
--- a/chrome/browser/password_manager/android/DEPS
+++ b/chrome/browser/password_manager/android/DEPS
@@ -1,4 +1,5 @@
 include_rules = [
     "-content/public/android/java",
     "+content/public/android/java/src/org/chromium/content_public",
-]
\ No newline at end of file
+    "+components/device_reauth",
+]
diff --git a/chrome/browser/password_manager/android/account_chooser_dialog_android.cc b/chrome/browser/password_manager/android/account_chooser_dialog_android.cc
index c01f576a..7d07e8b 100644
--- a/chrome/browser/password_manager/android/account_chooser_dialog_android.cc
+++ b/chrome/browser/password_manager/android/account_chooser_dialog_android.cc
@@ -18,7 +18,7 @@
 #include "chrome/browser/ui/passwords/account_avatar_fetcher.h"
 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h"
 #include "chrome/grit/generated_resources.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/core/browser/password_bubble_experiment.h"
 #include "components/password_manager/core/browser/password_manager_constants.h"
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
@@ -123,7 +123,7 @@
 AccountChooserDialogAndroid::~AccountChooserDialogAndroid() {
   if (authenticator_) {
     authenticator_->Cancel(
-        password_manager::BiometricAuthRequester::kAccountChooserDialog);
+        device_reauth::BiometricAuthRequester::kAccountChooserDialog);
   }
 
   // |dialog_jobject_| can be null in tests or if the dialog could not
@@ -242,12 +242,12 @@
     return true;
   }
 
-  scoped_refptr<password_manager::BiometricAuthenticator> authenticator =
+  scoped_refptr<device_reauth::BiometricAuthenticator> authenticator =
       client_->GetBiometricAuthenticator();
   if (password_manager_util::CanUseBiometricAuth(authenticator.get())) {
     authenticator_ = std::move(authenticator);
     authenticator_->Authenticate(
-        password_manager::BiometricAuthRequester::kAccountChooserDialog,
+        device_reauth::BiometricAuthRequester::kAccountChooserDialog,
         base::BindOnce(&AccountChooserDialogAndroid::OnReauthCompleted,
                        base::Unretained(this), index));
     // The credential handling will only happen after the authentication
diff --git a/chrome/browser/password_manager/android/account_chooser_dialog_android.h b/chrome/browser/password_manager/android/account_chooser_dialog_android.h
index b32f45b..07ea1e7 100644
--- a/chrome/browser/password_manager/android/account_chooser_dialog_android.h
+++ b/chrome/browser/password_manager/android/account_chooser_dialog_android.h
@@ -12,7 +12,7 @@
 #include "base/android/jni_android.h"
 #include "base/macros.h"
 #include "chrome/browser/ui/passwords/manage_passwords_state.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
 #include "content/public/browser/web_contents_observer.h"
 
@@ -86,7 +86,7 @@
 
   // Authenticator used to trigger a biometric re-auth before passing the
   // credential to the site.
-  scoped_refptr<password_manager::BiometricAuthenticator> authenticator_;
+  scoped_refptr<device_reauth::BiometricAuthenticator> authenticator_;
 
   ManagePasswordsState passwords_data_;
   url::Origin origin_;
diff --git a/chrome/browser/password_manager/android/account_chooser_dialog_android_unittest.cc b/chrome/browser/password_manager/android/account_chooser_dialog_android_unittest.cc
index 8408041..1803b37 100644
--- a/chrome/browser/password_manager/android/account_chooser_dialog_android_unittest.cc
+++ b/chrome/browser/password_manager/android/account_chooser_dialog_android_unittest.cc
@@ -13,8 +13,8 @@
 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
-#include "components/password_manager/core/browser/mock_biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
+#include "components/device_reauth/mock_biometric_authenticator.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
@@ -29,9 +29,9 @@
 namespace {
 
 using base::test::RunOnceCallback;
-using password_manager::BiometricAuthRequester;
-using password_manager::BiometricsAvailability;
-using password_manager::MockBiometricAuthenticator;
+using device_reauth::BiometricAuthRequester;
+using device_reauth::BiometricsAvailability;
+using device_reauth::MockBiometricAuthenticator;
 using testing::_;
 using testing::Eq;
 using testing::Pointee;
@@ -68,7 +68,7 @@
 class MockPasswordManagerClient
     : public password_manager::StubPasswordManagerClient {
  public:
-  MOCK_METHOD(scoped_refptr<password_manager::BiometricAuthenticator>,
+  MOCK_METHOD(scoped_refptr<device_reauth::BiometricAuthenticator>,
               GetBiometricAuthenticator,
               (),
               (override));
diff --git a/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.cc b/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.cc
index 6892557..a7a57580 100644
--- a/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.cc
+++ b/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.cc
@@ -8,9 +8,9 @@
 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
 #include "chrome/browser/ui/android/passwords/all_passwords_bottom_sheet_view.h"
 #include "chrome/browser/ui/android/passwords/all_passwords_bottom_sheet_view_impl.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/content/browser/content_password_manager_driver.h"
 #include "components/password_manager/content/browser/content_password_manager_driver_factory.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
 #include "components/password_manager/core/browser/password_manager_driver.h"
@@ -63,7 +63,7 @@
 AllPasswordsBottomSheetController::~AllPasswordsBottomSheetController() {
   if (authenticator_) {
     authenticator_->Cancel(
-        password_manager::BiometricAuthRequester::kAllPasswordsList);
+        device_reauth::BiometricAuthRequester::kAllPasswordsList);
   }
 }
 
@@ -98,12 +98,12 @@
     // WebContents. And AllPasswordBottomSheetController is owned by
     // PasswordAccessoryController.
     DCHECK(client_);
-    scoped_refptr<password_manager::BiometricAuthenticator> authenticator =
+    scoped_refptr<device_reauth::BiometricAuthenticator> authenticator =
         client_->GetBiometricAuthenticator();
     if (password_manager_util::CanUseBiometricAuth(authenticator.get())) {
       authenticator_ = std::move(authenticator);
       authenticator_->Authenticate(
-          password_manager::BiometricAuthRequester::kAllPasswordsList,
+          device_reauth::BiometricAuthRequester::kAllPasswordsList,
           base::BindOnce(&AllPasswordsBottomSheetController::OnReauthCompleted,
                          base::Unretained(this), password));
       return;
diff --git a/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h b/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h
index 63e268c..ff288b7 100644
--- a/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h
+++ b/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h
@@ -8,7 +8,7 @@
 #include "base/callback.h"
 #include "base/types/pass_key.h"
 #include "components/autofill/core/common/mojom/autofill_types.mojom-forward.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/core/browser/password_store_consumer.h"
 #include "ui/gfx/native_widget_types.h"
 #include "url/gurl.h"
@@ -98,7 +98,7 @@
   base::WeakPtr<password_manager::PasswordManagerDriver> driver_;
 
   // Authenticator used to trigger a biometric re-auth before password filling.
-  scoped_refptr<password_manager::BiometricAuthenticator> authenticator_;
+  scoped_refptr<device_reauth::BiometricAuthenticator> authenticator_;
 
   // The type of field on which the user is focused, e.g. PASSWORD.
   autofill::mojom::FocusedFieldType focused_field_type_;
diff --git a/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller_unittest.cc b/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller_unittest.cc
index 19e5a025..e487340b 100644
--- a/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller_unittest.cc
+++ b/chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller_unittest.cc
@@ -13,8 +13,8 @@
 #include "chrome/browser/ui/android/passwords/all_passwords_bottom_sheet_view.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/autofill/core/common/mojom/autofill_types.mojom-forward.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
-#include "components/password_manager/core/browser/mock_biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
+#include "components/device_reauth/mock_biometric_authenticator.h"
 #include "components/password_manager/core/browser/origin_credential_store.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
@@ -36,9 +36,9 @@
 
 using autofill::mojom::FocusedFieldType;
 using base::test::RunOnceCallback;
-using password_manager::BiometricAuthRequester;
-using password_manager::BiometricsAvailability;
-using password_manager::MockBiometricAuthenticator;
+using device_reauth::BiometricAuthRequester;
+using device_reauth::BiometricsAvailability;
+using device_reauth::MockBiometricAuthenticator;
 using password_manager::PasswordForm;
 using password_manager::TestPasswordStore;
 using password_manager::UiCredential;
@@ -82,7 +82,7 @@
  public:
   MOCK_METHOD(void, OnPasswordSelected, (const std::u16string&), (override));
 
-  MOCK_METHOD(scoped_refptr<password_manager::BiometricAuthenticator>,
+  MOCK_METHOD(scoped_refptr<device_reauth::BiometricAuthenticator>,
               GetBiometricAuthenticator,
               (),
               (override));
@@ -157,7 +157,7 @@
     return *mock_pwd_manager_client_.get();
   }
 
-  scoped_refptr<password_manager::MockBiometricAuthenticator> authenticator() {
+  scoped_refptr<MockBiometricAuthenticator> authenticator() {
     return mock_authenticator_;
   }
 
diff --git a/chrome/browser/password_manager/android/password_accessory_controller_impl.cc b/chrome/browser/password_manager/android/password_accessory_controller_impl.cc
index a80381a..09b32b4 100644
--- a/chrome/browser/password_manager/android/password_accessory_controller_impl.cc
+++ b/chrome/browser/password_manager/android/password_accessory_controller_impl.cc
@@ -36,10 +36,10 @@
 #include "components/autofill/core/common/autofill_util.h"
 #include "components/autofill/core/common/mojom/autofill_types.mojom-shared.h"
 #include "components/autofill/core/common/password_generation_util.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/content/browser/content_password_manager_driver.h"
 #include "components/password_manager/content/browser/content_password_manager_driver_factory.h"
 #include "components/password_manager/core/browser/android_affiliation/affiliation_utils.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
 #include "components/password_manager/core/browser/credential_cache.h"
 #include "components/password_manager/core/browser/origin_credential_store.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
@@ -114,7 +114,7 @@
 PasswordAccessoryControllerImpl::~PasswordAccessoryControllerImpl() {
   if (authenticator_) {
     authenticator_->Cancel(
-        password_manager::BiometricAuthRequester::kFallbackSheet);
+        device_reauth::BiometricAuthRequester::kFallbackSheet);
   }
 }
 
@@ -222,7 +222,7 @@
   // |this| cancels the authentication when it is destroyed if one is ongoing,
   // which resets the callback, so it's safe to use base::Unretained(this) here.
   authenticator_->Authenticate(
-      password_manager::BiometricAuthRequester::kFallbackSheet,
+      device_reauth::BiometricAuthRequester::kFallbackSheet,
       base::BindOnce(&PasswordAccessoryControllerImpl::OnReauthCompleted,
                      base::Unretained(this), selection));
 }
@@ -524,7 +524,7 @@
   if (!selection.is_obfuscated())
     return false;
 
-  scoped_refptr<password_manager::BiometricAuthenticator> authenticator =
+  scoped_refptr<device_reauth::BiometricAuthenticator> authenticator =
       password_client_->GetBiometricAuthenticator();
   return password_manager_util::CanUseBiometricAuth(authenticator.get());
 }
diff --git a/chrome/browser/password_manager/android/password_accessory_controller_impl.h b/chrome/browser/password_manager/android/password_accessory_controller_impl.h
index 9d0cc87..5804b1e 100644
--- a/chrome/browser/password_manager/android/password_accessory_controller_impl.h
+++ b/chrome/browser/password_manager/android/password_accessory_controller_impl.h
@@ -191,7 +191,7 @@
 
   // The authenticator used to trigger a biometric re-auth before filling.
   // null, if there is no ongoing authentication.
-  scoped_refptr<password_manager::BiometricAuthenticator> authenticator_;
+  scoped_refptr<device_reauth::BiometricAuthenticator> authenticator_;
 
   // Information about the currently focused field. This is the only place
   // allowed to store frame-specific data. If a new field is focused or focus is
diff --git a/chrome/browser/password_manager/android/password_accessory_controller_impl_unittest.cc b/chrome/browser/password_manager/android/password_accessory_controller_impl_unittest.cc
index 3fb63c4..5970fbf 100644
--- a/chrome/browser/password_manager/android/password_accessory_controller_impl_unittest.cc
+++ b/chrome/browser/password_manager/android/password_accessory_controller_impl_unittest.cc
@@ -31,11 +31,11 @@
 #include "components/autofill/core/common/autofill_features.h"
 #include "components/autofill/core/common/password_generation_util.h"
 #include "components/autofill/core/common/signatures.h"
+#include "components/device_reauth/biometric_authenticator.h"
+#include "components/device_reauth/mock_biometric_authenticator.h"
 #include "components/password_manager/content/browser/content_password_manager_driver.h"
 #include "components/password_manager/content/browser/content_password_manager_driver_factory.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
 #include "components/password_manager/core/browser/credential_cache.h"
-#include "components/password_manager/core/browser/mock_biometric_authenticator.h"
 #include "components/password_manager/core/browser/mock_password_store.h"
 #include "components/password_manager/core/browser/origin_credential_store.h"
 #include "components/password_manager/core/browser/password_form.h"
@@ -64,9 +64,11 @@
 using autofill::UserInfo;
 using autofill::mojom::FocusedFieldType;
 using base::test::RunOnceCallback;
+using device_reauth::BiometricAuthRequester;
+using device_reauth::BiometricsAvailability;
+using device_reauth::MockBiometricAuthenticator;
 using password_manager::CreateEntry;
 using password_manager::CredentialCache;
-using password_manager::MockBiometricAuthenticator;
 using password_manager::MockPasswordStore;
 using password_manager::OriginCredentialStore;
 using password_manager::PasswordForm;
@@ -131,7 +133,7 @@
               (const GURL&),
               (const, override));
 
-  MOCK_METHOD(scoped_refptr<password_manager::BiometricAuthenticator>,
+  MOCK_METHOD(scoped_refptr<device_reauth::BiometricAuthenticator>,
               GetBiometricAuthenticator,
               (),
               (override));
@@ -927,7 +929,7 @@
   EXPECT_CALL(*password_client(), GetBiometricAuthenticator)
       .WillOnce(Return(mock_authenticator_));
   EXPECT_CALL(*mock_authenticator_.get(), CanAuthenticate)
-      .WillOnce(Return(password_manager::BiometricsAvailability::kNotEnrolled));
+      .WillOnce(Return(BiometricsAvailability::kNotEnrolled));
   EXPECT_CALL(*driver(),
               FillIntoFocusedField(selected_field.is_obfuscated(),
                                    Eq(selected_field.display_text())));
@@ -956,10 +958,9 @@
   ON_CALL(*password_client(), GetBiometricAuthenticator)
       .WillByDefault(Return(mock_authenticator_));
   EXPECT_CALL(*mock_authenticator_.get(), CanAuthenticate)
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
-  EXPECT_CALL(
-      *mock_authenticator_.get(),
-      Authenticate(password_manager::BiometricAuthRequester::kFallbackSheet, _))
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
+  EXPECT_CALL(*mock_authenticator_.get(),
+              Authenticate(BiometricAuthRequester::kFallbackSheet, _))
       .WillOnce(RunOnceCallback<1>(/*auth_succeeded=*/true));
   EXPECT_CALL(*driver(),
               FillIntoFocusedField(selected_field.is_obfuscated(),
@@ -989,10 +990,9 @@
   ON_CALL(*password_client(), GetBiometricAuthenticator)
       .WillByDefault(Return(mock_authenticator_));
   EXPECT_CALL(*mock_authenticator_.get(), CanAuthenticate)
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
-  EXPECT_CALL(
-      *mock_authenticator_.get(),
-      Authenticate(password_manager::BiometricAuthRequester::kFallbackSheet, _))
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
+  EXPECT_CALL(*mock_authenticator_.get(),
+              Authenticate(BiometricAuthRequester::kFallbackSheet, _))
       .WillOnce(RunOnceCallback<1>(/*auth_succeeded=*/false));
   EXPECT_CALL(*driver(),
               FillIntoFocusedField(selected_field.is_obfuscated(),
@@ -1023,10 +1023,9 @@
   ON_CALL(*password_client(), GetBiometricAuthenticator)
       .WillByDefault(Return(mock_authenticator_));
   EXPECT_CALL(*mock_authenticator_.get(), CanAuthenticate)
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
   EXPECT_CALL(*mock_authenticator_.get(),
-              Authenticate(
-                  password_manager::BiometricAuthRequester::kFallbackSheet, _));
+              Authenticate(BiometricAuthRequester::kFallbackSheet, _));
 
   EXPECT_CALL(*driver(),
               FillIntoFocusedField(selected_field.is_obfuscated(),
@@ -1035,7 +1034,7 @@
   controller()->OnFillingTriggered(autofill::FieldGlobalId(), selected_field);
 
   EXPECT_CALL(*mock_authenticator_.get(),
-              Cancel(password_manager::BiometricAuthRequester::kFallbackSheet));
+              Cancel(BiometricAuthRequester::kFallbackSheet));
 }
 
 class PasswordAccessoryControllerWithTestStoreTest
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc
index f9e4ebd..ac47cfa 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -25,10 +25,10 @@
 #include "build/buildflag.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/device_reauth/chrome_biometric_authenticator.h"
 #include "chrome/browser/favicon/favicon_service_factory.h"
 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
 #include "chrome/browser/password_manager/account_password_store_factory.h"
-#include "chrome/browser/password_manager/chrome_biometric_authenticator.h"
 #include "chrome/browser/password_manager/field_info_manager_factory.h"
 #include "chrome/browser/password_manager/password_reuse_manager_factory.h"
 #include "chrome/browser/password_manager/password_store_factory.h"
@@ -471,7 +471,7 @@
                                            autofill_assistant::UIState::kShown;
 }
 
-scoped_refptr<password_manager::BiometricAuthenticator>
+scoped_refptr<device_reauth::BiometricAuthenticator>
 ChromePasswordManagerClient::GetBiometricAuthenticator() {
 #if defined(OS_ANDROID)
   if (!biometric_authenticator_) {
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.h b/chrome/browser/password_manager/chrome_password_manager_client.h
index 0561684d..f8bada8 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.h
+++ b/chrome/browser/password_manager/chrome_password_manager_client.h
@@ -129,7 +129,7 @@
   // Returns a pointer to the BiometricAuthenticator which is created on demand.
   // This is currently only implemented for Android, on all other platforms this
   // will always be null.
-  scoped_refptr<password_manager::BiometricAuthenticator>
+  scoped_refptr<device_reauth::BiometricAuthenticator>
   GetBiometricAuthenticator() override;
   void GeneratePassword(
       autofill::password_generation::PasswordGenerationType type) override;
@@ -373,8 +373,7 @@
       generated_password_saved_message_delegate_;
 #endif  // defined(OS_ANDROID)
 
-  scoped_refptr<password_manager::BiometricAuthenticator>
-      biometric_authenticator_;
+  scoped_refptr<device_reauth::BiometricAuthenticator> biometric_authenticator_;
 
   password_manager::ContentPasswordManagerDriverFactory* driver_factory_;
 
diff --git a/chrome/browser/password_manager/password_store_factory.cc b/chrome/browser/password_manager/password_store_factory.cc
index a6c7740..4013ea1 100644
--- a/chrome/browser/password_manager/password_store_factory.cc
+++ b/chrome/browser/password_manager/password_store_factory.cc
@@ -43,18 +43,30 @@
 #endif
 
 using password_manager::PasswordStore;
+using password_manager::PasswordStoreInterface;
 
+// TODO(crbug.com/1218413): Delete this method when the migration to
+// PasswordStoreInterface is complete and rename the method below to
+// GetForProfile.
 // static
 scoped_refptr<PasswordStore> PasswordStoreFactory::GetForProfile(
     Profile* profile,
     ServiceAccessType access_type) {
+  return base::WrapRefCounted(static_cast<PasswordStore*>(
+      GetInterfaceForProfile(profile, access_type).get()));
+}
+
+// static
+scoped_refptr<PasswordStoreInterface>
+PasswordStoreFactory::GetInterfaceForProfile(Profile* profile,
+                                             ServiceAccessType access_type) {
   // |profile| gets always redirected to a non-Incognito profile below, so
   // Incognito & IMPLICIT_ACCESS means that incognito browsing session would
   // result in traces in the normal profile without the user knowing it.
   if (access_type == ServiceAccessType::IMPLICIT_ACCESS &&
       profile->IsOffTheRecord())
     return nullptr;
-  return base::WrapRefCounted(static_cast<password_manager::PasswordStore*>(
+  return base::WrapRefCounted(static_cast<PasswordStoreInterface*>(
       GetInstance()->GetServiceForBrowserContext(profile, true).get()));
 }
 
diff --git a/chrome/browser/password_manager/password_store_factory.h b/chrome/browser/password_manager/password_store_factory.h
index 5c28463..5a2e0cd 100644
--- a/chrome/browser/password_manager/password_store_factory.h
+++ b/chrome/browser/password_manager/password_store_factory.h
@@ -10,6 +10,7 @@
 #include "build/build_config.h"
 #include "components/keyed_service/content/refcounted_browser_context_keyed_service_factory.h"
 #include "components/keyed_service/core/service_access_type.h"
+#include "components/password_manager/core/browser/password_store_interface.h"
 
 class Profile;
 
@@ -26,6 +27,9 @@
       Profile* profile,
       ServiceAccessType set);
 
+  static scoped_refptr<password_manager::PasswordStoreInterface>
+  GetInterfaceForProfile(Profile* profile, ServiceAccessType set);
+
   static PasswordStoreFactory* GetInstance();
 
   // Called by the PasswordModelTypeController whenever there is a possibility
diff --git a/chrome/browser/policy/BUILD.gn b/chrome/browser/policy/BUILD.gn
index 06f606c..fd96ddc 100644
--- a/chrome/browser/policy/BUILD.gn
+++ b/chrome/browser/policy/BUILD.gn
@@ -61,6 +61,8 @@
     sources += [
       "policy_test_utils.cc",
       "policy_test_utils.h",
+      "url_blocking_policy_test_utils.cc",
+      "url_blocking_policy_test_utils.h",
     ]
 
     deps += [
diff --git a/chrome/browser/policy/policy_test_utils.cc b/chrome/browser/policy/policy_test_utils.cc
index ea67256..d6e284f 100644
--- a/chrome/browser/policy/policy_test_utils.cc
+++ b/chrome/browser/policy/policy_test_utils.cc
@@ -61,39 +61,6 @@
   InProcessBrowserTest::SetUp();
 }
 
-void PolicyTest::CheckURLIsBlockedInWebContents(
-    content::WebContents* web_contents,
-    const GURL& url) {
-  EXPECT_EQ(url, web_contents->GetURL());
-
-  std::u16string blocked_page_title;
-  if (url.has_host()) {
-    blocked_page_title = base::UTF8ToUTF16(url.host());
-  } else {
-    // Local file paths show the full URL.
-    blocked_page_title = base::UTF8ToUTF16(url.spec());
-  }
-  EXPECT_EQ(blocked_page_title, web_contents->GetTitle());
-
-  // Verify that the expected error page is being displayed.
-  bool result = false;
-  EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
-      web_contents,
-      "var textContent = document.body.textContent;"
-      "var hasError = textContent.indexOf('ERR_BLOCKED_BY_ADMINISTRATOR') >= 0;"
-      "domAutomationController.send(hasError);",
-      &result));
-  EXPECT_TRUE(result);
-}
-
-void PolicyTest::CheckURLIsBlocked(Browser* browser, const std::string& spec) {
-  GURL url(spec);
-  ui_test_utils::NavigateToURL(browser, url);
-  content::WebContents* contents =
-      browser->tab_strip_model()->GetActiveWebContents();
-  PolicyTest::CheckURLIsBlockedInWebContents(contents, url);
-}
-
 void PolicyTest::SetUpInProcessBrowserTestFixture() {
   base::CommandLine::ForCurrentProcess()->AppendSwitch("noerrdialogs");
   provider_.SetDefaultReturns(true /* is_initialization_complete_return */,
diff --git a/chrome/browser/policy/policy_test_utils.h b/chrome/browser/policy/policy_test_utils.h
index e5b60665..50a99e0 100644
--- a/chrome/browser/policy/policy_test_utils.h
+++ b/chrome/browser/policy/policy_test_utils.h
@@ -10,13 +10,17 @@
 #include "ash/public/cpp/keyboard/keyboard_types.h"
 #include "base/files/file_path.h"
 #include "build/chromeos_buildflags.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/chrome_test_utils.h"
 #include "components/policy/core/common/mock_configuration_policy_provider.h"
 #include "components/security_interstitials/core/controller_client.h"
-#include "content/public/browser/web_contents.h"
 #include "url/gurl.h"
 
+class Browser;
+
+namespace content {
+class WebContents;
+}  // namespace content
+
 namespace extensions {
 class Extension;
 }  // namespace extensions
@@ -29,7 +33,7 @@
 
 void GetTestDataDirectory(base::FilePath* test_data_directory);
 
-class PolicyTest : public InProcessBrowserTest {
+class PolicyTest : public PlatformBrowserTest {
  public:
   // The possibilities for a boolean policy.
   enum class BooleanPolicy {
@@ -50,13 +54,6 @@
 
   void SetUpCommandLine(base::CommandLine* command_line) override;
 
-  // Verifies that access to the given url |spec| is blocked.
-  void CheckURLIsBlockedInWebContents(content::WebContents* web_contents,
-                                      const GURL& url);
-
-  // Verifies that access to the given url |spec| is blocked.
-  void CheckURLIsBlocked(Browser* browser, const std::string& spec);
-
   void SetScreenshotPolicy(bool enabled);
 
   void SetRequireCTForTesting(bool required);
diff --git a/chrome/browser/policy/test/developer_tools_policy_browsertest.cc b/chrome/browser/policy/test/developer_tools_policy_browsertest.cc
index 6fe949b..afbabe9 100644
--- a/chrome/browser/policy/test/developer_tools_policy_browsertest.cc
+++ b/chrome/browser/policy/test/developer_tools_policy_browsertest.cc
@@ -8,6 +8,7 @@
 #include "chrome/browser/devtools/devtools_window_testing.h"
 #include "chrome/browser/policy/policy_test_utils.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/common/url_constants.h"
diff --git a/chrome/browser/policy/test/hide_webstore_icon_policy_browsertest.cc b/chrome/browser/policy/test/hide_webstore_icon_policy_browsertest.cc
index 4a1e62d..f3f1ab2 100644
--- a/chrome/browser/policy/test/hide_webstore_icon_policy_browsertest.cc
+++ b/chrome/browser/policy/test/hide_webstore_icon_policy_browsertest.cc
@@ -5,6 +5,7 @@
 #include "base/command_line.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/policy/policy_test_utils.h"
+#include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/locale_settings.h"
diff --git a/chrome/browser/policy/test/native_messaging_policy_browsertest.cc b/chrome/browser/policy/test/native_messaging_policy_browsertest.cc
index 979239b..2312fce 100644
--- a/chrome/browser/policy/test/native_messaging_policy_browsertest.cc
+++ b/chrome/browser/policy/test/native_messaging_policy_browsertest.cc
@@ -6,6 +6,7 @@
 #include "chrome/browser/extensions/api/chrome_extensions_api_client.h"
 #include "chrome/browser/policy/policy_test_utils.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/policy/core/common/policy_map.h"
diff --git a/chrome/browser/policy/test/note_taking_on_lock_screen_policy_browsertest.cc b/chrome/browser/policy/test/note_taking_on_lock_screen_policy_browsertest.cc
index 8c8aed4..6582c6c8 100644
--- a/chrome/browser/policy/test/note_taking_on_lock_screen_policy_browsertest.cc
+++ b/chrome/browser/policy/test/note_taking_on_lock_screen_policy_browsertest.cc
@@ -10,6 +10,7 @@
 #include "chrome/browser/chromeos/note_taking_helper.h"
 #include "chrome/browser/policy/policy_test_utils.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/policy/core/common/policy_map.h"
diff --git a/chrome/browser/policy/test/policy_test_google_browsertest.cc b/chrome/browser/policy/test/policy_test_google_browsertest.cc
index 2199c8f..1927908 100644
--- a/chrome/browser/policy/test/policy_test_google_browsertest.cc
+++ b/chrome/browser/policy/test/policy_test_google_browsertest.cc
@@ -10,6 +10,7 @@
 #include "base/test/bind.h"
 #include "base/values.h"
 #include "chrome/browser/policy/policy_test_utils.h"
+#include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/common/net/safe_search_util.h"
 #include "chrome/test/base/in_process_browser_test.h"
diff --git a/chrome/browser/policy/test/proxy_policies_browsertest.cc b/chrome/browser/policy/test/proxy_policies_browsertest.cc
index e822ec0..11ab2af 100644
--- a/chrome/browser/policy/test/proxy_policies_browsertest.cc
+++ b/chrome/browser/policy/test/proxy_policies_browsertest.cc
@@ -9,6 +9,7 @@
 #include "chrome/browser/policy/policy_test_utils.h"
 #include "chrome/browser/policy/profile_policy_connector.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
 #include "components/policy/core/common/policy_map.h"
 #include "components/policy/core/common/policy_namespace.h"
 #include "components/policy/core/common/policy_service.h"
diff --git a/chrome/browser/policy/test/restore_on_startup_policy_browsertest.cc b/chrome/browser/policy/test/restore_on_startup_policy_browsertest.cc
index e86ca5b..0f76dc0 100644
--- a/chrome/browser/policy/test/restore_on_startup_policy_browsertest.cc
+++ b/chrome/browser/policy/test/restore_on_startup_policy_browsertest.cc
@@ -9,7 +9,7 @@
 #include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "build/chromeos_buildflags.h"
-#include "chrome/browser/policy/policy_test_utils.h"
+#include "chrome/browser/policy/url_blocking_policy_test_utils.h"
 #include "chrome/browser/prefs/session_startup_pref.h"
 #include "chrome/browser/resource_coordinator/tab_load_tracker_test_support.h"
 #include "chrome/browser/search/search.h"
@@ -50,7 +50,7 @@
 // Similar to PolicyTest but allows setting policies before the browser is
 // created. Each test parameter is a method that sets up the early policies
 // and stores the expected startup URLs in |expected_urls_|.
-class RestoreOnStartupPolicyTest : public PolicyTest,
+class RestoreOnStartupPolicyTest : public UrlBlockingPolicyTest,
                                    public testing::WithParamInterface<void (
                                        RestoreOnStartupPolicyTest::*)(void)> {
  public:
diff --git a/chrome/browser/policy/test/suggested_content_policy_browsertest.cc b/chrome/browser/policy/test/suggested_content_policy_browsertest.cc
index 9565242..3a9319f 100644
--- a/chrome/browser/policy/test/suggested_content_policy_browsertest.cc
+++ b/chrome/browser/policy/test/suggested_content_policy_browsertest.cc
@@ -5,6 +5,7 @@
 #include "ash/constants/ash_pref_names.h"
 #include "chrome/browser/policy/policy_test_utils.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
 #include "components/policy/core/common/policy_map.h"
 #include "components/policy/policy_constants.h"
 #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/policy/test/url_blacklist_policy_browsertest.cc b/chrome/browser/policy/test/url_blacklist_policy_browsertest.cc
index 8585560..0c0d52ca 100644
--- a/chrome/browser/policy/test/url_blacklist_policy_browsertest.cc
+++ b/chrome/browser/policy/test/url_blacklist_policy_browsertest.cc
@@ -11,7 +11,7 @@
 #include "build/build_config.h"
 #include "chrome/browser/apps/app_service/app_launch_params.h"
 #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
-#include "chrome/browser/policy/policy_test_utils.h"
+#include "chrome/browser/policy/url_blocking_policy_test_utils.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_commands.h"
@@ -96,7 +96,7 @@
 
 }  //  namespace
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklist) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlacklist) {
   // Checks that URLs can be blacklisted, and that exceptions can be made to
   // the blacklist.
 
@@ -140,7 +140,7 @@
   CheckCanOpenURL(browser(), kURLS[4]);
 }
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklistIncognito) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlacklistIncognito) {
   // Checks that URLs can be blacklisted, and that exceptions can be made to
   // the blacklist.
 
@@ -187,7 +187,7 @@
   CheckCanOpenURL(incognito_browser, kURLS[4]);
 }
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklistAndWhitelist) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlacklistAndWhitelist) {
   // Regression test for http://crbug.com/755256. Blacklisting * and
   // whitelisting an origin should work.
 
@@ -210,7 +210,7 @@
       embedded_test_server()->GetURL("aaa.com", "/empty.html").spec());
 }
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklistSubresources) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlacklistSubresources) {
   // Checks that an image with a blacklisted URL is loaded, but an iframe with a
   // blacklisted URL is not.
 
@@ -249,7 +249,7 @@
   EXPECT_EQ("error", blacklisted_iframe_load_result);
 }
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklistClientRedirect) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlacklistClientRedirect) {
   // Checks that a client side redirect to a blacklisted URL is blocked.
   ASSERT_TRUE(embedded_test_server()->Start());
 
@@ -280,7 +280,7 @@
             browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
 }
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklistServerRedirect) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlacklistServerRedirect) {
   // Checks that a server side redirect to a blacklisted URL is blocked.
   ASSERT_TRUE(embedded_test_server()->Start());
 
@@ -310,7 +310,7 @@
             browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
 }
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, FileURLBlacklist) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, FileURLBlacklist) {
   // Check that FileURLs can be blacklisted and DisabledSchemes works together
   // with URLblacklisting and URLwhitelisting.
 
@@ -376,7 +376,7 @@
 
 // Tests that javascript-links are handled properly according to blacklist
 // settings, bug crbug/913334.
-IN_PROC_BROWSER_TEST_F(PolicyTest, JavascriptBlacklistable) {
+IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, JavascriptBlacklistable) {
   embedded_test_server()->RegisterRequestHandler(
       base::BindRepeating(&JSIncrementerPageHandler));
   ASSERT_TRUE(embedded_test_server()->Start());
diff --git a/chrome/browser/policy/url_blocking_policy_test_utils.cc b/chrome/browser/policy/url_blocking_policy_test_utils.cc
new file mode 100644
index 0000000..26a1fe53
--- /dev/null
+++ b/chrome/browser/policy/url_blocking_policy_test_utils.cc
@@ -0,0 +1,59 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/policy/url_blocking_policy_test_utils.h"
+
+#include <string>
+
+#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/test_utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+using content::BrowserThread;
+
+namespace policy {
+
+UrlBlockingPolicyTest::UrlBlockingPolicyTest() = default;
+
+UrlBlockingPolicyTest::~UrlBlockingPolicyTest() = default;
+
+void UrlBlockingPolicyTest::CheckURLIsBlockedInWebContents(
+    content::WebContents* web_contents,
+    const GURL& url) {
+  EXPECT_EQ(url, web_contents->GetURL());
+
+  std::u16string blocked_page_title;
+  if (url.has_host()) {
+    blocked_page_title = base::UTF8ToUTF16(url.host());
+  } else {
+    // Local file paths show the full URL.
+    blocked_page_title = base::UTF8ToUTF16(url.spec());
+  }
+  EXPECT_EQ(blocked_page_title, web_contents->GetTitle());
+
+  // Verify that the expected error page is being displayed.
+  bool result = false;
+  EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
+      web_contents,
+      "var textContent = document.body.textContent;"
+      "var hasError = textContent.indexOf('ERR_BLOCKED_BY_ADMINISTRATOR') >= 0;"
+      "domAutomationController.send(hasError);",
+      &result));
+  EXPECT_TRUE(result);
+}
+
+void UrlBlockingPolicyTest::CheckURLIsBlocked(Browser* browser,
+                                              const std::string& spec) {
+  GURL url(spec);
+  ui_test_utils::NavigateToURL(browser, url);
+  content::WebContents* contents =
+      browser->tab_strip_model()->GetActiveWebContents();
+  CheckURLIsBlockedInWebContents(contents, url);
+}
+
+}  // namespace policy
diff --git a/chrome/browser/policy/url_blocking_policy_test_utils.h b/chrome/browser/policy/url_blocking_policy_test_utils.h
new file mode 100644
index 0000000..9ea0d64
--- /dev/null
+++ b/chrome/browser/policy/url_blocking_policy_test_utils.h
@@ -0,0 +1,36 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_POLICY_URL_BLOCKING_POLICY_TEST_UTILS_H_
+#define CHROME_BROWSER_POLICY_URL_BLOCKING_POLICY_TEST_UTILS_H_
+
+#include <string>
+
+#include "chrome/browser/policy/policy_test_utils.h"
+
+class Browser;
+class GURL;
+
+namespace content {
+class WebContents;
+}  // namespace content
+
+namespace policy {
+
+class UrlBlockingPolicyTest : public PolicyTest {
+ protected:
+  UrlBlockingPolicyTest();
+  ~UrlBlockingPolicyTest() override;
+
+  // Verifies that access to the given url |spec| is blocked.
+  void CheckURLIsBlockedInWebContents(content::WebContents* web_contents,
+                                      const GURL& url);
+
+  // Verifies that access to the given url |spec| is blocked.
+  void CheckURLIsBlocked(Browser* browser, const std::string& spec);
+};
+
+}  // namespace policy
+
+#endif  // CHROME_BROWSER_POLICY_URL_BLOCKING_POLICY_TEST_UTILS_H_
diff --git a/chrome/browser/printing/cloud_print/cloud_print_printer_list.cc b/chrome/browser/printing/cloud_print/cloud_print_printer_list.cc
deleted file mode 100644
index 6f0ef36..0000000
--- a/chrome/browser/printing/cloud_print/cloud_print_printer_list.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/cloud_print_printer_list.h"
-
-#include "base/values.h"
-#include "chrome/common/cloud_print/cloud_print_constants.h"
-#include "components/cloud_devices/common/cloud_devices_urls.h"
-
-namespace cloud_print {
-
-CloudPrintPrinterList::Delegate::~Delegate() {}
-
-CloudPrintPrinterList::CloudPrintPrinterList(Delegate* delegate)
-    : delegate_(delegate) {}
-
-CloudPrintPrinterList::~CloudPrintPrinterList() {
-}
-
-void CloudPrintPrinterList::OnGCDApiFlowError(GCDApiFlow::Status status) {
-  delegate_->OnDeviceListUnavailable();
-}
-
-void CloudPrintPrinterList::OnGCDApiFlowComplete(
-    const base::DictionaryValue& value) {
-  const base::ListValue* printers;
-  if (!value.GetList(cloud_print::kPrinterListValue, &printers)) {
-    delegate_->OnDeviceListUnavailable();
-    return;
-  }
-
-  DeviceList devices;
-  for (const auto& printer : printers->GetList()) {
-    const base::DictionaryValue* printer_dict;
-    if (!printer.GetAsDictionary(&printer_dict))
-      continue;
-
-    Device printer_details;
-    if (!FillPrinterDetails(*printer_dict, &printer_details))
-      continue;
-
-    devices.push_back(printer_details);
-  }
-
-  delegate_->OnDeviceListReady(devices);
-}
-
-GURL CloudPrintPrinterList::GetURL() {
-  return cloud_devices::GetCloudPrintRelativeURL("search");
-}
-
-GCDApiFlow::Request::NetworkTrafficAnnotation
-CloudPrintPrinterList::GetNetworkTrafficAnnotationType() {
-  return TYPE_SEARCH;
-}
-
-bool CloudPrintPrinterList::FillPrinterDetails(
-    const base::DictionaryValue& printer_value,
-    Device* printer_details) {
-  if (!printer_value.GetString(cloud_print::kIdValue, &printer_details->id))
-    return false;
-
-  if (!printer_value.GetString(cloud_print::kDisplayNameValue,
-                               &printer_details->display_name)) {
-    return false;
-  }
-
-  // Non-essential.
-  printer_value.GetString(cloud_print::kPrinterDescValue,
-                          &printer_details->description);
-
-  return true;
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/cloud_print_printer_list.h b/chrome/browser/printing/cloud_print/cloud_print_printer_list.h
deleted file mode 100644
index 01abe9e..0000000
--- a/chrome/browser/printing/cloud_print/cloud_print_printer_list.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_CLOUD_PRINT_PRINTER_LIST_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_CLOUD_PRINT_PRINTER_LIST_H_
-
-#include <string>
-#include <vector>
-
-#include "chrome/browser/printing/cloud_print/gcd_api_flow.h"
-
-namespace cloud_print {
-
-class CloudPrintPrinterList : public CloudPrintApiFlowRequest {
- public:
-  struct Device {
-    std::string id;
-    std::string display_name;
-    std::string description;
-  };
-  using DeviceList = std::vector<Device>;
-
-  class Delegate {
-   public:
-    virtual ~Delegate();
-
-    virtual void OnDeviceListReady(const DeviceList& devices) = 0;
-    virtual void OnDeviceListUnavailable() = 0;
-  };
-
-  explicit CloudPrintPrinterList(Delegate* delegate);
-  ~CloudPrintPrinterList() override;
-
-  // CloudPrintApiFlowRequest implementation:
-  void OnGCDApiFlowError(GCDApiFlow::Status status) override;
-  void OnGCDApiFlowComplete(const base::DictionaryValue& value) override;
-  GURL GetURL() override;
-  NetworkTrafficAnnotation GetNetworkTrafficAnnotationType() override;
-
- private:
-  bool FillPrinterDetails(const base::DictionaryValue& printer_value,
-                          Device* printer_details);
-
-  Delegate* const delegate_;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_CLOUD_PRINT_PRINTER_LIST_H_
diff --git a/chrome/browser/printing/cloud_print/cloud_print_printer_list_unittest.cc b/chrome/browser/printing/cloud_print/cloud_print_printer_list_unittest.cc
deleted file mode 100644
index b064d03..0000000
--- a/chrome/browser/printing/cloud_print/cloud_print_printer_list_unittest.cc
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/cloud_print_printer_list.h"
-
-#include <stddef.h>
-
-#include <memory>
-#include <set>
-
-#include "base/json/json_reader.h"
-#include "base/values.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::Mock;
-using testing::SaveArg;
-using testing::StrictMock;
-using testing::_;
-
-namespace cloud_print {
-
-namespace {
-
-const char kSampleSuccessResponseOAuth[] = "{"
-    "   \"success\": true,"
-    "   \"printers\": ["
-    "     {\"id\" : \"someID\","
-    "      \"displayName\": \"someDisplayName\","
-    "      \"description\": \"someDescription\"}"
-    "    ]"
-    "}";
-
-class MockDelegate : public CloudPrintPrinterList::Delegate {
- public:
-  MOCK_METHOD1(OnDeviceListReady,
-               void(const CloudPrintPrinterList::DeviceList&));
-  MOCK_METHOD0(OnDeviceListUnavailable, void());
-};
-
-TEST(CloudPrintPrinterListTest, Params) {
-  CloudPrintPrinterList device_list(NULL);
-  EXPECT_EQ(GURL("https://www.google.com/cloudprint/search"),
-            device_list.GetURL());
-  EXPECT_EQ("https://www.googleapis.com/auth/cloudprint",
-            device_list.GetOAuthScope());
-  EXPECT_FALSE(device_list.GetExtraRequestHeaders().empty());
-}
-
-TEST(CloudPrintPrinterListTest, Parsing) {
-  StrictMock<MockDelegate> delegate;
-  CloudPrintPrinterList device_list(&delegate);
-  CloudPrintPrinterList::DeviceList devices;
-  EXPECT_CALL(delegate, OnDeviceListReady(_)).WillOnce(SaveArg<0>(&devices));
-
-  absl::optional<base::Value> value =
-      base::JSONReader::Read(kSampleSuccessResponseOAuth);
-  ASSERT_TRUE(value);
-  const base::DictionaryValue* dictionary = NULL;
-  ASSERT_TRUE(value->GetAsDictionary(&dictionary));
-  device_list.OnGCDApiFlowComplete(*dictionary);
-
-  Mock::VerifyAndClear(&delegate);
-
-  std::set<std::string> ids_expected;
-  ids_expected.insert("someID");
-
-  std::set<std::string> ids_found;
-  for (const auto& device : devices)
-    ids_found.insert(device.id);
-
-  ASSERT_EQ(ids_expected, ids_found);
-  EXPECT_EQ("someID", devices[0].id);
-  EXPECT_EQ("someDisplayName", devices[0].display_name);
-  EXPECT_EQ("someDescription", devices[0].description);
-}
-
-}  // namespace
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/device_description.cc b/chrome/browser/printing/cloud_print/device_description.cc
deleted file mode 100644
index 2eb96ba..0000000
--- a/chrome/browser/printing/cloud_print/device_description.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/device_description.h"
-
-#include <vector>
-
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "chrome/browser/local_discovery/service_discovery_client.h"
-#include "chrome/browser/printing/cloud_print/privet_constants.h"
-
-namespace cloud_print {
-
-namespace {
-
-std::string GetValueByName(const std::vector<std::string>& metadata,
-                           const std::string& name) {
-  std::string prefix(name + "=");
-  for (const std::string& record : metadata) {
-    if (base::StartsWith(record, prefix,
-                         base::CompareCase::INSENSITIVE_ASCII)) {
-      return record.substr(prefix.size());
-    }
-  }
-  return std::string();
-}
-
-}  // namespace
-
-DeviceDescription::DeviceDescription() : version(0) {
-}
-
-DeviceDescription::DeviceDescription(
-    const local_discovery::ServiceDescription& service_description) {
-  address = service_description.address;
-
-  const std::vector<std::string>& metadata = service_description.metadata;
-  if (!base::StringToInt(GetValueByName(metadata, kPrivetTxtKeyVersion),
-                         &version)) {
-    version = 0;
-  }
-  name = GetValueByName(metadata, kPrivetTxtKeyName);
-  description = GetValueByName(metadata, kPrivetTxtKeyDescription);
-  if (version >= 3) {
-    type = GetValueByName(metadata, kPrivetTxtKeyDevicesClass);
-    id = GetValueByName(metadata, kPrivetTxtKeyGcdID);
-  } else {
-    type = GetValueByName(metadata, kPrivetTxtKeyType);
-    id = GetValueByName(metadata, kPrivetTxtKeyID);
-  }
-}
-
-DeviceDescription::DeviceDescription(const DeviceDescription& other) = default;
-
-DeviceDescription::~DeviceDescription() {
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/device_description.h b/chrome/browser/printing/cloud_print/device_description.h
deleted file mode 100644
index e46242f..0000000
--- a/chrome/browser/printing/cloud_print/device_description.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_DEVICE_DESCRIPTION_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_DEVICE_DESCRIPTION_H_
-
-#include <string>
-
-#include "net/base/host_port_pair.h"
-
-namespace local_discovery {
-struct ServiceDescription;
-}
-
-namespace cloud_print {
-
-struct DeviceDescription {
-  DeviceDescription();
-  explicit DeviceDescription(
-      const local_discovery::ServiceDescription& service_description);
-  DeviceDescription(const DeviceDescription& other);
-  ~DeviceDescription();
-
-  bool IsValid() const;
-
-  // Display attributes
-  std::string name;
-  std::string description;
-
-  // Functional attributes
-  std::string id;
-  std::string type;
-  int version;
-
-  // Attributes related to local HTTP
-  net::HostPortPair address;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_DEVICE_DESCRIPTION_H_
diff --git a/chrome/browser/printing/cloud_print/gcd_api_flow.cc b/chrome/browser/printing/cloud_print/gcd_api_flow.cc
deleted file mode 100644
index 98b2012..0000000
--- a/chrome/browser/printing/cloud_print/gcd_api_flow.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/gcd_api_flow.h"
-
-#include <memory>
-
-#include "chrome/browser/printing/cloud_print/gcd_api_flow_impl.h"
-#include "chrome/browser/printing/cloud_print/gcd_constants.h"
-#include "chrome/common/cloud_print/cloud_print_constants.h"
-#include "components/cloud_devices/common/cloud_devices_urls.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-
-namespace cloud_print {
-
-GCDApiFlow::Request::~Request() {
-}
-
-std::unique_ptr<GCDApiFlow> GCDApiFlow::Create(
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-    signin::IdentityManager* identity_manager) {
-  return std::make_unique<GCDApiFlowImpl>(url_loader_factory, identity_manager);
-}
-
-GCDApiFlow::GCDApiFlow() {
-}
-
-GCDApiFlow::~GCDApiFlow() {
-}
-
-CloudPrintApiFlowRequest::CloudPrintApiFlowRequest() {
-}
-
-CloudPrintApiFlowRequest::~CloudPrintApiFlowRequest() {
-}
-
-std::string CloudPrintApiFlowRequest::GetOAuthScope() {
-  return cloud_devices::kCloudPrintAuthScope;
-}
-
-std::vector<std::pair<std::string, std::string>>
-CloudPrintApiFlowRequest::GetExtraRequestHeaders() {
-  return std::vector<std::pair<std::string, std::string>>(
-      1, std::make_pair(cloud_print::kChromeCloudPrintProxyHeaderName,
-                        cloud_print::kChromeCloudPrintProxyHeaderValue));
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/gcd_api_flow.h b/chrome/browser/printing/cloud_print/gcd_api_flow.h
deleted file mode 100644
index 788e0afd..0000000
--- a/chrome/browser/printing/cloud_print/gcd_api_flow.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_API_FLOW_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_API_FLOW_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/memory/scoped_refptr.h"
-#include "net/traffic_annotation/network_traffic_annotation.h"
-#include "url/gurl.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-namespace signin {
-class IdentityManager;
-}
-
-namespace network {
-class SharedURLLoaderFactory;
-}
-
-namespace cloud_print {
-
-// API flow for communicating with cloud print and cloud devices.
-class GCDApiFlow {
- public:
-  // TODO(noamsml): Better error model for this class.
-  enum Status {
-    SUCCESS,
-    ERROR_TOKEN,
-    ERROR_NETWORK,
-    ERROR_HTTP_CODE,
-    ERROR_FROM_SERVER,
-    ERROR_MALFORMED_RESPONSE
-  };
-
-  // Provides GCDApiFlowImpl with parameters required to make request.
-  // Parses results of requests.
-  class Request {
-   public:
-    enum NetworkTrafficAnnotation {
-      TYPE_SEARCH,
-      TYPE_PRIVET_REGISTER,
-    };
-
-    virtual ~Request();
-
-    // Called if the API flow fails.
-    virtual void OnGCDApiFlowError(Status status) = 0;
-
-    // Called when the API flow finishes.
-    virtual void OnGCDApiFlowComplete(const base::DictionaryValue& value) = 0;
-
-    // Returns the URL for this request.
-    virtual GURL GetURL() = 0;
-
-    // Returns the scope parameter for use with OAuth.
-    virtual std::string GetOAuthScope() = 0;
-
-    // Returns extra headers, if any, to send with this request.
-    virtual std::vector<
-        std::pair<std::string /* name */, std::string /* value */>>
-    GetExtraRequestHeaders() = 0;
-
-    // Returns the network traffic annotation tag for this request.
-    virtual NetworkTrafficAnnotation GetNetworkTrafficAnnotationType() = 0;
-  };
-
-  GCDApiFlow();
-  virtual ~GCDApiFlow();
-
-  static std::unique_ptr<GCDApiFlow> Create(
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-      signin::IdentityManager* identity_manager);
-
-  virtual void Start(std::unique_ptr<Request> request) = 0;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(GCDApiFlow);
-};
-
-class CloudPrintApiFlowRequest : public GCDApiFlow::Request {
- public:
-  CloudPrintApiFlowRequest();
-  ~CloudPrintApiFlowRequest() override;
-
-  // GCDApiFlowRequest implementation
-  std::string GetOAuthScope() override;
-  std::vector<std::pair<std::string, std::string>> GetExtraRequestHeaders()
-      override;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(CloudPrintApiFlowRequest);
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_API_FLOW_H_
diff --git a/chrome/browser/printing/cloud_print/gcd_api_flow_impl.cc b/chrome/browser/printing/cloud_print/gcd_api_flow_impl.cc
deleted file mode 100644
index 072d81c..0000000
--- a/chrome/browser/printing/cloud_print/gcd_api_flow_impl.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/gcd_api_flow_impl.h"
-
-#include <stddef.h>
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/json/json_reader.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/stringprintf.h"
-#include "base/values.h"
-#include "chrome/browser/printing/cloud_print/gcd_constants.h"
-#include "chrome/common/cloud_print/cloud_print_constants.h"
-#include "components/cloud_devices/common/cloud_devices_urls.h"
-#include "components/signin/public/identity_manager/identity_manager.h"
-#include "components/signin/public/identity_manager/primary_account_access_token_fetcher.h"
-#include "components/signin/public/identity_manager/scope_set.h"
-#include "google_apis/gaia/google_service_auth_error.h"
-#include "net/base/load_flags.h"
-#include "net/base/net_errors.h"
-#include "net/base/url_util.h"
-#include "net/http/http_status_code.h"
-#include "services/network/public/cpp/resource_request.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "services/network/public/cpp/simple_url_loader.h"
-#include "services/network/public/mojom/url_response_head.mojom.h"
-
-using net::DefineNetworkTrafficAnnotation;
-
-namespace cloud_print {
-
-namespace {
-
-const char kCloudPrintOAuthHeaderKey[] = "Authorization";
-const char kCloudPrintOAuthHeaderValueFormat[] = "Bearer %s";
-constexpr size_t kMaxContentSize = 1 * 1024 * 1024;
-
-const std::string GetOAuthHeaderValue(const std::string& token) {
-  return base::StringPrintf(kCloudPrintOAuthHeaderValueFormat, token.c_str());
-}
-
-net::NetworkTrafficAnnotationTag GetNetworkTrafficAnnotation(
-    GCDApiFlow::Request::NetworkTrafficAnnotation type) {
-  if (type == CloudPrintApiFlowRequest::TYPE_PRIVET_REGISTER) {
-    return DefineNetworkTrafficAnnotation("cloud_print_privet_register", R"(
-        semantics {
-          sender: "Cloud Print"
-          description:
-            "Registers a locally discovered Privet printer with a Cloud Print "
-            "Server."
-          trigger:
-            "Users can select Privet printers on chrome://devices/ and "
-            "register them."
-          data:
-            "Token id for a printer retrieved from a previous request to a "
-            "Cloud Print Server."
-          destination: OTHER
-        }
-        policy {
-          cookies_allowed: NO
-          setting: "User triggered requests cannot be disabled."
-          policy_exception_justification: "Not implemented, it's good to do so."
-        })");
-  } else {
-    DCHECK_EQ(CloudPrintApiFlowRequest::TYPE_SEARCH, type);
-    return DefineNetworkTrafficAnnotation("cloud_print_search", R"(
-        semantics {
-          sender: "Cloud Print"
-          description:
-            "Queries a Cloud Print Server for the list of printers."
-          trigger:
-            "chrome://devices/ fetches the list when the user logs in, "
-            "re-enable the Cloud Print service, or manually requests a printer "
-            "list refresh."
-          data: "None"
-          destination: OTHER
-        }
-        policy {
-          cookies_allowed: NO
-          setting: "User triggered requests cannot be disabled."
-          policy_exception_justification: "Not implemented, it's good to do so."
-        })");
-  }
-}
-
-}  // namespace
-
-GCDApiFlowImpl::GCDApiFlowImpl(
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-    signin::IdentityManager* identity_manager)
-    : url_loader_factory_(url_loader_factory),
-      identity_manager_(identity_manager) {}
-
-GCDApiFlowImpl::~GCDApiFlowImpl() {}
-
-void GCDApiFlowImpl::Start(std::unique_ptr<Request> request) {
-  request_ = std::move(request);
-  signin::ScopeSet oauth_scopes;
-  oauth_scopes.insert(request_->GetOAuthScope());
-  DCHECK(identity_manager_);
-  token_fetcher_ = std::make_unique<signin::PrimaryAccountAccessTokenFetcher>(
-      "cloud_print", identity_manager_, oauth_scopes,
-      base::BindOnce(&GCDApiFlowImpl::OnAccessTokenFetchComplete,
-                     base::Unretained(this)),
-      signin::PrimaryAccountAccessTokenFetcher::Mode::kImmediate);
-}
-
-void GCDApiFlowImpl::OnAccessTokenFetchComplete(
-    GoogleServiceAuthError error,
-    signin::AccessTokenInfo access_token_info) {
-  token_fetcher_.reset();
-
-  if (error.state() != GoogleServiceAuthError::NONE) {
-    request_->OnGCDApiFlowError(ERROR_TOKEN);
-    return;
-  }
-
-  auto request = std::make_unique<network::ResourceRequest>();
-  request->url = request_->GetURL();
-
-  request->credentials_mode = network::mojom::CredentialsMode::kOmit;
-
-  request->headers.SetHeader(kCloudPrintOAuthHeaderKey,
-                             GetOAuthHeaderValue(access_token_info.token));
-
-  auto extra_headers = request_->GetExtraRequestHeaders();
-  for (const auto& header : extra_headers) {
-    request->headers.SetHeader(header.first, header.second);
-  }
-
-  url_loader_ = network::SimpleURLLoader::Create(
-      std::move(request),
-      GetNetworkTrafficAnnotation(request_->GetNetworkTrafficAnnotationType()));
-
-  url_loader_->SetAllowHttpErrorResults(true);
-
-  url_loader_->DownloadToString(
-      url_loader_factory_.get(),
-      base::BindOnce(&GCDApiFlowImpl::OnDownloadedToString,
-                     weak_factory_.GetWeakPtr()),
-      kMaxContentSize);
-}
-
-void GCDApiFlowImpl::OnDownloadedToString(
-    std::unique_ptr<std::string> response_body) {
-  const network::mojom::URLResponseHead* response_info =
-      url_loader_->ResponseInfo();
-
-  if (url_loader_->NetError() != net::OK || !response_info) {
-    request_->OnGCDApiFlowError(ERROR_NETWORK);
-    return;
-  }
-
-  if (response_info->headers &&
-      response_info->headers->response_code() != net::HTTP_OK) {
-    request_->OnGCDApiFlowError(ERROR_HTTP_CODE);
-    return;
-  }
-
-  absl::optional<base::Value> value = base::JSONReader::Read(*response_body);
-  const base::DictionaryValue* dictionary_value = NULL;
-
-  if (!value || !value->GetAsDictionary(&dictionary_value)) {
-    request_->OnGCDApiFlowError(ERROR_MALFORMED_RESPONSE);
-    return;
-  }
-
-  request_->OnGCDApiFlowComplete(*dictionary_value);
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/gcd_api_flow_impl.h b/chrome/browser/printing/cloud_print/gcd_api_flow_impl.h
deleted file mode 100644
index 29a97fd7..0000000
--- a/chrome/browser/printing/cloud_print/gcd_api_flow_impl.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_API_FLOW_IMPL_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_API_FLOW_IMPL_H_
-
-#include <memory>
-#include <string>
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "chrome/browser/printing/cloud_print/gcd_api_flow.h"
-#include "components/signin/public/identity_manager/access_token_info.h"
-
-namespace signin {
-class PrimaryAccountAccessTokenFetcher;
-}
-namespace network {
-class SimpleURLLoader;
-class SharedURLLoaderFactory;
-}  // namespace network
-class GoogleServiceAuthError;
-
-namespace cloud_print {
-
-class GCDApiFlowImpl : public GCDApiFlow {
- public:
-  // Create an OAuth2-based confirmation.
-  GCDApiFlowImpl(
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-      signin::IdentityManager* identity_manager);
-  ~GCDApiFlowImpl() override;
-
-  // GCDApiFlow implementation:
-  void Start(std::unique_ptr<Request> request) override;
-
-  void OnAccessTokenFetchComplete(GoogleServiceAuthError error,
-                                  signin::AccessTokenInfo access_token_info);
-
- private:
-  void OnDownloadedToString(std::unique_ptr<std::string> response_body);
-
-  std::unique_ptr<network::SimpleURLLoader> url_loader_;
-  std::unique_ptr<signin::PrimaryAccountAccessTokenFetcher> token_fetcher_;
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-  signin::IdentityManager* identity_manager_;
-  std::unique_ptr<Request> request_;
-  base::WeakPtrFactory<GCDApiFlowImpl> weak_factory_{this};
-
-  DISALLOW_COPY_AND_ASSIGN(GCDApiFlowImpl);
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_API_FLOW_IMPL_H_
diff --git a/chrome/browser/printing/cloud_print/gcd_api_flow_unittest.cc b/chrome/browser/printing/cloud_print/gcd_api_flow_unittest.cc
deleted file mode 100644
index 514ce56..0000000
--- a/chrome/browser/printing/cloud_print/gcd_api_flow_unittest.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/gcd_api_flow.h"
-
-#include <memory>
-#include <set>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/containers/contains.h"
-#include "base/run_loop.h"
-#include "base/test/bind.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/values.h"
-#include "chrome/browser/printing/cloud_print/gcd_api_flow_impl.h"
-#include "components/signin/public/identity_manager/identity_test_environment.h"
-#include "content/public/test/browser_task_environment.h"
-#include "google_apis/gaia/google_service_auth_error.h"
-#include "net/base/host_port_pair.h"
-#include "net/base/net_errors.h"
-#include "net/http/http_request_headers.h"
-#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
-#include "services/network/test/test_url_loader_factory.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::_;
-using testing::Invoke;
-using testing::Return;
-using testing::WithArgs;
-
-namespace cloud_print {
-
-namespace {
-
-const char kConfirmRequest[] =
-    "https://www.google.com/cloudprint/confirm?token=SomeToken";
-
-const char kSampleConfirmResponse[] = "{}";
-
-const char kFailedConfirmResponseBadJson[] = "[]";
-
-const char kAccountId[] = "account_id@gmail.com";
-
-class MockDelegate : public CloudPrintApiFlowRequest {
- public:
-  MOCK_METHOD1(OnGCDApiFlowError, void(GCDApiFlow::Status));
-  MOCK_METHOD1(OnGCDApiFlowComplete, void(const base::DictionaryValue&));
-  MOCK_METHOD0(GetURL, GURL());
-  MOCK_METHOD0(GetNetworkTrafficAnnotationType,
-               GCDApiFlow::Request::NetworkTrafficAnnotation());
-};
-
-class GCDApiFlowTest : public testing::Test {
- public:
-  GCDApiFlowTest()
-      : test_shared_url_loader_factory_(
-            base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
-                &test_url_loader_factory_)) {}
-
-  ~GCDApiFlowTest() override {}
-
- protected:
-  void SetUp() override {
-    identity_test_environment_.MakePrimaryAccountAvailable(
-        kAccountId, signin::ConsentLevel::kSync);
-
-    std::unique_ptr<MockDelegate> delegate = std::make_unique<MockDelegate>();
-    mock_delegate_ = delegate.get();
-    EXPECT_CALL(*mock_delegate_, GetURL())
-        .WillRepeatedly(Return(
-            GURL("https://www.google.com/cloudprint/confirm?token=SomeToken")));
-    gcd_flow_ = std::make_unique<GCDApiFlowImpl>(
-        test_shared_url_loader_factory_.get(),
-        identity_test_environment_.identity_manager());
-    gcd_flow_->Start(std::move(delegate));
-  }
-
-  network::TestURLLoaderFactory test_url_loader_factory_;
-  std::unique_ptr<GCDApiFlowImpl> gcd_flow_;
-  MockDelegate* mock_delegate_;
-
- private:
-  content::BrowserTaskEnvironment task_environment_;
-  signin::IdentityTestEnvironment identity_test_environment_;
-  scoped_refptr<network::WeakWrapperSharedURLLoaderFactory>
-      test_shared_url_loader_factory_;
-};
-
-TEST_F(GCDApiFlowTest, SuccessOAuth2) {
-  std::set<GURL> requested_urls;
-  test_url_loader_factory_.SetInterceptor(
-      base::BindLambdaForTesting([&](const network::ResourceRequest& request) {
-        requested_urls.insert(request.url);
-        std::string oauth_header;
-        EXPECT_TRUE(request.headers.GetHeader("Authorization", &oauth_header));
-        EXPECT_EQ("Bearer SomeToken", oauth_header);
-
-        std::string proxy;
-        EXPECT_TRUE(request.headers.GetHeader("X-Cloudprint-Proxy", &proxy));
-        EXPECT_EQ("Chrome", proxy);
-      }));
-
-  gcd_flow_->OnAccessTokenFetchComplete(
-      GoogleServiceAuthError::AuthErrorNone(),
-      signin::AccessTokenInfo(
-          "SomeToken", base::Time::Now() + base::TimeDelta::FromHours(1),
-          std::string() /* No extra information needed for this test */));
-
-  EXPECT_TRUE(base::Contains(requested_urls, GURL(kConfirmRequest)));
-
-  test_url_loader_factory_.AddResponse(kConfirmRequest, kSampleConfirmResponse);
-
-  base::RunLoop run_loop;
-  EXPECT_CALL(*mock_delegate_, OnGCDApiFlowComplete(_))
-      .WillOnce(testing::InvokeWithoutArgs([&]() { run_loop.Quit(); }));
-  run_loop.Run();
-}
-
-TEST_F(GCDApiFlowTest, BadToken) {
-  EXPECT_CALL(*mock_delegate_, OnGCDApiFlowError(GCDApiFlow::ERROR_TOKEN));
-  gcd_flow_->OnAccessTokenFetchComplete(
-      GoogleServiceAuthError(GoogleServiceAuthError::USER_NOT_SIGNED_UP),
-      signin::AccessTokenInfo());
-}
-
-TEST_F(GCDApiFlowTest, BadJson) {
-  std::set<GURL> requested_urls;
-  test_url_loader_factory_.SetInterceptor(
-      base::BindLambdaForTesting([&](const network::ResourceRequest& request) {
-        requested_urls.insert(request.url);
-      }));
-
-  gcd_flow_->OnAccessTokenFetchComplete(
-      GoogleServiceAuthError::AuthErrorNone(),
-      signin::AccessTokenInfo(
-          "SomeToken", base::Time::Now() + base::TimeDelta::FromHours(1),
-          std::string() /* No extra information needed for this test */));
-
-  EXPECT_TRUE(base::Contains(requested_urls, GURL(kConfirmRequest)));
-  test_url_loader_factory_.AddResponse(kConfirmRequest,
-                                       kFailedConfirmResponseBadJson);
-  base::RunLoop run_loop;
-  EXPECT_CALL(*mock_delegate_,
-              OnGCDApiFlowError(GCDApiFlow::ERROR_MALFORMED_RESPONSE))
-      .WillOnce(testing::InvokeWithoutArgs([&]() { run_loop.Quit(); }));
-  run_loop.Run();
-}
-
-}  // namespace
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/gcd_constants.cc b/chrome/browser/printing/cloud_print/gcd_constants.cc
deleted file mode 100644
index 7ed8371..0000000
--- a/chrome/browser/printing/cloud_print/gcd_constants.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/gcd_constants.h"
-
-namespace cloud_print {
-
-const char kGCDKeyKind[] = "kind";
-const char kGCDKeyDeviceId[] = "deviceId";
-const char kGCDTypePrinter[] = "printer";
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/gcd_constants.h b/chrome/browser/printing/cloud_print/gcd_constants.h
deleted file mode 100644
index 9fc2b97c..0000000
--- a/chrome/browser/printing/cloud_print/gcd_constants.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_CONSTANTS_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_CONSTANTS_H_
-
-namespace cloud_print {
-
-extern const char kGCDKeyKind[];
-extern const char kGCDKeyDeviceId[];
-extern const char kGCDTypePrinter[];
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_GCD_CONSTANTS_H_
diff --git a/chrome/browser/printing/cloud_print/privet_confirm_api_flow.cc b/chrome/browser/printing/cloud_print/privet_confirm_api_flow.cc
deleted file mode 100644
index 8485c06..0000000
--- a/chrome/browser/printing/cloud_print/privet_confirm_api_flow.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_confirm_api_flow.h"
-
-#include "base/values.h"
-#include "chrome/browser/printing/cloud_print/gcd_api_flow.h"
-#include "chrome/browser/printing/cloud_print/gcd_constants.h"
-#include "chrome/browser/printing/cloud_print/privet_constants.h"
-#include "chrome/common/cloud_print/cloud_print_constants.h"
-#include "components/cloud_devices/common/cloud_devices_urls.h"
-#include "net/base/url_util.h"
-
-namespace cloud_print {
-
-PrivetConfirmApiCallFlow::PrivetConfirmApiCallFlow(const std::string& token,
-                                                   ResponseCallback callback)
-    : callback_(std::move(callback)), token_(token) {}
-
-PrivetConfirmApiCallFlow::~PrivetConfirmApiCallFlow() {
-}
-
-void PrivetConfirmApiCallFlow::OnGCDApiFlowError(GCDApiFlow::Status status) {
-  if (callback_)
-    std::move(callback_).Run(status);
-}
-
-void PrivetConfirmApiCallFlow::OnGCDApiFlowComplete(
-    const base::DictionaryValue& value) {
-  if (!callback_)
-    return;
-
-  bool success = false;
-  if (!value.GetBoolean(cloud_print::kSuccessValue, &success)) {
-    std::move(callback_).Run(GCDApiFlow::ERROR_MALFORMED_RESPONSE);
-    return;
-  }
-
-  std::move(callback_).Run(success ? GCDApiFlow::SUCCESS
-                                   : GCDApiFlow::ERROR_FROM_SERVER);
-}
-
-GURL PrivetConfirmApiCallFlow::GetURL() {
-  return net::AppendQueryParameter(
-      cloud_devices::GetCloudPrintRelativeURL("confirm"), "token", token_);
-}
-
-GCDApiFlow::Request::NetworkTrafficAnnotation
-PrivetConfirmApiCallFlow::GetNetworkTrafficAnnotationType() {
-  return TYPE_PRIVET_REGISTER;
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_confirm_api_flow.h b/chrome/browser/printing/cloud_print/privet_confirm_api_flow.h
deleted file mode 100644
index 5594ddb..0000000
--- a/chrome/browser/printing/cloud_print/privet_confirm_api_flow.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_CONFIRM_API_FLOW_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_CONFIRM_API_FLOW_H_
-
-#include <string>
-
-#include "chrome/browser/printing/cloud_print/gcd_api_flow.h"
-
-namespace cloud_print {
-
-// API call flow for server-side communication with CloudPrint for registration.
-class PrivetConfirmApiCallFlow : public CloudPrintApiFlowRequest {
- public:
-  using ResponseCallback = base::OnceCallback<void(GCDApiFlow::Status)>;
-
-  // Create an OAuth2-based confirmation
-  PrivetConfirmApiCallFlow(const std::string& token, ResponseCallback callback);
-  ~PrivetConfirmApiCallFlow() override;
-
-  // CloudPrintApiFlowRequest implementation:
-  void OnGCDApiFlowError(GCDApiFlow::Status status) override;
-  void OnGCDApiFlowComplete(const base::DictionaryValue& value) override;
-  GURL GetURL() override;
-  NetworkTrafficAnnotation GetNetworkTrafficAnnotationType() override;
-
- private:
-  ResponseCallback callback_;
-  const std::string token_;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_CONFIRM_API_FLOW_H_
diff --git a/chrome/browser/printing/cloud_print/privet_confirm_api_flow_unittest.cc b/chrome/browser/printing/cloud_print/privet_confirm_api_flow_unittest.cc
deleted file mode 100644
index 108866b..0000000
--- a/chrome/browser/printing/cloud_print/privet_confirm_api_flow_unittest.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_confirm_api_flow.h"
-
-#include <memory>
-#include <set>
-
-#include "base/bind.h"
-#include "base/json/json_reader.h"
-#include "base/values.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::StrictMock;
-using testing::_;
-
-namespace cloud_print {
-
-namespace {
-
-const char kSampleConfirmResponse[] = "{"
-    "   \"success\": true"
-    "}";
-
-const char kFailedConfirmResponse[] = "{"
-    "   \"success\": false"
-    "}";
-
-TEST(PrivetConfirmApiFlowTest, Params) {
-  PrivetConfirmApiCallFlow confirmation(
-      "123", PrivetConfirmApiCallFlow::ResponseCallback());
-  EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=123"),
-            confirmation.GetURL());
-  EXPECT_EQ("https://www.googleapis.com/auth/cloudprint",
-            confirmation.GetOAuthScope());
-  EXPECT_FALSE(confirmation.GetExtraRequestHeaders().empty());
-}
-
-class MockDelegate {
- public:
-  MOCK_METHOD1(Callback, void(GCDApiFlow::Status));
-};
-
-TEST(PrivetConfirmApiFlowTest, Parsing) {
-  StrictMock<MockDelegate> delegate;
-  PrivetConfirmApiCallFlow confirmation(
-      "123",
-      base::BindOnce(&MockDelegate::Callback, base::Unretained(&delegate)));
-  EXPECT_CALL(delegate, Callback(GCDApiFlow::SUCCESS)).Times(1);
-
-  absl::optional<base::Value> value =
-      base::JSONReader::Read(kSampleConfirmResponse);
-  ASSERT_TRUE(value);
-  const base::DictionaryValue* dictionary = NULL;
-  ASSERT_TRUE(value->GetAsDictionary(&dictionary));
-  confirmation.OnGCDApiFlowComplete(*dictionary);
-
-  PrivetConfirmApiCallFlow confirmation2(
-      "123",
-      base::BindOnce(&MockDelegate::Callback, base::Unretained(&delegate)));
-  EXPECT_CALL(delegate, Callback(GCDApiFlow::ERROR_FROM_SERVER)).Times(1);
-
-  value = base::JSONReader::Read(kFailedConfirmResponse);
-  ASSERT_TRUE(value);
-  ASSERT_TRUE(value->GetAsDictionary(&dictionary));
-  confirmation2.OnGCDApiFlowComplete(*dictionary);
-}
-
-}  // namespace
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_constants.cc b/chrome/browser/printing/cloud_print/privet_constants.cc
deleted file mode 100644
index daa7a82..0000000
--- a/chrome/browser/printing/cloud_print/privet_constants.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_constants.h"
-
-namespace cloud_print {
-
-const char kPrivetKeyError[] = "error";
-const char kPrivetInfoKeyToken[] = "x-privet-token";
-const char kPrivetInfoKeyAPIList[] = "api";
-const char kPrivetInfoKeyID[] = "id";
-const char kPrivetKeyDeviceID[] = "device_id";
-const char kPrivetKeyClaimURL[] = "claim_url";
-const char kPrivetKeyClaimToken[] = "token";
-const char kPrivetKeyTimeout[] = "timeout";
-
-const char kPrivetActionNameInfo[] = "info";
-
-const char kPrivetInfoPath[] = "/privet/info";
-const char kPrivetRegisterPath[] = "/privet/register";
-const char kPrivetCapabilitiesPath[] = "/privet/capabilities";
-const char kPrivetSubmitdocPath[] = "/privet/printer/submitdoc";
-const char kPrivetCreatejobPath[] = "/privet/printer/createjob";
-
-const char kPrivetErrorDeviceBusy[] = "device_busy";
-const char kPrivetErrorPrinterBusy[] = "printer_busy";
-const char kPrivetErrorInvalidPrintJob[] = "invalid_print_job";
-const char kPrivetErrorInvalidDocumentType[] = "invalid_document_type";
-const char kPrivetErrorPendingUserAction[] = "pending_user_action";
-const char kPrivetErrorInvalidXPrivetToken[] = "invalid_x_privet_token";
-const char kPrivetErrorTimeout[] = "confirmation_timeout";
-const char kPrivetErrorCancel[] = "user_cancel";
-
-const char kPrivetActionStart[] = "start";
-const char kPrivetActionGetClaimToken[] = "getClaimToken";
-const char kPrivetActionComplete[] = "complete";
-const char kPrivetActionCancel[] = "cancel";
-
-const char kPrivetDefaultDeviceType[] = "_privet._tcp.local";
-
-const char kPrivetTypePrinter[] = "printer";
-
-const char kPrivetTxtKeyName[] = "ty";
-const char kPrivetTxtKeyDescription[] = "note";
-const char kPrivetTxtKeyVersion[] = "txtvers";
-const char kPrivetTxtKeyType[] = "type";
-const char kPrivetTxtKeyID[] = "id";
-const char kPrivetTxtKeyGcdID[] = "gcd_id";
-const char kPrivetTxtKeyDevicesClass[] = "class";
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_constants.h b/chrome/browser/printing/cloud_print/privet_constants.h
deleted file mode 100644
index 51bf96c..0000000
--- a/chrome/browser/printing/cloud_print/privet_constants.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_CONSTANTS_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_CONSTANTS_H_
-
-namespace cloud_print {
-
-extern const char kPrivetKeyError[];
-extern const char kPrivetInfoKeyToken[];
-extern const char kPrivetInfoKeyAPIList[];
-extern const char kPrivetInfoKeyID[];
-extern const char kPrivetKeyDeviceID[];
-extern const char kPrivetKeyClaimURL[];
-extern const char kPrivetKeyClaimToken[];
-extern const char kPrivetKeyTimeout[];
-
-extern const char kPrivetActionNameInfo[];
-
-extern const char kPrivetInfoPath[];
-extern const char kPrivetRegisterPath[];
-extern const char kPrivetCapabilitiesPath[];
-extern const char kPrivetSubmitdocPath[];
-extern const char kPrivetCreatejobPath[];
-
-extern const char kPrivetErrorDeviceBusy[];
-extern const char kPrivetErrorPrinterBusy[];
-extern const char kPrivetErrorInvalidPrintJob[];
-extern const char kPrivetErrorInvalidDocumentType[];
-extern const char kPrivetErrorPendingUserAction[];
-extern const char kPrivetErrorInvalidXPrivetToken[];
-extern const char kPrivetErrorTimeout[];
-extern const char kPrivetErrorCancel[];
-
-extern const char kPrivetActionStart[];
-extern const char kPrivetActionGetClaimToken[];
-extern const char kPrivetActionComplete[];
-extern const char kPrivetActionCancel[];
-
-extern const char kPrivetDefaultDeviceType[];
-
-extern const char kPrivetTypePrinter[];
-
-extern const char kPrivetTxtKeyName[];
-extern const char kPrivetTxtKeyDescription[];
-extern const char kPrivetTxtKeyVersion[];
-extern const char kPrivetTxtKeyType[];
-extern const char kPrivetTxtKeyID[];
-extern const char kPrivetTxtKeyGcdID[];
-extern const char kPrivetTxtKeyDevicesClass[];
-
-const int kPrivetDefaultTimeout = 15;
-
-const double kPrivetMaximumTimeRandomAddition = 0.2;
-
-const int kPrivetMinimumTimeout = 2;
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_CONSTANTS_H_
diff --git a/chrome/browser/printing/cloud_print/privet_device_lister.cc b/chrome/browser/printing/cloud_print/privet_device_lister.cc
deleted file mode 100644
index 9118eb6..0000000
--- a/chrome/browser/printing/cloud_print/privet_device_lister.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_device_lister.h"
-
-namespace cloud_print {
-
-PrivetDeviceLister::PrivetDeviceLister() {
-}
-
-PrivetDeviceLister::~PrivetDeviceLister() {
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_device_lister.h b/chrome/browser/printing/cloud_print/privet_device_lister.h
deleted file mode 100644
index 44aba04..0000000
--- a/chrome/browser/printing/cloud_print/privet_device_lister.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_DEVICE_LISTER_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_DEVICE_LISTER_H_
-
-#include <string>
-
-#include "chrome/browser/printing/cloud_print/device_description.h"
-
-namespace cloud_print {
-
-class PrivetDeviceLister {
- public:
-  PrivetDeviceLister();
-  virtual ~PrivetDeviceLister();
-
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-    virtual void DeviceChanged(const std::string& name,
-                               const DeviceDescription& description) = 0;
-    virtual void DeviceRemoved(const std::string& name) = 0;
-    virtual void DeviceCacheFlushed() = 0;
-  };
-
-  // Start the PrivetServiceLister.
-  virtual void Start() = 0;
-
-  virtual void DiscoverNewDevices() = 0;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_DEVICE_LISTER_H_
diff --git a/chrome/browser/printing/cloud_print/privet_device_lister_impl.cc b/chrome/browser/printing/cloud_print/privet_device_lister_impl.cc
deleted file mode 100644
index 5c92422..0000000
--- a/chrome/browser/printing/cloud_print/privet_device_lister_impl.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_device_lister_impl.h"
-
-#include <utility>
-
-#include "chrome/browser/printing/cloud_print/privet_constants.h"
-
-namespace cloud_print {
-
-PrivetDeviceListerImpl::PrivetDeviceListerImpl(
-    local_discovery::ServiceDiscoveryClient* service_discovery_client,
-    PrivetDeviceLister::Delegate* delegate)
-    : delegate_(delegate),
-      device_lister_(local_discovery::ServiceDiscoveryDeviceLister::Create(
-          this,
-          service_discovery_client,
-          kPrivetDefaultDeviceType)) {}
-
-PrivetDeviceListerImpl::~PrivetDeviceListerImpl() {
-}
-
-void PrivetDeviceListerImpl::Start() {
-  device_lister_->Start();
-}
-
-void PrivetDeviceListerImpl::DiscoverNewDevices() {
-  device_lister_->DiscoverNewDevices();
-}
-
-void PrivetDeviceListerImpl::OnDeviceChanged(
-    const std::string& service_type,
-    bool added,
-    const local_discovery::ServiceDescription& service_description) {
-  if (!delegate_)
-    return;
-
-  delegate_->DeviceChanged(service_description.service_name,
-                           DeviceDescription(service_description));
-}
-
-void PrivetDeviceListerImpl::OnDeviceRemoved(const std::string& service_type,
-                                             const std::string& service_name) {
-  if (delegate_)
-    delegate_->DeviceRemoved(service_name);
-}
-
-void PrivetDeviceListerImpl::OnDeviceCacheFlushed(
-    const std::string& service_type) {
-  if (delegate_)
-    delegate_->DeviceCacheFlushed();
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_device_lister_impl.h b/chrome/browser/printing/cloud_print/privet_device_lister_impl.h
deleted file mode 100644
index 5d91da4..0000000
--- a/chrome/browser/printing/cloud_print/privet_device_lister_impl.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_DEVICE_LISTER_IMPL_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_DEVICE_LISTER_IMPL_H_
-
-#include <memory>
-#include <string>
-
-#include "chrome/browser/local_discovery/service_discovery_device_lister.h"
-#include "chrome/browser/printing/cloud_print/privet_device_lister.h"
-
-namespace local_discovery {
-class ServiceDiscoveryClient;
-}
-
-namespace cloud_print {
-
-class PrivetDeviceListerImpl
-    : public PrivetDeviceLister,
-      public local_discovery::ServiceDiscoveryDeviceLister::Delegate {
- public:
-  PrivetDeviceListerImpl(
-      local_discovery::ServiceDiscoveryClient* service_discovery_client,
-      PrivetDeviceLister::Delegate* delegate);
-  ~PrivetDeviceListerImpl() override;
-
-  // PrivetDeviceLister:
-  void Start() override;
-  void DiscoverNewDevices() override;
-
- protected:
-  // ServiceDiscoveryDeviceLister:
-  void OnDeviceChanged(
-      const std::string& service_type,
-      bool added,
-      const local_discovery::ServiceDescription& service_description) override;
-  void OnDeviceRemoved(const std::string& service_type,
-                       const std::string& service_name) override;
-  void OnDeviceCacheFlushed(const std::string& service_type) override;
-
- private:
-  PrivetDeviceLister::Delegate* const delegate_;
-  std::unique_ptr<local_discovery::ServiceDiscoveryDeviceLister> device_lister_;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_DEVICE_LISTER_IMPL_H_
diff --git a/chrome/browser/printing/cloud_print/privet_device_lister_unittest.cc b/chrome/browser/printing/cloud_print/privet_device_lister_unittest.cc
deleted file mode 100644
index 7b2be62..0000000
--- a/chrome/browser/printing/cloud_print/privet_device_lister_unittest.cc
+++ /dev/null
@@ -1,304 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <memory>
-
-#include "chrome/browser/printing/cloud_print/privet_device_lister_impl.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using local_discovery::LocalDomainResolver;
-using local_discovery::ServiceDescription;
-using local_discovery::ServiceDiscoveryClient;
-using local_discovery::ServiceResolver;
-using local_discovery::ServiceWatcher;
-using testing::_;
-using testing::SaveArg;
-
-namespace cloud_print {
-
-namespace {
-
-class MockServiceResolver;
-class MockServiceWatcher;
-
-class ServiceDiscoveryMockDelegate {
- public:
-  virtual ~ServiceDiscoveryMockDelegate() {}
-  virtual void ServiceWatcherStarted(const std::string& service_type,
-                                     MockServiceWatcher* watcher) = 0;
-  virtual void ServiceResolverStarted(const std::string& service_type,
-                                      MockServiceResolver* resolver) = 0;
-};
-
-class MockServiceWatcher : public ServiceWatcher {
- public:
-  MockServiceWatcher(const std::string& service_type,
-                     ServiceWatcher::UpdatedCallback callback,
-                     ServiceDiscoveryMockDelegate* mock_delegate)
-      : started_(false),
-        service_type_(service_type),
-        callback_(std::move(callback)),
-        mock_delegate_(mock_delegate) {}
-
-  ~MockServiceWatcher() override {}
-
-  void Start() override {
-    DCHECK(!started_);
-    started_ = true;
-    mock_delegate_->ServiceWatcherStarted(service_type_, this);
-  }
-
-  MOCK_METHOD0(DiscoverNewServices, void());
-
-  MOCK_METHOD1(SetActivelyRefreshServices, void(
-      bool actively_refresh_services));
-
-  std::string GetServiceType() const override { return service_type_; }
-
-  bool started() {
-    return started_;
-  }
-
-  ServiceWatcher::UpdatedCallback callback() {
-    return callback_;
-  }
-
- private:
-  bool started_;
-  std::string service_type_;
-  ServiceWatcher::UpdatedCallback callback_;
-  ServiceDiscoveryMockDelegate* mock_delegate_;
-};
-
-class MockServiceResolver : public ServiceResolver {
- public:
-  MockServiceResolver(const std::string& service_name,
-                      ServiceResolver::ResolveCompleteCallback callback,
-                      ServiceDiscoveryMockDelegate* mock_delegate)
-      : started_resolving_(false),
-        service_name_(service_name),
-        callback_(std::move(callback)),
-        mock_delegate_(mock_delegate) {}
-
-  ~MockServiceResolver() override {}
-
-  void StartResolving() override {
-    started_resolving_ = true;
-    mock_delegate_->ServiceResolverStarted(service_name_, this);
-  }
-
-  bool IsResolving() const {
-    return started_resolving_;
-  }
-
-  std::string GetName() const override { return service_name_; }
-
-  ServiceResolver::ResolveCompleteCallback* callback() { return &callback_; }
-
- private:
-  bool started_resolving_;
-  std::string service_name_;
-  ServiceResolver::ResolveCompleteCallback callback_;
-  ServiceDiscoveryMockDelegate* mock_delegate_;
-};
-
-class MockServiceDiscoveryClient : public ServiceDiscoveryClient {
- public:
-  explicit MockServiceDiscoveryClient(
-      ServiceDiscoveryMockDelegate* mock_delegate)
-      : mock_delegate_(mock_delegate) {
-  }
-
-  ~MockServiceDiscoveryClient() override {}
-
-  // Create a service watcher object listening for DNS-SD service announcements
-  // on service type |service_type|.
-  std::unique_ptr<ServiceWatcher> CreateServiceWatcher(
-      const std::string& service_type,
-      ServiceWatcher::UpdatedCallback callback) override {
-    return std::make_unique<MockServiceWatcher>(
-        service_type, std::move(callback), mock_delegate_);
-  }
-
-  // Create a service resolver object for getting detailed service information
-  // for the service called |service_name|.
-  std::unique_ptr<ServiceResolver> CreateServiceResolver(
-      const std::string& service_name,
-      ServiceResolver::ResolveCompleteCallback callback) override {
-    return std::make_unique<MockServiceResolver>(
-        service_name, std::move(callback), mock_delegate_);
-  }
-
-  // Not used in this test.
-  std::unique_ptr<LocalDomainResolver> CreateLocalDomainResolver(
-      const std::string& domain,
-      net::AddressFamily address_family,
-      LocalDomainResolver::IPAddressCallback callback) override {
-    NOTREACHED();
-    return nullptr;
-  }
-
- private:
-  ServiceDiscoveryMockDelegate* mock_delegate_;
-};
-
-class MockServiceDiscoveryMockDelegate : public ServiceDiscoveryMockDelegate {
- public:
-  MOCK_METHOD2(ServiceWatcherStarted, void(const std::string& service_type,
-                                           MockServiceWatcher* watcher));
-  MOCK_METHOD2(ServiceResolverStarted, void(const std::string& service_type,
-                                            MockServiceResolver* resolver));
-};
-
-class MockDeviceListerDelegate : public PrivetDeviceLister::Delegate {
- public:
-  MockDeviceListerDelegate() {}
-  ~MockDeviceListerDelegate() override {}
-
-  MOCK_METHOD2(DeviceChanged,
-               void(const std::string& name,
-                    const DeviceDescription& description));
-
-  MOCK_METHOD1(DeviceRemoved, void(const std::string& name));
-
-  MOCK_METHOD0(DeviceCacheFlushed, void());
-};
-
-class PrivetDeviceListerTest : public testing::Test {
- public:
-  PrivetDeviceListerTest() : mock_client_(&mock_delegate_) {}
-  ~PrivetDeviceListerTest() override {}
-
-  void SetUp() override {
-    example_attrs_.push_back("tXtvers=1");
-    example_attrs_.push_back("ty=My Printer");
-    example_attrs_.push_back("nOte=This is my Printer");
-    example_attrs_.push_back("CS=ONlInE");
-    example_attrs_.push_back("id=");
-
-    service_description_.service_name = "myprinter._privet._tcp.local";
-    service_description_.address = net::HostPortPair("myprinter.local", 6006);
-    service_description_.metadata = example_attrs_;
-    service_description_.last_seen = base::Time() +
-        base::TimeDelta::FromSeconds(5);
-    ASSERT_TRUE(service_description_.ip_address.AssignFromIPLiteral("1.2.3.4"));
-  }
-
- protected:
-  testing::StrictMock<MockServiceDiscoveryMockDelegate> mock_delegate_;
-  MockServiceDiscoveryClient mock_client_;
-  MockDeviceListerDelegate delegate_;
-  std::vector<std::string> example_attrs_;
-  ServiceDescription service_description_;
-};
-
-TEST_F(PrivetDeviceListerTest, SimpleUpdateTest) {
-  DeviceDescription outgoing_description;
-
-  MockServiceWatcher* service_watcher;
-  MockServiceResolver* service_resolver;
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceWatcherStarted("_privet._tcp.local", _))
-      .WillOnce(SaveArg<1>(&service_watcher));
-  PrivetDeviceListerImpl privet_lister(&mock_client_, &delegate_);
-  privet_lister.Start();
-  testing::Mock::VerifyAndClear(&mock_delegate_);
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceResolverStarted("myprinter._privet._tcp.local", _))
-      .WillOnce(SaveArg<1>(&service_resolver));
-  service_watcher->callback().Run(ServiceWatcher::UPDATE_ADDED,
-                                  "myprinter._privet._tcp.local");
-  testing::Mock::VerifyAndClear(&mock_delegate_);
-
-  EXPECT_CALL(delegate_, DeviceChanged("myprinter._privet._tcp.local", _))
-      .WillOnce(SaveArg<1>(&outgoing_description));
-
-  std::move(*service_resolver->callback())
-      .Run(ServiceResolver::STATUS_SUCCESS, service_description_);
-
-  EXPECT_EQ(service_description_.address.host(),
-            outgoing_description.address.host());
-  EXPECT_EQ(service_description_.address.port(),
-            outgoing_description.address.port());
-  EXPECT_EQ("My Printer", outgoing_description.name);
-  EXPECT_EQ("This is my Printer", outgoing_description.description);
-  EXPECT_EQ("", outgoing_description.id);
-
-  EXPECT_CALL(delegate_, DeviceRemoved("myprinter._privet._tcp.local"));
-
-  service_watcher->callback().Run(ServiceWatcher::UPDATE_REMOVED,
-                                  "myprinter._privet._tcp.local");
-}
-
-TEST_F(PrivetDeviceListerTest, MultipleUpdatesPostResolve) {
-  MockServiceWatcher* service_watcher;
-  MockServiceResolver* service_resolver;
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceWatcherStarted("_privet._tcp.local", _))
-      .WillOnce(SaveArg<1>(&service_watcher));
-  PrivetDeviceListerImpl privet_lister(&mock_client_, &delegate_);
-  privet_lister.Start();
-  testing::Mock::VerifyAndClear(&mock_delegate_);
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceResolverStarted("myprinter._privet._tcp.local", _))
-      .WillOnce(SaveArg<1>(&service_resolver));
-
-  service_watcher->callback().Run(ServiceWatcher::UPDATE_CHANGED,
-                                  "myprinter._privet._tcp.local");
-  testing::Mock::VerifyAndClear(&mock_delegate_);
-
-  EXPECT_CALL(delegate_, DeviceChanged("myprinter._privet._tcp.local", _));
-  std::move(*service_resolver->callback())
-      .Run(ServiceResolver::STATUS_SUCCESS, service_description_);
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceResolverStarted("myprinter._privet._tcp.local", _));
-  service_watcher->callback().Run(ServiceWatcher::UPDATE_CHANGED,
-                                  "myprinter._privet._tcp.local");
-  testing::Mock::VerifyAndClear(&mock_delegate_);
-}
-
-// Check that the device lister does not create a still-working resolver
-TEST_F(PrivetDeviceListerTest, MultipleUpdatesPreResolve) {
-  MockServiceWatcher* service_watcher;
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceWatcherStarted("_privet._tcp.local", _))
-      .WillOnce(SaveArg<1>(&service_watcher));
-  PrivetDeviceListerImpl privet_lister(&mock_client_, &delegate_);
-  privet_lister.Start();
-  testing::Mock::VerifyAndClear(&mock_delegate_);
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceResolverStarted("myprinter._privet._tcp.local", _))
-      .Times(1);
-  service_watcher->callback().Run(ServiceWatcher::UPDATE_CHANGED,
-                                  "myprinter._privet._tcp.local");
-  service_watcher->callback().Run(ServiceWatcher::UPDATE_CHANGED,
-                                  "myprinter._privet._tcp.local");
-}
-
-TEST_F(PrivetDeviceListerTest, DiscoverNewDevices) {
-  MockServiceWatcher* service_watcher;
-
-  EXPECT_CALL(mock_delegate_,
-              ServiceWatcherStarted("_privet._tcp.local", _))
-      .WillOnce(SaveArg<1>(&service_watcher));
-  PrivetDeviceListerImpl privet_lister(&mock_client_, &delegate_);
-  privet_lister.Start();
-  testing::Mock::VerifyAndClear(&mock_delegate_);
-
-  EXPECT_CALL(*service_watcher, DiscoverNewServices());
-  privet_lister.DiscoverNewDevices();
-}
-
-
-}  // namespace
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_http.cc b/chrome/browser/printing/cloud_print/privet_http.cc
deleted file mode 100644
index 6519834..0000000
--- a/chrome/browser/printing/cloud_print/privet_http.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_http.h"
-
-#include <memory>
-#include <utility>
-
-#include "chrome/browser/printing/cloud_print/privet_http_impl.h"
-
-namespace cloud_print {
-
-// static
-std::unique_ptr<PrivetV1HTTPClient> PrivetV1HTTPClient::CreateDefault(
-    std::unique_ptr<PrivetHTTPClient> info_client) {
-  if (!info_client)
-    return nullptr;
-  return std::make_unique<PrivetV1HTTPClientImpl>(std::move(info_client));
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_http.h b/chrome/browser/printing/cloud_print/privet_http.h
deleted file mode 100644
index 230e7ef..0000000
--- a/chrome/browser/printing/cloud_print/privet_http.h
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_H_
-
-#include <memory>
-#include <string>
-
-#include "base/callback.h"
-#include "chrome/browser/printing/cloud_print/privet_url_loader.h"
-#include "net/base/host_port_pair.h"
-
-namespace base {
-class RefCountedMemory;
-}
-
-namespace gfx {
-class Size;
-}
-
-namespace printing {
-class PwgRasterConverter;
-}
-
-namespace cloud_print {
-
-class PrivetHTTPClient;
-
-// Represents a simple request that returns pure JSON.
-class PrivetJSONOperation {
- public:
-  // If value is null, the operation failed.
-  using ResultCallback =
-      base::OnceCallback<void(const base::DictionaryValue* /*value*/)>;
-
-  virtual ~PrivetJSONOperation() {}
-
-  virtual void Start() = 0;
-
-  virtual PrivetHTTPClient* GetHTTPClient() = 0;
-};
-
-// Privet HTTP client. Must outlive the operations it creates.
-class PrivetHTTPClient {
- public:
-  virtual ~PrivetHTTPClient() {}
-
-  // A name for the HTTP client, e.g. the device name for the privet device.
-  virtual const std::string& GetName() = 0;
-
-  // Creates operation to query basic information about local device.
-  virtual std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      PrivetJSONOperation::ResultCallback callback) = 0;
-
-  // Creates a URL loader for PrivetV1.
-  virtual std::unique_ptr<PrivetURLLoader> CreateURLLoader(
-      const GURL& url,
-      const std::string& http_method,
-      PrivetURLLoader::Delegate* delegate) = 0;
-
-  virtual void RefreshPrivetToken(
-      PrivetURLLoader::TokenCallback token_callback) = 0;
-};
-
-// Represents a full registration flow (/privet/register), normally consisting
-// of calling the start action, the getClaimToken action, and calling the
-// complete action. Some intervention from the caller is required to display the
-// claim URL to the user (noted in OnPrivetRegisterClaimURL).
-class PrivetRegisterOperation {
- public:
-  enum FailureReason {
-    FAILURE_NETWORK,
-    FAILURE_HTTP_ERROR,
-    FAILURE_JSON_ERROR,
-    FAILURE_MALFORMED_RESPONSE,
-    FAILURE_TOKEN,
-    FAILURE_UNKNOWN,
-  };
-
-  class Delegate {
-   public:
-    ~Delegate() {}
-
-    // Called when a user needs to claim the printer by visiting the given URL.
-    virtual void OnPrivetRegisterClaimToken(
-        PrivetRegisterOperation* operation,
-        const std::string& token,
-        const GURL& url) = 0;
-
-    // TODO(noamsml): Remove all unnecessary parameters.
-    // Called in case of an error while registering.  |action| is the
-    // registration action taken during the error. |reason| is the reason for
-    // the failure. |printer_http_code| is the http code returned from the
-    // printer. If it is -1, an internal error occurred while trying to complete
-    // the request. |json| may be null if printer_http_code signifies an error.
-    virtual void OnPrivetRegisterError(PrivetRegisterOperation* operation,
-                                       const std::string& action,
-                                       FailureReason reason,
-                                       int printer_http_code,
-                                       const base::DictionaryValue* json) = 0;
-
-    // Called when the registration is done.
-    virtual void OnPrivetRegisterDone(PrivetRegisterOperation* operation,
-                                      const std::string& device_id) = 0;
-  };
-
-  virtual ~PrivetRegisterOperation() {}
-
-  virtual void Start() = 0;
-  // Owner SHOULD call explicitly before destroying operation.
-  virtual void Cancel() = 0;
-  virtual void CompleteRegistration() = 0;
-
-  virtual PrivetHTTPClient* GetHTTPClient() = 0;
-};
-
-class PrivetLocalPrintOperation {
- public:
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-    virtual void OnPrivetPrintingDone(
-        const PrivetLocalPrintOperation* print_operation) = 0;
-    virtual void OnPrivetPrintingError(
-        const PrivetLocalPrintOperation* print_operation, int http_code) = 0;
-  };
-
-  virtual ~PrivetLocalPrintOperation() {}
-
-  virtual void Start() = 0;
-
-  // Required print data. MUST be called before calling Start().
-  virtual void SetData(scoped_refptr<base::RefCountedMemory> data) = 0;
-
-  // Optional attributes for /submitdoc. Call before calling Start().
-  // |ticket| should be in CJT format.
-  virtual void SetTicket(base::Value ticket) = 0;
-
-  // |capabilities| should be in CDD format.
-  virtual void SetCapabilities(const std::string& capabilities) = 0;
-
-  // Username and jobname are for display only.
-  virtual void SetUsername(const std::string& username) = 0;
-  virtual void SetJobname(const std::string& jobname) = 0;
-
-  // Document page size.
-  virtual void SetPageSize(const gfx::Size& page_size) = 0;
-
-  // For testing, inject an alternative PWG raster converter.
-  virtual void SetPwgRasterConverterForTesting(
-      std::unique_ptr<printing::PwgRasterConverter> pwg_raster_converter) = 0;
-
-  virtual PrivetHTTPClient* GetHTTPClient() = 0;
-};
-
-// Privet HTTP client. Must outlive the operations it creates.
-class PrivetV1HTTPClient {
- public:
-  virtual ~PrivetV1HTTPClient() {}
-
-  static std::unique_ptr<PrivetV1HTTPClient> CreateDefault(
-      std::unique_ptr<PrivetHTTPClient> info_client);
-
-  // A name for the HTTP client, e.g. the device name for the privet device.
-  virtual const std::string& GetName() = 0;
-
-  // Creates operation to query basic information about local device.
-  virtual std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      PrivetJSONOperation::ResultCallback callback) = 0;
-
-  // Creates operation to register local device using Privet v1 protocol.
-  virtual std::unique_ptr<PrivetRegisterOperation> CreateRegisterOperation(
-      const std::string& user,
-      PrivetRegisterOperation::Delegate* delegate) = 0;
-
-  // Creates operation to query capabilities of local printer.
-  virtual std::unique_ptr<PrivetJSONOperation> CreateCapabilitiesOperation(
-      PrivetJSONOperation::ResultCallback callback) = 0;
-
-  // Creates operation to submit print job to local printer.
-  virtual std::unique_ptr<PrivetLocalPrintOperation> CreateLocalPrintOperation(
-      PrivetLocalPrintOperation::Delegate* delegate) = 0;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_H_
diff --git a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.cc b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.cc
deleted file mode 100644
index 968fb33..0000000
--- a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h"
-
-#include <memory>
-
-#include "base/memory/ptr_util.h"
-#include "chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-
-namespace cloud_print {
-
-// static
-std::unique_ptr<PrivetHTTPAsynchronousFactory>
-PrivetHTTPAsynchronousFactory::CreateInstance(
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) {
-  return base::WrapUnique<PrivetHTTPAsynchronousFactory>(
-      new PrivetHTTPAsynchronousFactoryImpl(url_loader_factory));
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h
deleted file mode 100644
index 2ee9337..0000000
--- a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_H_
-
-#include <memory>
-#include <string>
-
-#include "base/callback.h"
-#include "base/memory/ref_counted.h"
-
-namespace net {
-class HostPortPair;
-}
-
-namespace network {
-class SharedURLLoaderFactory;
-}
-
-namespace cloud_print {
-
-class PrivetHTTPClient;
-
-class PrivetHTTPResolution {
- public:
-  using ResultCallback =
-      base::OnceCallback<void(std::unique_ptr<PrivetHTTPClient>)>;
-
-  virtual ~PrivetHTTPResolution() {}
-
-  virtual void Start(const net::HostPortPair& address,
-                     ResultCallback callback) = 0;
-};
-
-class PrivetHTTPAsynchronousFactory {
- public:
-  using ResultCallback = PrivetHTTPResolution::ResultCallback;
-
-  virtual ~PrivetHTTPAsynchronousFactory() {}
-
-  static std::unique_ptr<PrivetHTTPAsynchronousFactory> CreateInstance(
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
-
-  virtual std::unique_ptr<PrivetHTTPResolution> CreatePrivetHTTP(
-      const std::string& service_name) = 0;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_H_
diff --git a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.cc b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.cc
deleted file mode 100644
index 03f8206..0000000
--- a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h"
-
-#include <memory>
-#include <utility>
-
-#include "base/bind.h"
-#include "chrome/browser/local_discovery/endpoint_resolver.h"
-#include "chrome/browser/printing/cloud_print/privet_http_impl.h"
-#include "net/base/ip_endpoint.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-
-namespace cloud_print {
-
-PrivetHTTPAsynchronousFactoryImpl::PrivetHTTPAsynchronousFactoryImpl(
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
-    : url_loader_factory_(url_loader_factory) {}
-
-PrivetHTTPAsynchronousFactoryImpl::~PrivetHTTPAsynchronousFactoryImpl() {}
-
-std::unique_ptr<PrivetHTTPResolution>
-PrivetHTTPAsynchronousFactoryImpl::CreatePrivetHTTP(
-    const std::string& service_name) {
-  return std::make_unique<ResolutionImpl>(service_name, url_loader_factory_);
-}
-
-PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::ResolutionImpl(
-    const std::string& service_name,
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
-    : name_(service_name),
-      url_loader_factory_(url_loader_factory),
-      endpoint_resolver_(
-          std::make_unique<local_discovery::EndpointResolver>()) {}
-
-PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::~ResolutionImpl() {}
-
-void PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::Start(
-    const net::HostPortPair& address,
-    ResultCallback callback) {
-  endpoint_resolver_->Start(
-      address, base::BindOnce(&ResolutionImpl::ResolveComplete,
-                              base::Unretained(this), std::move(callback)));
-}
-
-void PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::ResolveComplete(
-    ResultCallback callback,
-    const net::IPEndPoint& endpoint) {
-  if (endpoint.address().empty())
-    return std::move(callback).Run(nullptr);
-
-  net::HostPortPair new_address = net::HostPortPair::FromIPEndPoint(endpoint);
-  std::move(callback).Run(std::make_unique<PrivetHTTPClientImpl>(
-      name_, new_address, url_loader_factory_));
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h
deleted file mode 100644
index c8b8a7b3..0000000
--- a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_IMPL_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_IMPL_H_
-
-#include <memory>
-#include <string>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "chrome/browser/printing/cloud_print/privet_http.h"
-#include "chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h"
-
-namespace local_discovery {
-class EndpointResolver;
-}
-
-namespace network {
-class SharedURLLoaderFactory;
-}
-
-namespace cloud_print {
-
-class PrivetHTTPAsynchronousFactoryImpl : public PrivetHTTPAsynchronousFactory {
- public:
-  explicit PrivetHTTPAsynchronousFactoryImpl(
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
-  ~PrivetHTTPAsynchronousFactoryImpl() override;
-
-  std::unique_ptr<PrivetHTTPResolution> CreatePrivetHTTP(
-      const std::string& service_name) override;
-
- private:
-  class ResolutionImpl : public PrivetHTTPResolution {
-   public:
-    ResolutionImpl(
-        const std::string& service_name,
-        scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
-    ~ResolutionImpl() override;
-
-    void Start(const net::HostPortPair& address,
-               ResultCallback callback) override;
-
-   private:
-    void ResolveComplete(ResultCallback callback,
-                         const net::IPEndPoint& endpoint);
-    std::string name_;
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-    std::unique_ptr<local_discovery::EndpointResolver> endpoint_resolver_;
-
-    DISALLOW_COPY_AND_ASSIGN(ResolutionImpl);
-  };
-
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(PrivetHTTPAsynchronousFactoryImpl);
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_IMPL_H_
diff --git a/chrome/browser/printing/cloud_print/privet_http_impl.cc b/chrome/browser/printing/cloud_print/privet_http_impl.cc
deleted file mode 100644
index 960486b..0000000
--- a/chrome/browser/printing/cloud_print/privet_http_impl.cc
+++ /dev/null
@@ -1,812 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_http_impl.h"
-
-#include <stddef.h>
-
-#include <algorithm>
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/location.h"
-#include "base/memory/ref_counted_memory.h"
-#include "base/rand_util.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/printing/cloud_print/privet_constants.h"
-#include "chrome/common/chrome_content_client.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/cloud_print/cloud_print_constants.h"
-#include "net/base/url_util.h"
-#include "net/traffic_annotation/network_traffic_annotation.h"
-#include "printing/buildflags/buildflags.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "url/gurl.h"
-
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-#include "chrome/browser/printing/pwg_raster_converter.h"
-#include "components/cloud_devices/common/printer_description.h"
-#include "printing/pdf_render_settings.h"
-#include "printing/pwg_raster_settings.h"
-#include "ui/gfx/text_elider.h"
-#endif  // ENABLE_PRINT_PREVIEW
-
-namespace cloud_print {
-
-namespace {
-
-const char kUrlPlaceHolder[] = "http://host/";
-const char kPrivetRegisterActionArgName[] = "action";
-const char kPrivetRegisterUserArgName[] = "user";
-
-const int kPrivetCancelationTimeoutSeconds = 3;
-
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-const char kPrivetURLKeyUserName[] = "user_name";
-const char kPrivetURLKeyClientName[] = "client_name";
-const char kPrivetURLKeyJobname[] = "job_name";
-const char kPrivetURLValueClientName[] = "Chrome";
-
-const char kPrivetContentTypePDF[] = "application/pdf";
-const char kPrivetContentTypePWGRaster[] = "image/pwg-raster";
-const char kPrivetContentTypeAny[] = "*/*";
-
-const char kPrivetKeyJobID[] = "job_id";
-
-const int kPrivetLocalPrintMaxRetries = 2;
-const int kPrivetLocalPrintDefaultTimeout = 5;
-
-const size_t kPrivetLocalPrintMaxJobNameLength = 64;
-#endif  // ENABLE_PRINT_PREVIEW
-
-GURL CreatePrivetURL(const std::string& path) {
-  GURL url(kUrlPlaceHolder);
-  GURL::Replacements replacements;
-  replacements.SetPathStr(path);
-  return url.ReplaceComponents(replacements);
-}
-
-GURL CreatePrivetRegisterURL(const std::string& action,
-                             const std::string& user) {
-  GURL url = CreatePrivetURL(kPrivetRegisterPath);
-  url = net::AppendQueryParameter(url, kPrivetRegisterActionArgName, action);
-  return net::AppendQueryParameter(url, kPrivetRegisterUserArgName, user);
-}
-
-GURL CreatePrivetParamURL(const std::string& path,
-                          const std::string& query_params) {
-  GURL url(kUrlPlaceHolder);
-  GURL::Replacements replacements;
-  replacements.SetPathStr(path);
-  if (!query_params.empty()) {
-    replacements.SetQueryStr(query_params);
-  }
-  return url.ReplaceComponents(replacements);
-}
-
-}  // namespace
-
-PrivetInfoOperationImpl::PrivetInfoOperationImpl(
-    PrivetHTTPClient* privet_client,
-    PrivetJSONOperation::ResultCallback callback)
-    : privet_client_(privet_client), callback_(std::move(callback)) {}
-
-PrivetInfoOperationImpl::~PrivetInfoOperationImpl() {
-}
-
-void PrivetInfoOperationImpl::Start() {
-  url_loader_ = privet_client_->CreateURLLoader(
-      CreatePrivetURL(kPrivetInfoPath), "GET", this);
-
-  url_loader_->DoNotRetryOnTransientError();
-  url_loader_->SendEmptyPrivetToken();
-
-  url_loader_->Start();
-}
-
-PrivetHTTPClient* PrivetInfoOperationImpl::GetHTTPClient() {
-  return privet_client_;
-}
-
-void PrivetInfoOperationImpl::OnError(int response_code,
-                                      PrivetURLLoader::ErrorType error) {
-  if (callback_)
-    std::move(callback_).Run(nullptr);
-}
-
-void PrivetInfoOperationImpl::OnParsedJson(int response_code,
-                                           const base::DictionaryValue& value,
-                                           bool has_error) {
-  if (callback_)
-    std::move(callback_).Run(&value);
-}
-
-// static
-bool PrivetRegisterOperationImpl::run_tasks_immediately_for_testing_ = false;
-
-PrivetRegisterOperationImpl::RunTasksImmediatelyForTesting::
-    RunTasksImmediatelyForTesting() {
-  DCHECK(!run_tasks_immediately_for_testing_);
-  run_tasks_immediately_for_testing_ = true;
-}
-
-PrivetRegisterOperationImpl::RunTasksImmediatelyForTesting::
-    ~RunTasksImmediatelyForTesting() {
-  DCHECK(run_tasks_immediately_for_testing_);
-  run_tasks_immediately_for_testing_ = false;
-}
-
-PrivetRegisterOperationImpl::PrivetRegisterOperationImpl(
-    PrivetHTTPClient* privet_client,
-    const std::string& user,
-    PrivetRegisterOperation::Delegate* delegate)
-    : user_(user), delegate_(delegate), privet_client_(privet_client) {}
-
-PrivetRegisterOperationImpl::~PrivetRegisterOperationImpl() {
-}
-
-void PrivetRegisterOperationImpl::Start() {
-  ongoing_ = true;
-  next_response_handler_ = base::BindOnce(
-      &PrivetRegisterOperationImpl::StartResponse, base::Unretained(this));
-  SendRequest(kPrivetActionStart);
-}
-
-void PrivetRegisterOperationImpl::Cancel() {
-  url_loader_.reset();
-
-  if (!ongoing_)
-    return;
-
-  int delay_seconds =
-      run_tasks_immediately_for_testing_ ? 0 : kPrivetCancelationTimeoutSeconds;
-
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE,
-      base::BindOnce(&PrivetRegisterOperationImpl::Cancelation::Cleanup,
-                     base::Owned(new Cancelation(privet_client_, user_))),
-      base::TimeDelta::FromSeconds(delay_seconds));
-  ongoing_ = false;
-}
-
-void PrivetRegisterOperationImpl::CompleteRegistration() {
-  next_response_handler_ = base::BindOnce(
-      &PrivetRegisterOperationImpl::CompleteResponse, base::Unretained(this));
-  SendRequest(kPrivetActionComplete);
-}
-
-PrivetHTTPClient* PrivetRegisterOperationImpl::GetHTTPClient() {
-  return privet_client_;
-}
-
-void PrivetRegisterOperationImpl::OnError(int response_code,
-                                          PrivetURLLoader::ErrorType error) {
-  ongoing_ = false;
-  int visible_http_code = -1;
-  FailureReason reason = FAILURE_NETWORK;
-
-  if (error == PrivetURLLoader::RESPONSE_CODE_ERROR) {
-    visible_http_code = response_code;
-    reason = FAILURE_HTTP_ERROR;
-  } else if (error == PrivetURLLoader::JSON_PARSE_ERROR) {
-    reason = FAILURE_MALFORMED_RESPONSE;
-  } else if (error == PrivetURLLoader::TOKEN_ERROR) {
-    reason = FAILURE_TOKEN;
-  } else if (error == PrivetURLLoader::UNKNOWN_ERROR) {
-    reason = FAILURE_UNKNOWN;
-  }
-
-  delegate_->OnPrivetRegisterError(this, current_action_, reason,
-                                   visible_http_code, nullptr);
-}
-
-void PrivetRegisterOperationImpl::OnParsedJson(
-    int response_code,
-    const base::DictionaryValue& value,
-    bool has_error) {
-  if (has_error) {
-    std::string error;
-    value.GetString(kPrivetKeyError, &error);
-
-    ongoing_ = false;
-    delegate_->OnPrivetRegisterError(this, current_action_, FAILURE_JSON_ERROR,
-                                     response_code, &value);
-    return;
-  }
-
-  // TODO(noamsml): Match the user&action with the user&action in the object,
-  // and fail if different.
-  std::move(next_response_handler_).Run(value);
-}
-
-void PrivetRegisterOperationImpl::OnNeedPrivetToken(
-    PrivetURLLoader::TokenCallback callback) {
-  privet_client_->RefreshPrivetToken(std::move(callback));
-}
-
-void PrivetRegisterOperationImpl::SendRequest(const std::string& action) {
-  current_action_ = action;
-  url_loader_ = privet_client_->CreateURLLoader(
-      CreatePrivetRegisterURL(action, user_), "POST", this);
-  url_loader_->Start();
-}
-
-void PrivetRegisterOperationImpl::StartResponse(
-    const base::DictionaryValue& value) {
-  next_response_handler_ =
-      base::BindOnce(&PrivetRegisterOperationImpl::GetClaimTokenResponse,
-                     base::Unretained(this));
-
-  SendRequest(kPrivetActionGetClaimToken);
-}
-
-void PrivetRegisterOperationImpl::GetClaimTokenResponse(
-    const base::DictionaryValue& value) {
-  std::string claim_url;
-  std::string claim_token;
-  bool got_url = value.GetString(kPrivetKeyClaimURL, &claim_url);
-  bool got_token = value.GetString(kPrivetKeyClaimToken, &claim_token);
-  if (got_url || got_token) {
-    delegate_->OnPrivetRegisterClaimToken(this, claim_token, GURL(claim_url));
-  } else {
-    delegate_->OnPrivetRegisterError(this, current_action_,
-                                     FAILURE_MALFORMED_RESPONSE, -1, nullptr);
-  }
-}
-
-void PrivetRegisterOperationImpl::CompleteResponse(
-    const base::DictionaryValue& value) {
-  std::string id;
-  value.GetString(kPrivetKeyDeviceID, &id);
-  ongoing_ = false;
-  expected_id_ = id;
-  StartInfoOperation();
-}
-
-void PrivetRegisterOperationImpl::OnPrivetInfoDone(
-    const base::DictionaryValue* value) {
-  // TODO(noamsml): Simplify error case and depracate HTTP error value in
-  // OnPrivetRegisterError.
-  if (!value) {
-    delegate_->OnPrivetRegisterError(this, kPrivetActionNameInfo,
-                                     FAILURE_NETWORK, -1, nullptr);
-    return;
-  }
-
-  if (!value->HasKey(kPrivetInfoKeyID)) {
-    if (value->HasKey(kPrivetKeyError)) {
-      delegate_->OnPrivetRegisterError(this,
-                                       kPrivetActionNameInfo,
-                                        FAILURE_JSON_ERROR,
-                                       -1,
-                                       value);
-    } else {
-      delegate_->OnPrivetRegisterError(this, kPrivetActionNameInfo,
-                                       FAILURE_MALFORMED_RESPONSE, -1, nullptr);
-    }
-    return;
-  }
-
-  std::string id;
-
-  if (!value->GetString(kPrivetInfoKeyID, &id) ||
-      id != expected_id_) {
-    delegate_->OnPrivetRegisterError(this, kPrivetActionNameInfo,
-                                     FAILURE_MALFORMED_RESPONSE, -1, nullptr);
-  } else {
-    delegate_->OnPrivetRegisterDone(this, id);
-  }
-}
-
-void PrivetRegisterOperationImpl::StartInfoOperation() {
-  info_operation_ = privet_client_->CreateInfoOperation(base::BindOnce(
-      &PrivetRegisterOperationImpl::OnPrivetInfoDone, base::Unretained(this)));
-  info_operation_->Start();
-}
-
-PrivetRegisterOperationImpl::Cancelation::Cancelation(
-    PrivetHTTPClient* privet_client,
-    const std::string& user) {
-  url_loader_ = privet_client->CreateURLLoader(
-      CreatePrivetRegisterURL(kPrivetActionCancel, user), "POST", this);
-  url_loader_->DoNotRetryOnTransientError();
-  url_loader_->Start();
-}
-
-PrivetRegisterOperationImpl::Cancelation::~Cancelation() {
-}
-
-void PrivetRegisterOperationImpl::Cancelation::OnError(
-    int response_code,
-    PrivetURLLoader::ErrorType error) {}
-
-void PrivetRegisterOperationImpl::Cancelation::OnParsedJson(
-    int response_code,
-    const base::DictionaryValue& value,
-    bool has_error) {}
-
-void PrivetRegisterOperationImpl::Cancelation::Cleanup() {
-  // Nothing needs to be done, as base::Owned will delete this object,
-  // this callback is just here to pass ownership of the Cancelation to
-  // the message loop.
-}
-
-PrivetJSONOperationImpl::PrivetJSONOperationImpl(
-    PrivetHTTPClient* privet_client,
-    const std::string& path,
-    const std::string& query_params,
-    PrivetJSONOperation::ResultCallback callback)
-    : privet_client_(privet_client),
-      path_(path),
-      query_params_(query_params),
-      callback_(std::move(callback)) {}
-
-PrivetJSONOperationImpl::~PrivetJSONOperationImpl() {
-}
-
-void PrivetJSONOperationImpl::Start() {
-  url_loader_ = privet_client_->CreateURLLoader(
-      CreatePrivetParamURL(path_, query_params_), "GET", this);
-  url_loader_->DoNotRetryOnTransientError();
-  url_loader_->Start();
-}
-
-PrivetHTTPClient* PrivetJSONOperationImpl::GetHTTPClient() {
-  return privet_client_;
-}
-
-void PrivetJSONOperationImpl::OnError(int response_code,
-                                      PrivetURLLoader::ErrorType error) {
-  if (callback_)
-    std::move(callback_).Run(nullptr);
-}
-
-void PrivetJSONOperationImpl::OnParsedJson(int response_code,
-                                           const base::DictionaryValue& value,
-                                           bool has_error) {
-  if (callback_)
-    std::move(callback_).Run(&value);
-}
-
-void PrivetJSONOperationImpl::OnNeedPrivetToken(
-    PrivetURLLoader::TokenCallback callback) {
-  privet_client_->RefreshPrivetToken(std::move(callback));
-}
-
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-// static
-bool PrivetLocalPrintOperationImpl::run_tasks_immediately_for_testing_ = false;
-
-PrivetLocalPrintOperationImpl::RunTasksImmediatelyForTesting::
-    RunTasksImmediatelyForTesting() {
-  DCHECK(!run_tasks_immediately_for_testing_);
-  run_tasks_immediately_for_testing_ = true;
-}
-
-PrivetLocalPrintOperationImpl::RunTasksImmediatelyForTesting::
-    ~RunTasksImmediatelyForTesting() {
-  DCHECK(run_tasks_immediately_for_testing_);
-  run_tasks_immediately_for_testing_ = false;
-}
-
-PrivetLocalPrintOperationImpl::PrivetLocalPrintOperationImpl(
-    PrivetHTTPClient* privet_client,
-    PrivetLocalPrintOperation::Delegate* delegate)
-    : privet_client_(privet_client), delegate_(delegate) {}
-
-PrivetLocalPrintOperationImpl::~PrivetLocalPrintOperationImpl() {
-}
-
-void PrivetLocalPrintOperationImpl::Start() {
-  DCHECK(!started_);
-
-  // We need to get the /info response so we can know which APIs are available.
-  // TODO(noamsml): Use cached info when available.
-  info_operation_ = privet_client_->CreateInfoOperation(
-      base::BindOnce(&PrivetLocalPrintOperationImpl::OnPrivetInfoDone,
-                     weak_factory_.GetWeakPtr()));
-  info_operation_->Start();
-  started_ = true;
-}
-
-void PrivetLocalPrintOperationImpl::OnPrivetInfoDone(
-    const base::DictionaryValue* value) {
-  if (!value || value->HasKey(kPrivetKeyError)) {
-    delegate_->OnPrivetPrintingError(this, -1);
-    return;
-  }
-
-  has_extended_workflow_ = false;
-  bool has_printing = false;
-  const base::Value* api_list =
-      value->FindKeyOfType(kPrivetInfoKeyAPIList, base::Value::Type::LIST);
-  if (api_list) {
-    for (const auto& api : api_list->GetList()) {
-      if (!api.is_string())
-        continue;
-
-      const std::string& api_str = api.GetString();
-      if (!has_printing && api_str == kPrivetSubmitdocPath)
-        has_printing = true;
-      else if (!has_extended_workflow_ && api_str == kPrivetCreatejobPath)
-        has_extended_workflow_ = true;
-
-      if (has_printing && has_extended_workflow_)
-        break;
-    }
-  }
-
-  if (!has_printing) {
-    delegate_->OnPrivetPrintingError(this, -1);
-    return;
-  }
-
-  StartInitialRequest();
-}
-
-void PrivetLocalPrintOperationImpl::StartInitialRequest() {
-  cloud_devices::printer::ContentTypesCapability content_types;
-  if (content_types.LoadFrom(capabilities_)) {
-    use_pdf_ = content_types.Contains(kPrivetContentTypePDF) ||
-               content_types.Contains(kPrivetContentTypeAny);
-  } else {
-    use_pdf_ = false;
-  }
-
-  if (use_pdf_) {
-    StartPrinting();
-  } else {
-    StartConvertToPWG();
-  }
-}
-
-void PrivetLocalPrintOperationImpl::DoCreatejob() {
-  current_response_ =
-      base::BindOnce(&PrivetLocalPrintOperationImpl::OnCreatejobResponse,
-                     weak_factory_.GetWeakPtr());
-
-  url_loader_ = privet_client_->CreateURLLoader(
-      CreatePrivetURL(kPrivetCreatejobPath), "POST", this);
-  url_loader_->SetUploadData(kContentTypeJSON, ticket_.ToString());
-
-  url_loader_->Start();
-}
-
-void PrivetLocalPrintOperationImpl::DoSubmitdoc() {
-  current_response_ =
-      base::BindOnce(&PrivetLocalPrintOperationImpl::OnSubmitdocResponse,
-                     weak_factory_.GetWeakPtr());
-
-  GURL url = CreatePrivetURL(kPrivetSubmitdocPath);
-
-  url = net::AppendQueryParameter(url,
-                                  kPrivetURLKeyClientName,
-                                  kPrivetURLValueClientName);
-
-  if (!user_.empty()) {
-    url = net::AppendQueryParameter(url,
-                                    kPrivetURLKeyUserName,
-                                    user_);
-  }
-
-  std::u16string shortened_jobname;
-  gfx::ElideString(base::UTF8ToUTF16(jobname_),
-                   kPrivetLocalPrintMaxJobNameLength,
-                   &shortened_jobname);
-
-  if (!jobname_.empty()) {
-    url = net::AppendQueryParameter(
-        url, kPrivetURLKeyJobname, base::UTF16ToUTF8(shortened_jobname));
-  }
-
-  if (!jobid_.empty()) {
-    url = net::AppendQueryParameter(url,
-                                    kPrivetKeyJobID,
-                                    jobid_);
-  }
-
-  url_loader_ = privet_client_->CreateURLLoader(url, "POST", this);
-
-  std::string data_str(reinterpret_cast<const char*>(data_->front()),
-                       data_->size());
-  url_loader_->SetUploadData(
-      use_pdf_ ? kPrivetContentTypePDF : kPrivetContentTypePWGRaster, data_str);
-  url_loader_->Start();
-}
-
-void PrivetLocalPrintOperationImpl::StartPrinting() {
-  if (has_extended_workflow_ && jobid_.empty()) {
-    DoCreatejob();
-  } else {
-    DoSubmitdoc();
-  }
-}
-
-void PrivetLocalPrintOperationImpl::StartConvertToPWG() {
-  using printing::PwgRasterConverter;
-  if (!pwg_raster_converter_)
-    pwg_raster_converter_ = PwgRasterConverter::CreateDefault();
-
-  printing::PwgRasterSettings bitmap_settings =
-      PwgRasterConverter::GetBitmapSettings(capabilities_, ticket_);
-  pwg_raster_converter_->Start(
-      data_.get(),
-      PwgRasterConverter::GetConversionSettings(capabilities_, page_size_,
-                                                bitmap_settings.use_color),
-      bitmap_settings,
-      base::BindOnce(&PrivetLocalPrintOperationImpl::OnPWGRasterConverted,
-                     weak_factory_.GetWeakPtr()));
-}
-
-void PrivetLocalPrintOperationImpl::OnSubmitdocResponse(
-    bool has_error,
-    const base::DictionaryValue* value) {
-  std::string error;
-  // This error is only relevant in the case of extended workflow:
-  // If the print job ID is invalid, retry createjob and submitdoc,
-  // rather than simply retrying the current request.
-  if (has_error && value->GetString(kPrivetKeyError, &error)) {
-    if (has_extended_workflow_ &&
-        error == kPrivetErrorInvalidPrintJob &&
-        invalid_job_retries_ < kPrivetLocalPrintMaxRetries) {
-      invalid_job_retries_++;
-
-      int timeout = kPrivetLocalPrintDefaultTimeout;
-      value->GetInteger(kPrivetKeyTimeout, &timeout);
-
-      double random_scaling_factor =
-          1 + base::RandDouble() * kPrivetMaximumTimeRandomAddition;
-
-      timeout =
-          run_tasks_immediately_for_testing_
-              ? 0
-              : std::max(static_cast<int>(timeout * random_scaling_factor),
-                         kPrivetMinimumTimeout);
-      base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-          FROM_HERE,
-          base::BindOnce(&PrivetLocalPrintOperationImpl::DoCreatejob,
-                         weak_factory_.GetWeakPtr()),
-          base::TimeDelta::FromSeconds(timeout));
-    } else if (use_pdf_ && error == kPrivetErrorInvalidDocumentType) {
-      use_pdf_ = false;
-      StartConvertToPWG();
-    } else {
-      delegate_->OnPrivetPrintingError(this, 200);
-    }
-
-    return;
-  }
-
-  // If we've gotten this far, there are no errors, so we've effectively
-  // succeeded.
-  delegate_->OnPrivetPrintingDone(this);
-}
-
-void PrivetLocalPrintOperationImpl::OnCreatejobResponse(
-    bool has_error,
-    const base::DictionaryValue* value) {
-  if (has_error) {
-    delegate_->OnPrivetPrintingError(this, 200);
-    return;
-  }
-
-  // Try to get job ID from value. If not, |jobid_| will be empty and we will
-  // use simple printing.
-  value->GetString(kPrivetKeyJobID, &jobid_);
-  DoSubmitdoc();
-}
-
-void PrivetLocalPrintOperationImpl::OnPWGRasterConverted(
-    base::ReadOnlySharedMemoryRegion pwg_region) {
-  auto data =
-      base::RefCountedSharedMemoryMapping::CreateFromWholeRegion(pwg_region);
-  if (!data) {
-    delegate_->OnPrivetPrintingError(this, -1);
-    return;
-  }
-
-  data_ = data;
-  StartPrinting();
-}
-
-PrivetHTTPClient* PrivetLocalPrintOperationImpl::GetHTTPClient() {
-  return privet_client_;
-}
-
-void PrivetLocalPrintOperationImpl::OnError(int response_code,
-                                            PrivetURLLoader::ErrorType error) {
-  delegate_->OnPrivetPrintingError(this, -1);
-}
-
-void PrivetLocalPrintOperationImpl::OnParsedJson(
-    int response_code,
-    const base::DictionaryValue& value,
-    bool has_error) {
-  DCHECK(current_response_);
-  std::move(current_response_).Run(has_error, &value);
-}
-
-void PrivetLocalPrintOperationImpl::OnNeedPrivetToken(
-    PrivetURLLoader::TokenCallback callback) {
-  privet_client_->RefreshPrivetToken(std::move(callback));
-}
-
-void PrivetLocalPrintOperationImpl::SetData(
-    scoped_refptr<base::RefCountedMemory> data) {
-  DCHECK(!started_);
-  data_ = data;
-}
-
-void PrivetLocalPrintOperationImpl::SetTicket(base::Value ticket) {
-  DCHECK(!started_);
-  ticket_.InitFromValue(std::move(ticket));
-}
-
-void PrivetLocalPrintOperationImpl::SetCapabilities(
-    const std::string& capabilities) {
-  DCHECK(!started_);
-  capabilities_.InitFromString(capabilities);
-}
-
-void PrivetLocalPrintOperationImpl::SetUsername(const std::string& user) {
-  DCHECK(!started_);
-  user_ = user;
-}
-
-void PrivetLocalPrintOperationImpl::SetJobname(const std::string& jobname) {
-  DCHECK(!started_);
-  jobname_ = jobname;
-}
-
-void PrivetLocalPrintOperationImpl::SetPageSize(const gfx::Size& page_size) {
-  DCHECK(!started_);
-  page_size_ = page_size;
-}
-
-void PrivetLocalPrintOperationImpl::SetPwgRasterConverterForTesting(
-    std::unique_ptr<printing::PwgRasterConverter> pwg_raster_converter) {
-  pwg_raster_converter_ = std::move(pwg_raster_converter);
-}
-#endif  // ENABLE_PRINT_PREVIEW
-
-PrivetHTTPClientImpl::PrivetHTTPClientImpl(
-    const std::string& name,
-    const net::HostPortPair& host_port,
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
-    : name_(name),
-      url_loader_factory_(url_loader_factory),
-      host_port_(host_port) {
-  DCHECK(url_loader_factory_);
-}
-
-PrivetHTTPClientImpl::~PrivetHTTPClientImpl() {
-}
-
-const std::string& PrivetHTTPClientImpl::GetName() {
-  return name_;
-}
-
-std::unique_ptr<PrivetJSONOperation> PrivetHTTPClientImpl::CreateInfoOperation(
-    PrivetJSONOperation::ResultCallback callback) {
-  return std::make_unique<PrivetInfoOperationImpl>(this, std::move(callback));
-}
-
-std::unique_ptr<PrivetURLLoader> PrivetHTTPClientImpl::CreateURLLoader(
-    const GURL& url,
-    const std::string& request_type,
-    PrivetURLLoader::Delegate* delegate) {
-  GURL::Replacements replacements;
-  std::string host = host_port_.HostForURL();
-  replacements.SetHostStr(host);
-  std::string port = base::NumberToString(host_port_.port());
-  replacements.SetPortStr(port);
-
-  net::NetworkTrafficAnnotationTag traffic_annotation =
-      net::DefineNetworkTrafficAnnotation("privet_http_impl", R"(
-        semantics {
-          sender: "Cloud Print"
-          description:
-            "Cloud Print local printing uses these requests to query "
-            "information from printers on local network and send print jobs to "
-            "them."
-          trigger:
-            "Print Preview; New printer on network; chrome://devices/"
-          data:
-            "Printer information, settings and document for printing."
-          destination: OTHER
-        }
-        policy {
-          cookies_allowed: NO
-          setting:
-            "Users can enable or disable background requests by 'Show "
-            "notifications when new printers are detected on the network' in "
-            "Chromium's settings under Advanced Settings, Google Cloud Print. "
-            "User triggered requests, like from print preview or "
-            "chrome://devices/ cannot be disabled."
-          policy_exception_justification:
-            "Not implemented, it's good to do so."
-        })");
-  return std::make_unique<PrivetURLLoader>(url.ReplaceComponents(replacements),
-                                           request_type, url_loader_factory_,
-                                           traffic_annotation, delegate);
-}
-
-void PrivetHTTPClientImpl::RefreshPrivetToken(
-    PrivetURLLoader::TokenCallback callback) {
-  token_callbacks_.push_back(std::move(callback));
-
-  if (info_operation_)
-    return;
-
-  info_operation_ = CreateInfoOperation(base::BindOnce(
-      &PrivetHTTPClientImpl::OnPrivetInfoDone, base::Unretained(this)));
-  info_operation_->Start();
-}
-
-void PrivetHTTPClientImpl::OnPrivetInfoDone(
-    const base::DictionaryValue* value) {
-  info_operation_.reset();
-
-  // If this does not succeed, token will be empty, and an empty string
-  // is our sentinel value, since empty X-Privet-Tokens are not allowed.
-  std::string token;
-  if (value)
-    value->GetString(kPrivetInfoKeyToken, &token);
-
-  TokenCallbackVector token_callbacks;
-  token_callbacks_.swap(token_callbacks);
-
-  for (auto& callback : token_callbacks)
-    std::move(callback).Run(token);
-}
-
-PrivetV1HTTPClientImpl::PrivetV1HTTPClientImpl(
-    std::unique_ptr<PrivetHTTPClient> info_client)
-    : info_client_(std::move(info_client)) {}
-
-PrivetV1HTTPClientImpl::~PrivetV1HTTPClientImpl() {
-}
-
-const std::string& PrivetV1HTTPClientImpl::GetName() {
-  return info_client_->GetName();
-}
-
-std::unique_ptr<PrivetJSONOperation>
-PrivetV1HTTPClientImpl::CreateInfoOperation(
-    PrivetJSONOperation::ResultCallback callback) {
-  return info_client_->CreateInfoOperation(std::move(callback));
-}
-
-std::unique_ptr<PrivetRegisterOperation>
-PrivetV1HTTPClientImpl::CreateRegisterOperation(
-    const std::string& user,
-    PrivetRegisterOperation::Delegate* delegate) {
-  return std::make_unique<PrivetRegisterOperationImpl>(info_client_.get(), user,
-                                                       delegate);
-}
-
-std::unique_ptr<PrivetJSONOperation>
-PrivetV1HTTPClientImpl::CreateCapabilitiesOperation(
-    PrivetJSONOperation::ResultCallback callback) {
-  return std::make_unique<PrivetJSONOperationImpl>(
-      info_client_.get(), kPrivetCapabilitiesPath, "", std::move(callback));
-}
-
-std::unique_ptr<PrivetLocalPrintOperation>
-PrivetV1HTTPClientImpl::CreateLocalPrintOperation(
-    PrivetLocalPrintOperation::Delegate* delegate) {
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-  return std::make_unique<PrivetLocalPrintOperationImpl>(info_client_.get(),
-                                                         delegate);
-#else
-  return nullptr;
-#endif  // ENABLE_PRINT_PREVIEW
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_http_impl.h b/chrome/browser/printing/cloud_print/privet_http_impl.h
deleted file mode 100644
index f828c5aa..0000000
--- a/chrome/browser/printing/cloud_print/privet_http_impl.h
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_IMPL_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_IMPL_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/memory/read_only_shared_memory_region.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "chrome/browser/printing/cloud_print/privet_http.h"
-#include "chrome/browser/printing/cloud_print/privet_url_loader.h"
-#include "components/cloud_devices/common/cloud_device_description.h"
-#include "printing/buildflags/buildflags.h"
-#include "ui/gfx/geometry/size.h"
-
-namespace base {
-class RefCountedMemory;
-}
-
-namespace network {
-class SharedURLLoaderFactory;
-}
-
-namespace cloud_print {
-
-class PrivetHTTPClient;
-
-class PrivetInfoOperationImpl : public PrivetJSONOperation,
-                                public PrivetURLLoader::Delegate {
- public:
-  PrivetInfoOperationImpl(PrivetHTTPClient* privet_client,
-                          PrivetJSONOperation::ResultCallback callback);
-  ~PrivetInfoOperationImpl() override;
-
-  // PrivetJSONOperation:
-  void Start() override;
-  PrivetHTTPClient* GetHTTPClient() override;
-
-  // PrivetURLLoader::Delegate:
-  void OnError(int response_code, PrivetURLLoader::ErrorType error) override;
-  void OnParsedJson(int response_code,
-                    const base::DictionaryValue& value,
-                    bool has_error) override;
-
- private:
-  PrivetHTTPClient* const privet_client_;
-  PrivetJSONOperation::ResultCallback callback_;
-  std::unique_ptr<PrivetURLLoader> url_loader_;
-};
-
-class PrivetRegisterOperationImpl
-    : public PrivetRegisterOperation,
-      public PrivetURLLoader::Delegate,
-      public base::SupportsWeakPtr<PrivetRegisterOperationImpl> {
- public:
-  PrivetRegisterOperationImpl(PrivetHTTPClient* privet_client,
-                              const std::string& user,
-                              PrivetRegisterOperation::Delegate* delegate);
-  ~PrivetRegisterOperationImpl() override;
-
-  // PrivetRegisterOperation:
-  void Start() override;
-  void Cancel() override;
-  void CompleteRegistration() override;
-  PrivetHTTPClient* GetHTTPClient() override;
-
-  // PrivetURLLoader::Delegate:
-  void OnError(int response_code, PrivetURLLoader::ErrorType error) override;
-  void OnParsedJson(int response_code,
-                    const base::DictionaryValue& value,
-                    bool has_error) override;
-  void OnNeedPrivetToken(PrivetURLLoader::TokenCallback callback) override;
-
-  // Used in test to skip delays when posting tasks for cancellation.
-  class RunTasksImmediatelyForTesting final {
-   public:
-    RunTasksImmediatelyForTesting();
-    ~RunTasksImmediatelyForTesting();
-  };
-
- private:
-  class Cancelation : public PrivetURLLoader::Delegate {
-   public:
-    Cancelation(PrivetHTTPClient* privet_client, const std::string& user);
-    ~Cancelation() override;
-
-    // PrivetURLLoader::Delegate:
-    void OnError(int response_code, PrivetURLLoader::ErrorType error) override;
-    void OnParsedJson(int response_code,
-                      const base::DictionaryValue& value,
-                      bool has_error) override;
-
-    void Cleanup();
-
-   private:
-    std::unique_ptr<PrivetURLLoader> url_loader_;
-  };
-
-  // Arguments is JSON value from request.
-  using ResponseHandler =
-      base::OnceCallback<void(const base::DictionaryValue&)>;
-
-  void StartInfoOperation();
-  void OnPrivetInfoDone(const base::DictionaryValue* value);
-
-  void StartResponse(const base::DictionaryValue& value);
-  void GetClaimTokenResponse(const base::DictionaryValue& value);
-  void CompleteResponse(const base::DictionaryValue& value);
-
-  void SendRequest(const std::string& action);
-
-  const std::string user_;
-  std::string current_action_;
-  std::unique_ptr<PrivetURLLoader> url_loader_;
-  PrivetRegisterOperation::Delegate* const delegate_;
-  PrivetHTTPClient* const privet_client_;
-  ResponseHandler next_response_handler_;
-  // Required to ensure destroying completed register operations doesn't cause
-  // extraneous cancelations.
-  bool ongoing_ = false;
-
-  std::unique_ptr<PrivetJSONOperation> info_operation_;
-  std::string expected_id_;
-
-  static bool run_tasks_immediately_for_testing_;
-};
-
-class PrivetJSONOperationImpl : public PrivetJSONOperation,
-                                public PrivetURLLoader::Delegate {
- public:
-  PrivetJSONOperationImpl(PrivetHTTPClient* privet_client,
-                          const std::string& path,
-                          const std::string& query_params,
-                          PrivetJSONOperation::ResultCallback callback);
-  ~PrivetJSONOperationImpl() override;
-
-  // PrivetJSONOperation:
-  void Start() override;
-  PrivetHTTPClient* GetHTTPClient() override;
-
-  // PrivetURLLoader::Delegate:
-  void OnError(int response_code, PrivetURLLoader::ErrorType error) override;
-  void OnParsedJson(int response_code,
-                    const base::DictionaryValue& value,
-                    bool has_error) override;
-  void OnNeedPrivetToken(PrivetURLLoader::TokenCallback callback) override;
-
- private:
-  PrivetHTTPClient* const privet_client_;
-  const std::string path_;
-  const std::string query_params_;
-  PrivetJSONOperation::ResultCallback callback_;
-
-  std::unique_ptr<PrivetURLLoader> url_loader_;
-};
-
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-class PrivetLocalPrintOperationImpl : public PrivetLocalPrintOperation,
-                                      public PrivetURLLoader::Delegate {
- public:
-  PrivetLocalPrintOperationImpl(PrivetHTTPClient* privet_client,
-                                PrivetLocalPrintOperation::Delegate* delegate);
-  ~PrivetLocalPrintOperationImpl() override;
-
-  // PrivetLocalPrintOperation:
-  void Start() override;
-  void SetData(scoped_refptr<base::RefCountedMemory> data) override;
-  void SetTicket(base::Value ticket) override;
-  void SetCapabilities(const std::string& capabilities) override;
-  void SetUsername(const std::string& user) override;
-  void SetJobname(const std::string& jobname) override;
-  void SetPageSize(const gfx::Size& page_size) override;
-  void SetPwgRasterConverterForTesting(
-      std::unique_ptr<printing::PwgRasterConverter> pwg_raster_converter)
-      override;
-  PrivetHTTPClient* GetHTTPClient() override;
-
-  // PrivetURLLoader::Delegate:
-  void OnError(int response_code, PrivetURLLoader::ErrorType error) override;
-  void OnParsedJson(int response_code,
-                    const base::DictionaryValue& value,
-                    bool has_error) override;
-  void OnNeedPrivetToken(PrivetURLLoader::TokenCallback callback) override;
-
-  // Used in test to skip delays when posting tasks for cancellation.
-  class RunTasksImmediatelyForTesting final {
-   public:
-    RunTasksImmediatelyForTesting();
-    ~RunTasksImmediatelyForTesting();
-  };
-
- private:
-  using ResponseCallback =
-      base::OnceCallback<void(/*has_error=*/bool,
-                              const base::DictionaryValue* value)>;
-
-  void StartInitialRequest();
-  void DoCreatejob();
-  void DoSubmitdoc();
-
-  void StartConvertToPWG();
-  void StartPrinting();
-
-  void OnPrivetInfoDone(const base::DictionaryValue* value);
-  void OnSubmitdocResponse(bool has_error,
-                           const base::DictionaryValue* value);
-  void OnCreatejobResponse(bool has_error,
-                           const base::DictionaryValue* value);
-  void OnPWGRasterConverted(base::ReadOnlySharedMemoryRegion pwg_region);
-
-  PrivetHTTPClient* const privet_client_;
-  PrivetLocalPrintOperation::Delegate* const delegate_;
-
-  ResponseCallback current_response_;
-
-  cloud_devices::CloudDeviceDescription ticket_;
-  cloud_devices::CloudDeviceDescription capabilities_;
-
-  scoped_refptr<base::RefCountedMemory> data_;
-
-  bool use_pdf_ = false;
-  bool has_extended_workflow_ = false;
-  bool started_ = false;
-  gfx::Size page_size_;
-
-  std::string user_;
-  std::string jobname_;
-
-  std::string jobid_;
-
-  int invalid_job_retries_ = 0;
-
-  std::unique_ptr<PrivetURLLoader> url_loader_;
-  std::unique_ptr<PrivetJSONOperation> info_operation_;
-  std::unique_ptr<printing::PwgRasterConverter> pwg_raster_converter_;
-
-  base::WeakPtrFactory<PrivetLocalPrintOperationImpl> weak_factory_{this};
-
-  static bool run_tasks_immediately_for_testing_;
-};
-#endif  // ENABLE_PRINT_PREVIEW
-
-class PrivetHTTPClientImpl : public PrivetHTTPClient {
- public:
-  PrivetHTTPClientImpl(
-      const std::string& name,
-      const net::HostPortPair& host_port,
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
-  ~PrivetHTTPClientImpl() override;
-
-  // PrivetHTTPClient:
-  const std::string& GetName() override;
-  std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      PrivetJSONOperation::ResultCallback callback) override;
-  std::unique_ptr<PrivetURLLoader> CreateURLLoader(
-      const GURL& url,
-      const std::string& request_type,
-      PrivetURLLoader::Delegate* delegate) override;
-  void RefreshPrivetToken(
-      PrivetURLLoader::TokenCallback token_callback) override;
-
- private:
-  using TokenCallbackVector = std::vector<PrivetURLLoader::TokenCallback>;
-
-  void OnPrivetInfoDone(const base::DictionaryValue* value);
-
-  const std::string name_;
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-  const net::HostPortPair host_port_;
-
-  std::unique_ptr<PrivetJSONOperation> info_operation_;
-  TokenCallbackVector token_callbacks_;
-
-  DISALLOW_COPY_AND_ASSIGN(PrivetHTTPClientImpl);
-};
-
-class PrivetV1HTTPClientImpl : public PrivetV1HTTPClient {
- public:
-  explicit PrivetV1HTTPClientImpl(
-      std::unique_ptr<PrivetHTTPClient> info_client);
-  ~PrivetV1HTTPClientImpl() override;
-
-  // PrivetV1HTTPClient:
-  const std::string& GetName() override;
-  std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      PrivetJSONOperation::ResultCallback callback) override;
-  std::unique_ptr<PrivetRegisterOperation> CreateRegisterOperation(
-      const std::string& user,
-      PrivetRegisterOperation::Delegate* delegate) override;
-  std::unique_ptr<PrivetJSONOperation> CreateCapabilitiesOperation(
-      PrivetJSONOperation::ResultCallback callback) override;
-  std::unique_ptr<PrivetLocalPrintOperation> CreateLocalPrintOperation(
-      PrivetLocalPrintOperation::Delegate* delegate) override;
-
- private:
-  std::unique_ptr<PrivetHTTPClient> info_client_;
-
-  DISALLOW_COPY_AND_ASSIGN(PrivetV1HTTPClientImpl);
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_HTTP_IMPL_H_
diff --git a/chrome/browser/printing/cloud_print/privet_http_unittest.cc b/chrome/browser/printing/cloud_print/privet_http_unittest.cc
deleted file mode 100644
index 2517376..0000000
--- a/chrome/browser/printing/cloud_print/privet_http_unittest.cc
+++ /dev/null
@@ -1,1052 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_http.h"
-
-#include <map>
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/json/json_reader.h"
-#include "base/json/json_writer.h"
-#include "base/location.h"
-#include "base/path_service.h"
-#include "base/run_loop.h"
-#include "base/single_thread_task_runner.h"
-#include "base/test/bind.h"
-#include "base/test/task_environment.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/printing/cloud_print/privet_http_impl.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/test/browser_task_environment.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "printing/buildflags/buildflags.h"
-#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
-#include "services/network/public/mojom/url_response_head.mojom.h"
-#include "services/network/test/test_shared_url_loader_factory.h"
-#include "services/network/test/test_url_loader_factory.h"
-#include "services/network/test/test_utils.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-#include "chrome/browser/printing/pwg_raster_converter.h"
-#include "printing/mojom/print.mojom.h"
-#include "printing/pwg_raster_settings.h"
-#endif
-
-namespace cloud_print {
-
-namespace {
-
-using content::BrowserThread;
-using net::EmbeddedTestServer;
-using testing::Mock;
-using testing::NiceMock;
-using testing::StrictMock;
-using testing::TestWithParam;
-using testing::ValuesIn;
-using testing::_;
-
-const char kSampleInfoResponse[] =
-    R"({
-         "version": "1.0",
-         "name": "Common printer",
-         "description": "Printer connected through Chrome connector",
-         "url": "https://www.google.com/cloudprint",
-         "type": [ "printer" ],
-         "id": "",
-         "device_state": "idle",
-         "connection_state": "online",
-         "manufacturer": "Google",
-         "model": "Google Chrome",
-         "serial_number": "1111-22222-33333-4444",
-         "firmware": "24.0.1312.52",
-         "uptime": 600,
-         "setup_url": "http://support.google.com/",
-         "support_url": "http://support.google.com/cloudprint/?hl=en",
-         "update_url": "http://support.google.com/cloudprint/?hl=en",
-         "x-privet-token": "SampleTokenForTesting",
-         "api": [
-           "/privet/accesstoken",
-           "/privet/capabilities",
-           "/privet/printer/submitdoc",
-         ]
-       })";
-
-const char kSampleInfoResponseRegistered[] =
-    R"({
-         "version": "1.0",
-         "name": "Common printer",
-         "description": "Printer connected through Chrome connector",
-         "url": "https://www.google.com/cloudprint",
-         "type": [ "printer" ],
-         "id": "MyDeviceID",
-         "device_state": "idle",
-         "connection_state": "online",
-         "manufacturer": "Google",
-         "model": "Google Chrome",
-         "serial_number": "1111-22222-33333-4444",
-         "firmware": "24.0.1312.52",
-         "uptime": 600,
-         "setup_url": "http://support.google.com/",
-         "support_url": "http://support.google.com/cloudprint/?hl=en",
-         "update_url": "http://support.google.com/cloudprint/?hl=en",
-         "x-privet-token": "SampleTokenForTesting",
-         "api": [
-           "/privet/accesstoken",
-           "/privet/capabilities",
-           "/privet/printer/submitdoc",
-         ]
-       })";
-
-const char kSampleRegisterStartResponse[] =
-    R"({
-         "user": "example@google.com",
-         "action": "start"
-       })";
-
-const char kSampleRegisterGetClaimTokenResponse[] =
-    R"({
-         "action": "getClaimToken",
-         "user": "example@google.com",
-         "token": "MySampleToken",
-         "claim_url": "https://domain.com/SoMeUrL"
-       })";
-
-const char kSampleRegisterCompleteResponse[] =
-    R"({
-         "user": "example@google.com",
-         "action": "complete",
-         "device_id": "MyDeviceID"
-       })";
-
-const char kSampleXPrivetErrorResponse[] =
-    R"({ "error": "invalid_x_privet_token" })";
-
-const char kSampleRegisterErrorTransient[] =
-    R"({ "error": "device_busy", "timeout": 1})";
-
-const char kSampleRegisterErrorPermanent[] =
-    R"({ "error": "user_cancel" })";
-
-const char kSampleInfoResponseBadJson[] = "{";
-
-const char kSampleRegisterCancelResponse[] =
-    R"({
-         "user": "example@google.com",
-         "action": "cancel"
-       })";
-
-const char kSampleCapabilitiesResponse[] =
-    R"({
-         "version" : "1.0",
-         "printer" : {
-           "supported_content_type" : [
-             { "content_type" : "application/pdf" },
-             { "content_type" : "image/pwg-raster" }
-           ]
-         }
-       })";
-
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-const char kSampleInfoResponseWithCreatejob[] =
-    R"({
-         "version": "1.0",
-         "name": "Common printer",
-         "description": "Printer connected through Chrome connector",
-         "url": "https://www.google.com/cloudprint",
-         "type": [ "printer" ],
-         "id": "",
-         "device_state": "idle",
-         "connection_state": "online",
-         "manufacturer": "Google",
-         "model": "Google Chrome",
-         "serial_number": "1111-22222-33333-4444",
-         "firmware": "24.0.1312.52",
-         "uptime": 600,
-         "setup_url": "http://support.google.com/",
-         "support_url": "http://support.google.com/cloudprint/?hl=en",
-         "update_url": "http://support.google.com/cloudprint/?hl=en",
-         "x-privet-token": "SampleTokenForTesting",
-         "api": [
-           "/privet/accesstoken",
-           "/privet/capabilities",
-           "/privet/printer/createjob",
-           "/privet/printer/submitdoc",
-         ]
-       })";
-
-const char kSampleLocalPrintResponse[] =
-    R"({
-         "job_id": "123",
-         "expires_in": 500,
-         "job_type": "application/pdf",
-         "job_size": 16,
-         "job_name": "Sample job name",
-       })";
-
-const char kSampleCapabilitiesResponsePWGOnly[] =
-    R"({
-         "version" : "1.0",
-         "printer" : {
-           "supported_content_type" : [
-              { "content_type" : "image/pwg-raster" }
-           ]
-         }
-       })";
-
-const char kSampleErrorResponsePrinterBusy[] =
-    R"({
-         "error": "invalid_print_job",
-         "timeout": 1
-       })";
-
-const char kSampleInvalidDocumentTypeResponse[] =
-    R"({ "error" : "invalid_document_type" })";
-
-const char kSampleCreateJobResponse[] = R"({ "job_id": "1234" })";
-
-const char kSampleCapabilitiesResponseWithAnyMimetype[] =
-    R"({
-         "version" : "1.0",
-         "printer" : {
-           "supported_content_type" : [
-             { "content_type" : "*/*" },
-             { "content_type" : "image/pwg-raster" }
-           ]
-         }
-       })";
-
-const char kSampleCJT[] = R"({ "version" : "1.0" })";
-
-const char kSampleCapabilitiesResponsePWGSettings[] =
-    R"({
-         "version" : "1.0",
-         "printer" : {
-           "pwg_raster_config" : {
-             "document_sheet_back" : "MANUAL_TUMBLE",
-             "reverse_order_streaming": true
-           },
-           "supported_content_type" : [
-             { "content_type" : "image/pwg-raster" }
-           ]
-         }
-       })";
-
-const char kSampleCapabilitiesResponsePWGSettingsMono[] =
-    R"({
-         "version": "1.0",
-         "printer": {
-           "pwg_raster_config": {
-             "document_type_supported": [ "SGRAY_8" ],
-             "document_sheet_back": "ROTATED"
-           }
-         }
-       })";
-
-const char kSampleCJTDuplex[] =
-    R"({
-         "version" : "1.0",
-         "print": { "duplex": {"type": "SHORT_EDGE"} }
-       })";
-
-const char kSampleCJTMono[] =
-    R"({
-         "version" : "1.0",
-         "print": { "color": {"type": "STANDARD_MONOCHROME"} }
-       })";
-#endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW)
-
-const char* const kTestParams[] = {"8.8.4.4", "2001:4860:4860::8888"};
-
-// Returns the representation of the given JSON that would be outputted by
-// JSONWriter. This ensures the same JSON values are represented by the same
-// string.
-std::string NormalizeJson(const std::string& json) {
-  std::string result = json;
-  absl::optional<base::Value> value = base::JSONReader::Read(result);
-  DCHECK(value) << result;
-  base::JSONWriter::Write(*value, &result);
-  return result;
-}
-
-class PrivetHTTPTest : public TestWithParam<const char*> {
- public:
-  PrivetHTTPTest()
-      : kInfoURL(GetUrl("/privet/info")),
-        kRegisterStartURL(
-            GetUrl("/privet/register?action=start&user=example%40google.com")),
-        kRegisterGetTokenURL(GetUrl(
-            "/privet/register?action=getClaimToken&user=example%40google.com")),
-        kRegisterCompleteURL(GetUrl(
-            "/privet/register?action=complete&user=example%40google.com")),
-        kCapabilitiesURL(GetUrl("/privet/capabilities")),
-        kSubmitDocURL(GetUrl("/privet/printer/"
-                             "submitdoc?client_name=Chrome&user_name=sample%"
-                             "40gmail.com&job_name=Sample+job+name")),
-        kSubmitDocWithJobIDURL(
-            GetUrl("/privet/printer/"
-                   "submitdoc?client_name=Chrome&user_name=sample%40gmail.com&"
-                   "job_name=Sample+job+name&job_id=1234")),
-        kCreateJobURL(GetUrl("/privet/printer/createjob")),
-        test_shared_url_loader_factory_(
-            base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
-                &test_url_loader_factory_)) {
-    PrivetURLLoader::ResetTokenMapForTest();
-
-    auto privet_http_client_impl = std::make_unique<PrivetHTTPClientImpl>(
-        "sampleDevice._privet._tcp.local", net::HostPortPair(GetParam(), 6006),
-        test_shared_url_loader_factory_);
-    privet_client_ =
-        PrivetV1HTTPClient::CreateDefault(std::move(privet_http_client_impl));
-
-    test_url_loader_factory_.SetInterceptor(base::BindRepeating(
-        &PrivetHTTPTest::InterceptURL, base::Unretained(this)));
-  }
-
-  GURL GetUrl(const std::string& path) const {
-    std::string host = GetParam();
-    if (host.find(":") != std::string::npos)
-      host = "[" + host + "]";
-    return GURL("http://" + host + ":6006" + path);
-  }
-
- protected:
-  void InterceptURL(const network::ResourceRequest& request) {
-    url_to_resource_requests_[request.url].push_back(request);
-  }
-
-  bool SuccessfulResponse(const GURL& request_url,
-                          std::string content,
-                          net::HttpStatusCode http_status = net::HTTP_OK) {
-    return test_url_loader_factory_.SimulateResponseForPendingRequest(
-        request_url, network::URLLoaderCompletionStatus(net::OK),
-        network::CreateURLResponseHead(http_status), content);
-  }
-
-  std::string GetUploadDataAsNormalizedJSON(const GURL& url) {
-    std::string data = GetUploadData(url);
-    if (data.empty())
-      return data;
-    return NormalizeJson(data);
-  }
-
-  std::string GetUploadData(const GURL& url) {
-    auto it = url_to_resource_requests_.find(url);
-    if (it == url_to_resource_requests_.end())
-      return std::string();
-    const std::vector<network::ResourceRequest>& resource_requests = it->second;
-    DCHECK(!resource_requests.empty());
-
-    const network::ResourceRequest& resource_request = resource_requests[0];
-    return network::GetUploadData(resource_request);
-  }
-
-  const GURL kInfoURL;
-  const GURL kRegisterStartURL;
-  const GURL kRegisterGetTokenURL;
-  const GURL kRegisterCompleteURL;
-  const GURL kCapabilitiesURL;
-  const GURL kSubmitDocURL;
-  const GURL kSubmitDocWithJobIDURL;
-  const GURL kCreateJobURL;
-
-  base::test::TaskEnvironment task_environment_;
-  network::TestURLLoaderFactory test_url_loader_factory_;
-  scoped_refptr<network::WeakWrapperSharedURLLoaderFactory>
-      test_shared_url_loader_factory_;
-  std::unique_ptr<PrivetV1HTTPClient> privet_client_;
-  std::map<GURL, std::vector<network::ResourceRequest>>
-      url_to_resource_requests_;
-};
-
-class MockJSONCallback{
- public:
-  void OnPrivetJSONDone(const base::DictionaryValue* value) {
-    value_.reset(value ? value->DeepCopy() : nullptr);
-    OnPrivetJSONDoneInternal();
-  }
-
-  MOCK_METHOD0(OnPrivetJSONDoneInternal, void());
-
-  const base::DictionaryValue* value() { return value_.get(); }
-  PrivetJSONOperation::ResultCallback callback() {
-    return base::BindOnce(&MockJSONCallback::OnPrivetJSONDone,
-                          base::Unretained(this));
-  }
- protected:
-  std::unique_ptr<base::DictionaryValue> value_;
-};
-
-class MockRegisterDelegate : public PrivetRegisterOperation::Delegate {
- public:
-  MOCK_METHOD3(OnPrivetRegisterClaimToken,
-               void(PrivetRegisterOperation* operation,
-                    const std::string& token,
-                    const GURL& url));
-
-  void OnPrivetRegisterError(
-      PrivetRegisterOperation* operation,
-      const std::string& action,
-      PrivetRegisterOperation::FailureReason reason,
-      int printer_http_code,
-      const base::DictionaryValue* json) override {
-    // TODO(noamsml): Save and test for JSON?
-    OnPrivetRegisterErrorInternal(action, reason, printer_http_code);
-  }
-
-  MOCK_METHOD3(OnPrivetRegisterErrorInternal,
-               void(const std::string& action,
-                    PrivetRegisterOperation::FailureReason reason,
-                    int printer_http_code));
-
-  MOCK_METHOD2(OnPrivetRegisterDone,
-               void(PrivetRegisterOperation* operation,
-                    const std::string& device_id));
-};
-
-class MockLocalPrintDelegate : public PrivetLocalPrintOperation::Delegate {
- public:
-  MOCK_METHOD1(OnPrivetPrintingDone, void(const PrivetLocalPrintOperation*));
-  MOCK_METHOD2(OnPrivetPrintingError,
-               void(const PrivetLocalPrintOperation* print_operation,
-                    int http_code));
-};
-
-class PrivetInfoTest : public PrivetHTTPTest {
- public:
-  void SetUp() override {
-    info_operation_ = privet_client_->CreateInfoOperation(
-        info_callback_.callback());
-  }
-
- protected:
-  std::unique_ptr<PrivetJSONOperation> info_operation_;
-  StrictMock<MockJSONCallback> info_callback_;
-};
-
-INSTANTIATE_TEST_SUITE_P(PrivetTests, PrivetInfoTest, ValuesIn(kTestParams));
-
-TEST_P(PrivetInfoTest, SuccessfulInfo) {
-  info_operation_->Start();
-
-  EXPECT_CALL(info_callback_, OnPrivetJSONDoneInternal());
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-}
-
-TEST_P(PrivetInfoTest, InfoFailureHTTP) {
-  info_operation_->Start();
-
-  EXPECT_CALL(info_callback_, OnPrivetJSONDoneInternal());
-  EXPECT_TRUE(
-      SuccessfulResponse(kInfoURL, kSampleInfoResponse, net::HTTP_NOT_FOUND));
-}
-
-class PrivetRegisterTest : public PrivetHTTPTest {
- protected:
-  void SetUp() override {
-    info_operation_ = privet_client_->CreateInfoOperation(
-        info_callback_.callback());
-    register_operation_ =
-        privet_client_->CreateRegisterOperation("example@google.com",
-                                                &register_delegate_);
-  }
-
-  std::unique_ptr<PrivetJSONOperation> info_operation_;
-  NiceMock<MockJSONCallback> info_callback_;
-  std::unique_ptr<PrivetRegisterOperation> register_operation_;
-  StrictMock<MockRegisterDelegate> register_delegate_;
-  PrivetURLLoader::RetryImmediatelyForTest retry_immediately_;
-};
-
-INSTANTIATE_TEST_SUITE_P(PrivetTests,
-                         PrivetRegisterTest,
-                         ValuesIn(kTestParams));
-
-TEST_P(PrivetRegisterTest, RegisterSuccessSimple) {
-  register_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterStartURL, kSampleRegisterStartResponse));
-
-  EXPECT_CALL(register_delegate_,
-              OnPrivetRegisterClaimToken(_, "MySampleToken",
-                                         GURL("https://domain.com/SoMeUrL")));
-
-  EXPECT_TRUE(SuccessfulResponse(kRegisterGetTokenURL,
-                                 kSampleRegisterGetClaimTokenResponse));
-
-  register_operation_->CompleteRegistration();
-
-  EXPECT_TRUE(SuccessfulResponse(kRegisterCompleteURL,
-                                 kSampleRegisterCompleteResponse));
-
-  EXPECT_CALL(register_delegate_, OnPrivetRegisterDone(_, "MyDeviceID"));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseRegistered));
-}
-
-TEST_P(PrivetRegisterTest, RegisterXSRFFailure) {
-  register_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterStartURL, kSampleRegisterStartResponse));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterGetTokenURL, kSampleXPrivetErrorResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_CALL(register_delegate_,
-              OnPrivetRegisterClaimToken(_, "MySampleToken",
-                                         GURL("https://domain.com/SoMeUrL")));
-
-  EXPECT_TRUE(SuccessfulResponse(kRegisterGetTokenURL,
-                                 kSampleRegisterGetClaimTokenResponse));
-}
-
-TEST_P(PrivetRegisterTest, TransientFailure) {
-  register_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  // Make the registration request fail the first time and work after that.
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterStartURL, kSampleRegisterErrorTransient));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterStartURL, kSampleRegisterStartResponse));
-}
-
-TEST_P(PrivetRegisterTest, PermanentFailure) {
-  register_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterStartURL, kSampleRegisterStartResponse));
-
-  EXPECT_CALL(
-      register_delegate_,
-      OnPrivetRegisterErrorInternal(
-          "getClaimToken", PrivetRegisterOperation::FAILURE_JSON_ERROR, 200));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterGetTokenURL, kSampleRegisterErrorPermanent));
-}
-
-TEST_P(PrivetRegisterTest, InfoFailure) {
-  register_operation_->Start();
-
-  EXPECT_CALL(register_delegate_,
-              OnPrivetRegisterErrorInternal(
-                  "start",
-                  PrivetRegisterOperation::FAILURE_TOKEN,
-                  -1));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseBadJson));
-}
-
-TEST_P(PrivetRegisterTest, RegisterCancel) {
-  register_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kRegisterStartURL, kSampleRegisterStartResponse));
-
-  register_operation_->Cancel();
-  EXPECT_TRUE(SuccessfulResponse(
-      GetUrl("/privet/register?action=cancel&user=example%40google.com"),
-      kSampleRegisterCancelResponse));
-}
-
-class PrivetCapabilitiesTest : public PrivetHTTPTest {
- public:
-  void SetUp() override {
-    capabilities_operation_ = privet_client_->CreateCapabilitiesOperation(
-        capabilities_callback_.callback());
-  }
-
- protected:
-  std::unique_ptr<PrivetJSONOperation> capabilities_operation_;
-  StrictMock<MockJSONCallback> capabilities_callback_;
-};
-
-INSTANTIATE_TEST_SUITE_P(PrivetTests,
-                         PrivetCapabilitiesTest,
-                         ValuesIn(kTestParams));
-
-TEST_P(PrivetCapabilitiesTest, SuccessfulCapabilities) {
-  capabilities_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kCapabilitiesURL, kSampleCapabilitiesResponse));
-
-  std::string version;
-  EXPECT_TRUE(capabilities_callback_.value()->GetString("version", &version));
-  EXPECT_EQ("1.0", version);
-}
-
-TEST_P(PrivetCapabilitiesTest, CacheToken) {
-  capabilities_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kCapabilitiesURL, kSampleCapabilitiesResponse));
-
-  capabilities_operation_ = privet_client_->CreateCapabilitiesOperation(
-      capabilities_callback_.callback());
-
-  capabilities_operation_->Start();
-
-  EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kCapabilitiesURL, kSampleCapabilitiesResponse));
-}
-
-TEST_P(PrivetCapabilitiesTest, BadToken) {
-  capabilities_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kCapabilitiesURL, kSampleXPrivetErrorResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kCapabilitiesURL, kSampleCapabilitiesResponse));
-}
-
-#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-// A note on PWG raster conversion: The fake PWG raster converter simply returns
-// the input as the converted data. The output isn't checked anyway.
-// converts strings to file paths based on them by appending "test.pdf", since
-// it's easier to test that way. Instead of using a mock, we simply check if the
-// request is uploading a file that is based on this pattern.
-class FakePwgRasterConverter : public printing::PwgRasterConverter {
- public:
-  void Start(const base::RefCountedMemory* data,
-             const printing::PdfRenderSettings& conversion_settings,
-             const printing::PwgRasterSettings& bitmap_settings,
-             ResultCallback callback) override {
-    base::MappedReadOnlyRegion memory =
-        base::ReadOnlySharedMemoryRegion::Create(data->size());
-    if (!memory.mapping.IsValid()) {
-      ADD_FAILURE() << "Failed to create pwg raster shared memory.";
-      std::move(callback).Run(base::ReadOnlySharedMemoryRegion());
-      return;
-    }
-
-    memcpy(memory.mapping.memory(), data->front(), data->size());
-    bitmap_settings_ = bitmap_settings;
-    std::move(callback).Run(std::move(memory.region));
-  }
-
-  const printing::PwgRasterSettings& bitmap_settings() {
-    return bitmap_settings_;
-  }
-
- private:
-  printing::PwgRasterSettings bitmap_settings_;
-};
-
-class PrivetLocalPrintTest : public PrivetHTTPTest {
- public:
-  void SetUp() override {
-    PrivetURLLoader::ResetTokenMapForTest();
-
-    local_print_operation_ = privet_client_->CreateLocalPrintOperation(
-        &local_print_delegate_);
-
-    auto pwg_converter = std::make_unique<FakePwgRasterConverter>();
-    pwg_converter_ = pwg_converter.get();
-    local_print_operation_->SetPwgRasterConverterForTesting(
-        std::move(pwg_converter));
-  }
-
-  scoped_refptr<base::RefCountedBytes> RefCountedBytesFromString(
-      base::StringPiece str) {
-    std::vector<unsigned char> str_vec;
-    str_vec.insert(str_vec.begin(), str.begin(), str.end());
-    return base::RefCountedBytes::TakeVector(&str_vec);
-  }
-
- protected:
-  std::unique_ptr<PrivetLocalPrintOperation> local_print_operation_;
-  StrictMock<MockLocalPrintDelegate> local_print_delegate_;
-  FakePwgRasterConverter* pwg_converter_;
-  PrivetLocalPrintOperationImpl::RunTasksImmediatelyForTesting
-      run_tasks_immediately_for_local_print_;
-};
-
-INSTANTIATE_TEST_SUITE_P(PrivetTests,
-                         PrivetLocalPrintTest,
-                         ValuesIn(kTestParams));
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrint) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  local_print_operation_->SetData(RefCountedBytesFromString(
-      "Sample print data"));
-  local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(SuccessfulResponse(kSubmitDocURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("Sample print data", GetUploadData(kSubmitDocURL));
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrintWithAnyMimetype) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  local_print_operation_->SetData(
-      RefCountedBytesFromString("Sample print data"));
-  local_print_operation_->SetCapabilities(
-      kSampleCapabilitiesResponseWithAnyMimetype);
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(SuccessfulResponse(kSubmitDocURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("Sample print data", GetUploadData(kSubmitDocURL));
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulPWGLocalPrint) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  local_print_operation_->SetData(RefCountedBytesFromString("foobar"));
-  local_print_operation_->SetCapabilities(kSampleCapabilitiesResponsePWGOnly);
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(SuccessfulResponse(kSubmitDocURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("foobar", GetUploadData(kSubmitDocURL));
-
-  EXPECT_EQ(printing::mojom::DuplexMode::kSimplex,
-            pwg_converter_->bitmap_settings().duplex_mode);
-  EXPECT_EQ(printing::TRANSFORM_NORMAL,
-            pwg_converter_->bitmap_settings().odd_page_transform);
-  EXPECT_FALSE(pwg_converter_->bitmap_settings().rotate_all_pages);
-  EXPECT_FALSE(pwg_converter_->bitmap_settings().reverse_page_order);
-
-  // Defaults to true when the color is not specified.
-  EXPECT_TRUE(pwg_converter_->bitmap_settings().use_color);
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulPWGLocalPrintDuplex) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  local_print_operation_->SetData(RefCountedBytesFromString("foobar"));
-  absl::optional<base::Value> ticket = base::JSONReader::Read(kSampleCJTDuplex);
-  ASSERT_TRUE(ticket);
-  local_print_operation_->SetTicket(std::move(*ticket));
-  local_print_operation_->SetCapabilities(
-      kSampleCapabilitiesResponsePWGSettings);
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseWithCreatejob));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-  EXPECT_EQ(NormalizeJson(kSampleCJTDuplex),
-            GetUploadDataAsNormalizedJSON(kCreateJobURL));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kSubmitDocWithJobIDURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("foobar", GetUploadData(kSubmitDocWithJobIDURL));
-
-  EXPECT_EQ(printing::mojom::DuplexMode::kShortEdge,
-            pwg_converter_->bitmap_settings().duplex_mode);
-  EXPECT_EQ(printing::TRANSFORM_ROTATE_180,
-            pwg_converter_->bitmap_settings().odd_page_transform);
-  EXPECT_FALSE(pwg_converter_->bitmap_settings().rotate_all_pages);
-  EXPECT_TRUE(pwg_converter_->bitmap_settings().reverse_page_order);
-
-  // Defaults to true when the color is not specified.
-  EXPECT_TRUE(pwg_converter_->bitmap_settings().use_color);
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulPWGLocalPrintMono) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  local_print_operation_->SetData(RefCountedBytesFromString("foobar"));
-  absl::optional<base::Value> ticket = base::JSONReader::Read(kSampleCJTMono);
-  ASSERT_TRUE(ticket);
-  local_print_operation_->SetTicket(std::move(*ticket));
-  local_print_operation_->SetCapabilities(
-      kSampleCapabilitiesResponsePWGSettings);
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseWithCreatejob));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-  EXPECT_EQ(NormalizeJson(kSampleCJTMono),
-            GetUploadDataAsNormalizedJSON(kCreateJobURL));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kSubmitDocWithJobIDURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("foobar", GetUploadData(kSubmitDocWithJobIDURL));
-
-  EXPECT_EQ(printing::TRANSFORM_NORMAL,
-            pwg_converter_->bitmap_settings().odd_page_transform);
-  EXPECT_FALSE(pwg_converter_->bitmap_settings().rotate_all_pages);
-  EXPECT_TRUE(pwg_converter_->bitmap_settings().reverse_page_order);
-
-  // Ticket specified mono, but no SGRAY_8 color capability.
-  EXPECT_TRUE(pwg_converter_->bitmap_settings().use_color);
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulPWGLocalPrintMonoToGRAY8Printer) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  local_print_operation_->SetData(RefCountedBytesFromString("foobar"));
-  absl::optional<base::Value> ticket = base::JSONReader::Read(kSampleCJTMono);
-  ASSERT_TRUE(ticket);
-  local_print_operation_->SetTicket(std::move(*ticket));
-  local_print_operation_->SetCapabilities(
-      kSampleCapabilitiesResponsePWGSettingsMono);
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseWithCreatejob));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-  EXPECT_EQ(NormalizeJson(kSampleCJTMono),
-            GetUploadDataAsNormalizedJSON(kCreateJobURL));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kSubmitDocWithJobIDURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("foobar", GetUploadData(kSubmitDocWithJobIDURL));
-
-  EXPECT_EQ(printing::TRANSFORM_NORMAL,
-            pwg_converter_->bitmap_settings().odd_page_transform);
-  EXPECT_FALSE(pwg_converter_->bitmap_settings().rotate_all_pages);
-  EXPECT_FALSE(pwg_converter_->bitmap_settings().reverse_page_order);
-
-  // Ticket specified mono, and SGRAY_8 color capability exists.
-  EXPECT_FALSE(pwg_converter_->bitmap_settings().use_color);
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrintWithCreatejob) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  absl::optional<base::Value> ticket = base::JSONReader::Read(kSampleCJT);
-  ASSERT_TRUE(ticket);
-  local_print_operation_->SetTicket(std::move(*ticket));
-  local_print_operation_->SetData(
-      RefCountedBytesFromString("Sample print data"));
-  local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseWithCreatejob));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-  EXPECT_EQ(NormalizeJson(kSampleCJT),
-            GetUploadDataAsNormalizedJSON(kCreateJobURL));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kSubmitDocWithJobIDURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("Sample print data", GetUploadData(kSubmitDocWithJobIDURL));
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrintWithOverlongName) {
-  const GURL kSubmitDocURL = GetUrl(
-      "/privet/printer/"
-      "submitdoc?client_name=Chrome&user_name=sample%40gmail.com&job_name="
-      "123456789%3A123456789%3A123456789%3A1...123456789%3A123456789%"
-      "3A123456789%3A&job_id=1234");
-
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname(
-      "123456789:123456789:123456789:123456789:123456789:123456789:123456789:");
-  absl::optional<base::Value> ticket = base::JSONReader::Read(kSampleCJT);
-  ASSERT_TRUE(ticket);
-  local_print_operation_->SetTicket(std::move(*ticket));
-  local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
-  local_print_operation_->SetData(
-      RefCountedBytesFromString("Sample print data"));
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseWithCreatejob));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-  EXPECT_EQ(NormalizeJson(kSampleCJT),
-            GetUploadDataAsNormalizedJSON(kCreateJobURL));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(SuccessfulResponse(kSubmitDocURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("Sample print data", GetUploadData(kSubmitDocURL));
-}
-
-TEST_P(PrivetLocalPrintTest, PDFPrintInvalidDocumentTypeRetry) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  absl::optional<base::Value> ticket = base::JSONReader::Read(kSampleCJT);
-  ASSERT_TRUE(ticket);
-  local_print_operation_->SetTicket(std::move(*ticket));
-  local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
-  local_print_operation_->SetData(RefCountedBytesFromString("sample_data"));
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseWithCreatejob));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-  EXPECT_EQ(NormalizeJson(kSampleCJT),
-            GetUploadDataAsNormalizedJSON(kCreateJobURL));
-
-  EXPECT_TRUE(SuccessfulResponse(kSubmitDocWithJobIDURL,
-                                 kSampleInvalidDocumentTypeResponse));
-  EXPECT_EQ("sample_data", GetUploadData(kSubmitDocWithJobIDURL));
-
-  EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDone(_));
-
-  EXPECT_TRUE(
-      SuccessfulResponse(kSubmitDocWithJobIDURL, kSampleLocalPrintResponse));
-  EXPECT_EQ("sample_data", GetUploadData(kSubmitDocWithJobIDURL));
-}
-
-TEST_P(PrivetLocalPrintTest, LocalPrintRetryOnInvalidJobID) {
-  local_print_operation_->SetUsername("sample@gmail.com");
-  local_print_operation_->SetJobname("Sample job name");
-  absl::optional<base::Value> ticket = base::JSONReader::Read(kSampleCJT);
-  ASSERT_TRUE(ticket);
-  local_print_operation_->SetTicket(std::move(*ticket));
-  local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
-  local_print_operation_->SetData(
-      RefCountedBytesFromString("Sample print data"));
-  local_print_operation_->Start();
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponseWithCreatejob));
-
-  EXPECT_TRUE(SuccessfulResponse(kInfoURL, kSampleInfoResponse));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-  EXPECT_EQ(NormalizeJson(kSampleCJT),
-            GetUploadDataAsNormalizedJSON(kCreateJobURL));
-
-  EXPECT_TRUE(SuccessfulResponse(kSubmitDocWithJobIDURL,
-                                 kSampleErrorResponsePrinterBusy));
-  EXPECT_EQ("Sample print data", GetUploadData(kSubmitDocWithJobIDURL));
-
-  EXPECT_TRUE(SuccessfulResponse(kCreateJobURL, kSampleCreateJobResponse));
-}
-#endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW)
-
-class PrivetHttpWithServerTest : public ::testing::Test {
- protected:
-  PrivetHttpWithServerTest()
-      : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP),
-        shared_url_loader_factory_(
-            base::MakeRefCounted<network::TestSharedURLLoaderFactory>()) {}
-
-  void SetUp() override {
-    server_ =
-        std::make_unique<EmbeddedTestServer>(EmbeddedTestServer::TYPE_HTTP);
-
-    base::FilePath test_data_dir;
-    ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir));
-    server_->ServeFilesFromDirectory(
-        test_data_dir.Append(FILE_PATH_LITERAL("chrome/test/data")));
-    ASSERT_TRUE(server_->Start());
-
-    client_ = std::make_unique<PrivetHTTPClientImpl>(
-        "test", server_->host_port_pair(), shared_url_loader_factory_);
-  }
-
-  content::BrowserTaskEnvironment task_environment_;
-  std::unique_ptr<EmbeddedTestServer> server_;
-  std::unique_ptr<PrivetHTTPClientImpl> client_;
-  scoped_refptr<network::TestSharedURLLoaderFactory> shared_url_loader_factory_;
-};
-
-class MockPrivetURLLoaderDelegate : public PrivetURLLoader::Delegate {
- public:
-  // GMock does not like mocking methods with movable parameters.
-  void OnNeedPrivetToken(PrivetURLLoader::TokenCallback callback) override {
-    std::move(callback).Run("abc");
-  }
-  MOCK_METHOD2(OnError,
-               void(int response_code, PrivetURLLoader::ErrorType error));
-  MOCK_METHOD3(OnParsedJson,
-               void(int response_code,
-                    const base::DictionaryValue& value,
-                    bool has_error));
-  MOCK_METHOD3(OnRawData,
-               bool(bool response_is_file,
-                    const std::string& data_string,
-                    const base::FilePath& data_file));
-};
-
-TEST_F(PrivetHttpWithServerTest, HttpServer) {
-  StrictMock<MockPrivetURLLoaderDelegate> delegate_;
-
-  std::unique_ptr<PrivetURLLoader> url_loader = client_->CreateURLLoader(
-      server_->GetURL("/simple.html"), "GET", &delegate_);
-  url_loader->SetMaxRetriesForTest(1);
-  url_loader->Start();
-
-  base::RunLoop run_loop;
-  EXPECT_CALL(delegate_, OnRawData(_, _, _))
-      .WillOnce(testing::InvokeWithoutArgs([&]() {
-        run_loop.Quit();
-        return true;
-      }));
-  run_loop.Run();
-}
-
-}  // namespace
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_local_printer_lister.cc b/chrome/browser/printing/cloud_print/privet_local_printer_lister.cc
deleted file mode 100644
index fa0812a2..0000000
--- a/chrome/browser/printing/cloud_print/privet_local_printer_lister.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_local_printer_lister.h"
-
-#include <stddef.h>
-
-#include <memory>
-#include <string>
-#include <utility>
-
-#include "base/bind.h"
-#include "chrome/browser/printing/cloud_print/privet_constants.h"
-#include "chrome/browser/printing/cloud_print/privet_device_lister_impl.h"
-#include "chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-
-namespace cloud_print {
-
-struct PrivetLocalPrinterLister::DeviceContext {
-  std::unique_ptr<PrivetHTTPResolution> privet_resolution;
-  std::unique_ptr<PrivetHTTPClient> privet_client;
-  std::unique_ptr<PrivetJSONOperation> info_operation;
-  DeviceDescription description;
-
-  bool has_local_printing = false;
-};
-
-PrivetLocalPrinterLister::PrivetLocalPrinterLister(
-    local_discovery::ServiceDiscoveryClient* service_discovery_client,
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-    Delegate* delegate)
-    : privet_http_factory_(
-          PrivetHTTPAsynchronousFactory::CreateInstance(url_loader_factory)),
-      delegate_(delegate),
-      privet_lister_(
-          new PrivetDeviceListerImpl(service_discovery_client, this)) {}
-
-PrivetLocalPrinterLister::~PrivetLocalPrinterLister() {
-}
-
-void PrivetLocalPrinterLister::Start() {
-  privet_lister_->Start();
-  privet_lister_->DiscoverNewDevices();
-}
-
-void PrivetLocalPrinterLister::Stop() {
-  privet_lister_.reset();
-}
-
-void PrivetLocalPrinterLister::DeviceChanged(
-    const std::string& name,
-    const DeviceDescription& description) {
-  if (description.type != kPrivetTypePrinter)
-    return;
-
-  auto it = device_contexts_.find(name);
-  if (it != device_contexts_.end()) {
-    it->second->description = description;
-    delegate_->LocalPrinterChanged(name, it->second->has_local_printing,
-                                   description);
-    return;
-  }
-
-  auto context = std::make_unique<DeviceContext>();
-  context->has_local_printing = false;
-  context->description = description;
-  context->privet_resolution = privet_http_factory_->CreatePrivetHTTP(name);
-
-  DeviceContext* context_ptr = context.get();
-  device_contexts_[name] = std::move(context);
-  context_ptr->privet_resolution->Start(
-      description.address,
-      base::BindOnce(&PrivetLocalPrinterLister::OnPrivetResolved,
-                     base::Unretained(this), name));
-}
-
-void PrivetLocalPrinterLister::DeviceCacheFlushed() {
-  device_contexts_.clear();
-  delegate_->LocalPrinterCacheFlushed();
-}
-
-void PrivetLocalPrinterLister::OnPrivetResolved(
-    const std::string& name,
-    std::unique_ptr<PrivetHTTPClient> http_client) {
-  if (!http_client) {
-    // Remove device if we can't resolve it.
-    device_contexts_.erase(name);
-    return;
-  }
-  auto it = device_contexts_.find(http_client->GetName());
-  DCHECK(it != device_contexts_.end());
-
-  it->second->info_operation = http_client->CreateInfoOperation(base::BindOnce(
-      &PrivetLocalPrinterLister::OnPrivetInfoDone, base::Unretained(this),
-      it->second.get(), http_client->GetName()));
-  it->second->privet_client = std::move(http_client);
-  it->second->info_operation->Start();
-}
-
-void PrivetLocalPrinterLister::OnPrivetInfoDone(
-    DeviceContext* context,
-    const std::string& name,
-    const base::DictionaryValue* json_value) {
-  bool has_local_printing = false;
-  const base::ListValue* api_list = nullptr;
-  if (json_value && json_value->GetList(kPrivetInfoKeyAPIList, &api_list)) {
-    for (size_t i = 0; i < api_list->GetSize(); ++i) {
-      std::string api;
-      api_list->GetString(i, &api);
-      if (api == kPrivetSubmitdocPath) {
-        has_local_printing = true;
-        break;
-      }
-    }
-  }
-
-  context->has_local_printing = has_local_printing;
-  delegate_->LocalPrinterChanged(name, has_local_printing,
-                                 context->description);
-}
-
-void PrivetLocalPrinterLister::DeviceRemoved(const std::string& device_name) {
-  size_t removed = device_contexts_.erase(device_name);
-  if (removed)
-    delegate_->LocalPrinterRemoved(device_name);
-}
-
-const DeviceDescription* PrivetLocalPrinterLister::GetDeviceDescription(
-    const std::string& name) {
-  auto it = device_contexts_.find(name);
-  return (it != device_contexts_.end()) ? &it->second->description : nullptr;
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_local_printer_lister.h b/chrome/browser/printing/cloud_print/privet_local_printer_lister.h
deleted file mode 100644
index 4c036582..0000000
--- a/chrome/browser/printing/cloud_print/privet_local_printer_lister.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_LOCAL_PRINTER_LISTER_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_LOCAL_PRINTER_LISTER_H_
-
-#include <map>
-#include <memory>
-#include <string>
-
-#include "chrome/browser/local_discovery/service_discovery_client.h"
-#include "chrome/browser/printing/cloud_print/privet_device_lister.h"
-#include "chrome/browser/printing/cloud_print/privet_http.h"
-#include "chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h"
-
-namespace network {
-class SharedURLLoaderFactory;
-}
-
-namespace cloud_print {
-
-// This is an adapter to PrivetDeviceLister that finds printers and checks if
-// they support Privet local printing.
-class PrivetLocalPrinterLister : PrivetDeviceLister::Delegate {
- public:
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-    virtual void LocalPrinterChanged(const std::string& name,
-                                     bool has_local_printing,
-                                     const DeviceDescription& description) = 0;
-    virtual void LocalPrinterRemoved(const std::string& name) = 0;
-    virtual void LocalPrinterCacheFlushed() = 0;
-  };
-
-  PrivetLocalPrinterLister(
-      local_discovery::ServiceDiscoveryClient* service_discovery_client,
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-      Delegate* delegate);
-  ~PrivetLocalPrinterLister() override;
-
-  void Start();
-
-  // Stops listening/listing, keeps the data.
-  void Stop();
-
-  const DeviceDescription* GetDeviceDescription(const std::string& name);
-
-  // PrivetDeviceLister::Delegate implementation.
-  void DeviceChanged(const std::string& name,
-                     const DeviceDescription& description) override;
-  void DeviceRemoved(const std::string& name) override;
-  void DeviceCacheFlushed() override;
-
- private:
-  struct DeviceContext;
-
-  using DeviceContextMap =
-      std::map<std::string, std::unique_ptr<DeviceContext>>;
-
-  void OnPrivetInfoDone(DeviceContext* context,
-                        const std::string& name,
-                        const base::DictionaryValue* json_value);
-
-  void OnPrivetResolved(const std::string& name,
-                        std::unique_ptr<PrivetHTTPClient> http_client);
-
-  std::unique_ptr<PrivetHTTPAsynchronousFactory> privet_http_factory_;
-  DeviceContextMap device_contexts_;
-  Delegate* const delegate_;
-
-  std::unique_ptr<PrivetDeviceLister> privet_lister_;
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_LOCAL_PRINTER_LISTER_H_
diff --git a/chrome/browser/printing/cloud_print/privet_local_printer_lister_unittest.cc b/chrome/browser/printing/cloud_print/privet_local_printer_lister_unittest.cc
deleted file mode 100644
index 8ce760c..0000000
--- a/chrome/browser/printing/cloud_print/privet_local_printer_lister_unittest.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_local_printer_lister.h"
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <memory>
-
-#include "base/run_loop.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/local_discovery/test_service_discovery_client.h"
-#include "chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h"
-#include "content/public/test/browser_task_environment.h"
-#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
-#include "services/network/test/test_url_loader_factory.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using local_discovery::TestServiceDiscoveryClient;
-
-using testing::_;
-using testing::AtLeast;
-using testing::StrictMock;
-
-namespace cloud_print {
-
-namespace {
-
-const uint8_t kAnnouncePacket[] = {
-    // Header
-    0x00, 0x00,  // ID is zeroed out
-    0x80, 0x00,  // Standard query response, no error
-    0x00, 0x00,  // No questions (for simplicity)
-    0x00, 0x05,  // 5 RR (answers)
-    0x00, 0x00,  // 0 authority RRs
-    0x00, 0x00,  // 0 additional RRs
-    0x07, '_',  'p',  'r',  'i',  'v',  'e',  't',  0x04, '_',
-    't',  'c',  'p',  0x05, 'l',  'o',  'c',  'a',  'l',  0x00,
-    0x00, 0x0c,              // TYPE is PTR.
-    0x00, 0x01,              // CLASS is IN.
-    0x00, 0x00,              // TTL (4 bytes) is 32768 second.
-    0x10, 0x00, 0x00, 0x0c,  // RDLENGTH is 12 bytes.
-    0x09, 'm',  'y',  'S',  'e',  'r',  'v',  'i',  'c',  'e',
-    0xc0, 0x0c, 0x09, 'm',  'y',  'S',  'e',  'r',  'v',  'i',
-    'c',  'e',  0xc0, 0x0c, 0x00, 0x10,  // TYPE is TXT.
-    0x00, 0x01,                          // CLASS is IN.
-    0x00, 0x00,                          // TTL (4 bytes) is 32768 seconds.
-    0x01, 0x00, 0x00, 0x44,              // RDLENGTH is 55 bytes.
-    0x06, 'i',  'd',  '=',  'r',  'e',  'g',  0x10, 't',  'y',
-    '=',  'S',  'a',  'm',  'p',  'l',  'e',  ' ',  'd',  'e',
-    'v',  'i',  'c',  'e',  0x1e, 'n',  'o',  't',  'e',  '=',
-    'S',  'a',  'm',  'p',  'l',  'e',  ' ',  'd',  'e',  'v',
-    'i',  'c',  'e',  ' ',  'd',  'e',  's',  'c',  'r',  'i',
-    'p',  't',  'i',  'o',  'n',  0x0c, 't',  'y',  'p',  'e',
-    '=',  'p',  'r',  'i',  'n',  't',  'e',  'r',  0x09, 'm',
-    'y',  'S',  'e',  'r',  'v',  'i',  'c',  'e',  0xc0, 0x0c,
-    0x00, 0x21,                          // Type is SRV
-    0x00, 0x01,                          // CLASS is IN
-    0x00, 0x00,                          // TTL (4 bytes) is 32768 second.
-    0x10, 0x00, 0x00, 0x17,              // RDLENGTH is 23
-    0x00, 0x00, 0x00, 0x00, 0x22, 0xb8,  // port 8888
-    0x09, 'm',  'y',  'S',  'e',  'r',  'v',  'i',  'c',  'e',
-    0x05, 'l',  'o',  'c',  'a',  'l',  0x00, 0x09, 'm',  'y',
-    'S',  'e',  'r',  'v',  'i',  'c',  'e',  0x05, 'l',  'o',
-    'c',  'a',  'l',  0x00, 0x00, 0x01,  // Type is A
-    0x00, 0x01,                          // CLASS is IN
-    0x00, 0x00,                          // TTL (4 bytes) is 32768 second.
-    0x10, 0x00, 0x00, 0x04,              // RDLENGTH is 4
-    0x01, 0x02, 0x03, 0x04,              // 1.2.3.4
-    0x09, 'm',  'y',  'S',  'e',  'r',  'v',  'i',  'c',  'e',
-    0x05, 'l',  'o',  'c',  'a',  'l',  0x00, 0x00, 0x1C,  // Type is AAAA
-    0x00, 0x01,                                            // CLASS is IN
-    0x00, 0x00,              // TTL (4 bytes) is 32768 second.
-    0x10, 0x00, 0x00, 0x10,  // RDLENGTH is 16
-    0x01, 0x02, 0x03, 0x04,  // 1.2.3.4
-    0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02,
-    0x03, 0x04,
-};
-
-const char kInfoIsLocalPrinter[] =
-    "{"
-    "\"api\" : [ \"/privet/printer/submitdoc\" ],"
-    "\"x-privet-token\" : \"sample\""
-    "}";
-
-const char kInfoIsNotLocalPrinter[] =
-    "{"
-    "\"api\" : [ \"/privet/register\" ],"
-    "\"x-privet-token\" : \"sample\""
-    "}";
-
-const char kServiceName[] = "myService._privet._tcp.local";
-
-const char kPrivetInfoURL[] = "http://1.2.3.4:8888/privet/info";
-
-class MockLocalPrinterListerDelegate
-    : public PrivetLocalPrinterLister::Delegate {
- public:
-  MockLocalPrinterListerDelegate() {}
-  ~MockLocalPrinterListerDelegate() override {}
-
-  MOCK_METHOD3(LocalPrinterChanged,
-               void(const std::string& name,
-                    bool has_local_printing,
-                    const DeviceDescription& description));
-
-  MOCK_METHOD1(LocalPrinterRemoved, void(const std::string& name));
-
-  MOCK_METHOD0(LocalPrinterCacheFlushed, void());
-};
-
-class PrivetLocalPrinterListerTest : public testing::Test {
- public:
-  PrivetLocalPrinterListerTest()
-      : test_service_discovery_client_(
-            base::MakeRefCounted<TestServiceDiscoveryClient>()),
-        http_asynchronous_factory_impl_(
-            test_url_loader_factory_.GetSafeWeakWrapper()) {
-    local_printer_lister_ = std::make_unique<PrivetLocalPrinterLister>(
-        test_service_discovery_client_.get(),
-        test_url_loader_factory_.GetSafeWeakWrapper(), &delegate_);
-    test_service_discovery_client_->Start();
-  }
-
-  void SimulateReceive(const uint8_t* packet, size_t size) {
-    test_service_discovery_client_->SimulateReceive(packet, size);
-    base::RunLoop().RunUntilIdle();
-  }
-
-  void ExpectAnyPacket() {
-    EXPECT_CALL(*test_service_discovery_client_.get(), OnSendTo(_))
-        .Times(AtLeast(2));
-  }
-
- protected:
-  content::BrowserTaskEnvironment task_environment;
-  scoped_refptr<TestServiceDiscoveryClient> test_service_discovery_client_;
-  std::unique_ptr<PrivetLocalPrinterLister> local_printer_lister_;
-  StrictMock<MockLocalPrinterListerDelegate> delegate_;
-  network::TestURLLoaderFactory test_url_loader_factory_;
-  cloud_print::PrivetHTTPAsynchronousFactoryImpl
-      http_asynchronous_factory_impl_;
-};
-
-TEST_F(PrivetLocalPrinterListerTest, PrinterAddedTest) {
-  test_url_loader_factory_.AddResponse(GURL(kPrivetInfoURL).spec(),
-                                       kInfoIsLocalPrinter);
-  ExpectAnyPacket();
-  EXPECT_CALL(delegate_, LocalPrinterChanged(kServiceName, true, _));
-
-  local_printer_lister_->Start();
-  SimulateReceive(kAnnouncePacket, sizeof(kAnnouncePacket));
-}
-
-TEST_F(PrivetLocalPrinterListerTest, NonPrinterAddedTest) {
-  test_url_loader_factory_.AddResponse(GURL(kPrivetInfoURL).spec(),
-                                       kInfoIsNotLocalPrinter);
-  ExpectAnyPacket();
-  EXPECT_CALL(delegate_, LocalPrinterChanged(kServiceName, false, _));
-
-  local_printer_lister_->Start();
-  SimulateReceive(kAnnouncePacket, sizeof(kAnnouncePacket));
-}
-
-}  // namespace
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_traffic_detector.cc b/chrome/browser/printing/cloud_print/privet_traffic_detector.cc
deleted file mode 100644
index f37a57f..0000000
--- a/chrome/browser/printing/cloud_print/privet_traffic_detector.cc
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_traffic_detector.h"
-
-#include <utility>
-
-#include "base/bind.h"
-#include "base/cxx17_backports.h"
-#include "base/sys_byteorder.h"
-#include "base/threading/scoped_blocking_call.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/browser_task_traits.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/network_service_instance.h"
-#include "content/public/browser/storage_partition.h"
-#include "mojo/public/cpp/bindings/pending_receiver.h"
-#include "mojo/public/cpp/bindings/pending_remote.h"
-#include "net/base/address_family.h"
-#include "net/base/ip_address.h"
-#include "net/base/network_interfaces.h"
-#include "net/dns/public/dns_protocol.h"
-#include "net/dns/public/util.h"
-#include "services/network/public/mojom/network_context.mojom.h"
-#include "services/network/public/mojom/network_service.mojom.h"
-
-namespace {
-
-const int kMaxRestartAttempts = 10;
-
-void OnGetNetworkList(
-    base::OnceCallback<void(net::NetworkInterfaceList)> callback,
-    const absl::optional<net::NetworkInterfaceList>& networks) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (!networks.has_value())
-    return;
-
-  net::NetworkInterfaceList ip4_networks;
-  for (const auto& network : networks.value()) {
-    net::AddressFamily address_family = net::GetAddressFamily(network.address);
-    if (address_family == net::ADDRESS_FAMILY_IPV4 &&
-        network.prefix_length >= 24) {
-      ip4_networks.push_back(network);
-    }
-  }
-
-  net::IPAddress localhost_prefix(127, 0, 0, 0);
-  ip4_networks.push_back(net::NetworkInterface(
-      "lo", "lo", 0, net::NetworkChangeNotifier::CONNECTION_UNKNOWN,
-      localhost_prefix, 8, net::IP_ADDRESS_ATTRIBUTE_NONE));
-
-  content::GetIOThreadTaskRunner({})->PostTask(
-      FROM_HERE, base::BindOnce(std::move(callback), std::move(ip4_networks)));
-}
-
-void GetNetworkListOnUIThread(
-    base::OnceCallback<void(net::NetworkInterfaceList)> callback) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  content::GetNetworkService()->GetNetworkList(
-      net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES,
-      base::BindOnce(&OnGetNetworkList, std::move(callback)));
-}
-
-void CreateUDPSocketOnUIThread(
-    content::BrowserContext* profile,
-    mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
-    mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  network::mojom::NetworkContext* network_context =
-      profile->GetDefaultStoragePartition()->GetNetworkContext();
-  network_context->CreateUDPSocket(std::move(receiver),
-                                   std::move(listener_remote));
-}
-
-}  // namespace
-
-namespace cloud_print {
-
-PrivetTrafficDetector::PrivetTrafficDetector(
-    content::BrowserContext* profile,
-    base::RepeatingClosure on_traffic_detected)
-    : helper_(new Helper(profile, on_traffic_detected)) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  content::GetNetworkConnectionTracker()->AddNetworkConnectionObserver(this);
-  content::GetIOThreadTaskRunner({})->PostTask(
-      FROM_HERE, base::BindOnce(&PrivetTrafficDetector::Helper::ScheduleRestart,
-                                base::Unretained(helper_)));
-}
-
-PrivetTrafficDetector::~PrivetTrafficDetector() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  content::GetNetworkConnectionTracker()->RemoveNetworkConnectionObserver(this);
-  content::GetIOThreadTaskRunner({})->DeleteSoon(FROM_HERE, helper_);
-}
-
-void PrivetTrafficDetector::OnConnectionChanged(
-    network::mojom::ConnectionType type) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  content::GetIOThreadTaskRunner({})->PostTask(
-      FROM_HERE,
-      base::BindOnce(&PrivetTrafficDetector::Helper::HandleConnectionChanged,
-                     base::Unretained(helper_), type));
-}
-
-PrivetTrafficDetector::Helper::Helper(
-    content::BrowserContext* profile,
-    base::RepeatingClosure on_traffic_detected)
-    : profile_(profile),
-      on_traffic_detected_(on_traffic_detected),
-      restart_attempts_(kMaxRestartAttempts) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-}
-
-PrivetTrafficDetector::Helper::~Helper() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-}
-
-void PrivetTrafficDetector::Helper::HandleConnectionChanged(
-    network::mojom::ConnectionType type) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  restart_attempts_ = kMaxRestartAttempts;
-  if (type != network::mojom::ConnectionType::CONNECTION_NONE) {
-    ScheduleRestart();
-  }
-}
-
-void PrivetTrafficDetector::Helper::ScheduleRestart() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  ResetConnection();
-  weak_ptr_factory_.InvalidateWeakPtrs();
-  content::GetUIThreadTaskRunner({})->PostDelayedTask(
-      FROM_HERE,
-      base::BindOnce(
-          &GetNetworkListOnUIThread,
-          base::BindOnce(&Helper::Restart, weak_ptr_factory_.GetWeakPtr())),
-      base::TimeDelta::FromSeconds(3));
-}
-
-void PrivetTrafficDetector::Helper::Restart(
-    net::NetworkInterfaceList networks) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  networks_ = std::move(networks);
-  Bind();
-}
-
-void PrivetTrafficDetector::Helper::Bind() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-
-  content::GetUIThreadTaskRunner({})->PostTask(
-      FROM_HERE, base::BindOnce(&CreateUDPSocketOnUIThread, profile_,
-                                socket_.BindNewPipeAndPassReceiver(),
-                                listener_receiver_.BindNewPipeAndPassRemote()));
-
-  network::mojom::UDPSocketOptionsPtr socket_options =
-      network::mojom::UDPSocketOptions::New();
-  socket_options->allow_address_sharing_for_multicast = true;
-  socket_options->multicast_loopback_mode = false;
-
-  socket_->Bind(
-      net::dns_util::GetMdnsReceiveEndPoint(net::ADDRESS_FAMILY_IPV4),
-      std::move(socket_options),
-      base::BindOnce(
-          &Helper::OnBindComplete, weak_ptr_factory_.GetWeakPtr(),
-          net::dns_util::GetMdnsGroupEndPoint(net::ADDRESS_FAMILY_IPV4)));
-}
-
-void PrivetTrafficDetector::Helper::OnBindComplete(
-    net::IPEndPoint multicast_group_addr,
-    int rv,
-    const absl::optional<net::IPEndPoint>& ip_endpoint) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  if (rv == net::OK) {
-    socket_->JoinGroup(multicast_group_addr.address(),
-                       base::BindOnce(&Helper::OnJoinGroupComplete,
-                                      weak_ptr_factory_.GetWeakPtr()));
-    return;
-  }
-
-  if (restart_attempts_-- > 0)
-    ScheduleRestart();
-}
-
-bool PrivetTrafficDetector::Helper::IsSourceAcceptable() const {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  for (const auto& network : networks_) {
-    if (net::IPAddressMatchesPrefix(recv_addr_.address(), network.address,
-                                    network.prefix_length)) {
-      return true;
-    }
-  }
-  return false;
-}
-
-bool PrivetTrafficDetector::Helper::IsPrivetPacket(
-    base::span<const uint8_t> data) const {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  if (data.size() <= sizeof(net::dns_protocol::Header) ||
-      !IsSourceAcceptable()) {
-    return false;
-  }
-
-  const char* buffer_begin = reinterpret_cast<const char*>(data.data());
-  const char* buffer_end = buffer_begin + data.size();
-  const net::dns_protocol::Header* header =
-      reinterpret_cast<const net::dns_protocol::Header*>(buffer_begin);
-  // Check if response packet.
-  if (!(header->flags & base::HostToNet16(net::dns_protocol::kFlagResponse)))
-    return false;
-
-  static const char kPrivetDeviceTypeDnsString[] = "\x07_privet";
-  const char* substring_begin = kPrivetDeviceTypeDnsString;
-  const char* substring_end =
-      substring_begin + base::size(kPrivetDeviceTypeDnsString) - 1;
-  // Check for expected substring, any Privet device must include this.
-  return std::search(buffer_begin, buffer_end, substring_begin,
-                     substring_end) != buffer_end;
-}
-
-void PrivetTrafficDetector::Helper::OnJoinGroupComplete(int rv) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  if (rv == net::OK) {
-    // Reset on success.
-    restart_attempts_ = kMaxRestartAttempts;
-    socket_->ReceiveMoreWithBufferSize(1, net::dns_protocol::kMaxMulticastSize);
-    return;
-  }
-
-  if (restart_attempts_-- > 0)
-    ScheduleRestart();
-}
-
-void PrivetTrafficDetector::Helper::ResetConnection() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  socket_.reset();
-  listener_receiver_.reset();
-}
-
-void PrivetTrafficDetector::Helper::OnReceived(
-    int32_t result,
-    const absl::optional<net::IPEndPoint>& src_addr,
-    absl::optional<base::span<const uint8_t>> data) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  if (result != net::OK)
-    return;
-
-  // |data| and |src_addr| are guaranteed to be non-null when |result| is
-  // net::OK
-  recv_addr_ = src_addr.value();
-  if (IsPrivetPacket(data.value())) {
-    ResetConnection();
-    content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE,
-                                                 on_traffic_detected_);
-  } else {
-    socket_->ReceiveMoreWithBufferSize(1, net::dns_protocol::kMaxMulticastSize);
-  }
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_traffic_detector.h b/chrome/browser/printing/cloud_print/privet_traffic_detector.h
deleted file mode 100644
index 55a236ef..0000000
--- a/chrome/browser/printing/cloud_print/privet_traffic_detector.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_TRAFFIC_DETECTOR_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_TRAFFIC_DETECTOR_H_
-
-#include "base/callback.h"
-#include "base/macros.h"
-#include "mojo/public/cpp/bindings/receiver.h"
-#include "mojo/public/cpp/bindings/remote.h"
-#include "net/base/ip_endpoint.h"
-#include "net/base/network_interfaces.h"
-#include "services/network/public/cpp/network_connection_tracker.h"
-#include "services/network/public/mojom/udp_socket.mojom.h"
-
-namespace content {
-class BrowserContext;
-}
-
-namespace cloud_print {
-
-// Detects mDns traffic that looks like the "Privet" protocol. This can produce
-// false positives results, but the main task of the class is to avoid running a
-// full mDns listener if user doesn't have devices.
-// When potential "Privet" traffic has been detected, fire a callback and stop
-// listening for traffic.
-// When the network changes, restarts itself to start listening for traffic
-// again on the new network(s).
-// The class lives on the UI thread, with a helper that lives on the IO thread.
-class PrivetTrafficDetector
-    : public network::NetworkConnectionTracker::NetworkConnectionObserver {
- public:
-  // Called on the UI thread.
-  PrivetTrafficDetector(content::BrowserContext* profile,
-                        base::RepeatingClosure on_traffic_detected);
-  ~PrivetTrafficDetector() override;
-
-  // network::NetworkConnectionTracker::NetworkConnectionObserver:
-  void OnConnectionChanged(network::mojom::ConnectionType type) override;
-
- private:
-  // Constructed by PrivetTrafficDetector on the UI thread. but lives on the IO
-  // thread and destroyed on the IO thread.
-  class Helper : public network::mojom::UDPSocketListener {
-   public:
-    Helper(content::BrowserContext* profile,
-           base::RepeatingClosure on_traffic_detected);
-    ~Helper() override;
-
-    // network::mojom::UDPSocketListener:
-    void OnReceived(int32_t result,
-                    const absl::optional<net::IPEndPoint>& src_addr,
-                    absl::optional<base::span<const uint8_t>> data) override;
-
-    void HandleConnectionChanged(network::mojom::ConnectionType type);
-    void ScheduleRestart();
-
-   private:
-    void Restart(net::NetworkInterfaceList networks);
-    void Bind();
-    void OnBindComplete(net::IPEndPoint multicast_addr,
-                        int rv,
-                        const absl::optional<net::IPEndPoint>& ip_address);
-    bool IsSourceAcceptable() const;
-    bool IsPrivetPacket(base::span<const uint8_t> data) const;
-    void OnJoinGroupComplete(int rv);
-    void ResetConnection();
-
-    // Initialized on the UI thread, but only accessed on the IO thread for the
-    // purpose of passing it back to the UI thread. Safe because it is const.
-    content::BrowserContext* const profile_;
-
-    // Initialized on the UI thread, but only accessed on the IO thread.
-    base::RepeatingClosure on_traffic_detected_;
-    int restart_attempts_;
-
-    // Only accessed on the IO thread.
-    net::NetworkInterfaceList networks_;
-    net::IPEndPoint recv_addr_;
-    mojo::Remote<network::mojom::UDPSocket> socket_;
-
-    // Implementation of socket listener callback.
-    // Initialized on the UI thread, but only accessed on the IO thread.
-    mojo::Receiver<network::mojom::UDPSocketListener> listener_receiver_{this};
-
-    base::WeakPtrFactory<Helper> weak_ptr_factory_{this};
-
-    DISALLOW_COPY_AND_ASSIGN(Helper);
-  };
-
-  Helper* const helper_;
-
-  DISALLOW_COPY_AND_ASSIGN(PrivetTrafficDetector);
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_TRAFFIC_DETECTOR_H_
diff --git a/chrome/browser/printing/cloud_print/privet_url_loader.cc b/chrome/browser/printing/cloud_print/privet_url_loader.cc
deleted file mode 100644
index 65a8250..0000000
--- a/chrome/browser/printing/cloud_print/privet_url_loader.cc
+++ /dev/null
@@ -1,367 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_url_loader.h"
-
-#include <stdint.h>
-
-#include <algorithm>
-#include <limits>
-#include <map>
-#include <memory>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/json/json_reader.h"
-#include "base/lazy_instance.h"
-#include "base/location.h"
-#include "base/no_destructor.h"
-#include "base/rand_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/task/post_task.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/net/system_network_context_manager.h"
-#include "chrome/browser/printing/cloud_print/privet_constants.h"
-#include "net/base/load_flags.h"
-#include "net/http/http_status_code.h"
-#include "services/network/public/cpp/resource_request.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "services/network/public/mojom/url_response_head.mojom.h"
-
-namespace cloud_print {
-
-namespace {
-
-constexpr char kXPrivetTokenHeaderKey[] = "X-Privet-Token";
-constexpr char kRangeHeaderKey[] = "Range";
-constexpr char kRangeHeaderValueFormat[] = "bytes=%d-%d";
-constexpr char kXPrivetEmptyToken[] = "\"\"";
-constexpr int kPrivetMaxRetries = 20;
-constexpr int kPrivetTimeoutOnError = 5;
-constexpr int kHTTPErrorCodeInvalidXPrivetToken = 418;
-constexpr size_t kPrivetMaxContentSize = 1 * 1024 * 1024;
-
-base::LazyInstance<std::map<std::string, std::string>>::Leaky g_tokens =
-    LAZY_INSTANCE_INITIALIZER;
-
-std::string MakeRangeHeaderValue(int start, int end) {
-  DCHECK_GE(start, 0);
-  DCHECK_GT(end, 0);
-  DCHECK_GT(end, start);
-  return base::StringPrintf(kRangeHeaderValueFormat, start, end);
-}
-
-}  // namespace
-
-PrivetURLLoader::RetryImmediatelyForTest::RetryImmediatelyForTest() {
-  DCHECK(!skip_retry_timeouts_for_tests_);
-  skip_retry_timeouts_for_tests_ = true;
-}
-
-PrivetURLLoader::RetryImmediatelyForTest::~RetryImmediatelyForTest() {
-  DCHECK(skip_retry_timeouts_for_tests_);
-  skip_retry_timeouts_for_tests_ = false;
-}
-
-// static
-bool PrivetURLLoader::skip_retry_timeouts_for_tests_ = false;
-
-void PrivetURLLoader::Delegate::OnNeedPrivetToken(TokenCallback callback) {
-  OnError(0, TOKEN_ERROR);
-}
-
-bool PrivetURLLoader::Delegate::OnRawData(bool response_is_file,
-                                          const std::string& data_string,
-                                          const base::FilePath& data_file) {
-  return false;
-}
-
-PrivetURLLoader::PrivetURLLoader(
-    const GURL& url,
-    const std::string& request_type,
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-    const net::NetworkTrafficAnnotationTag& traffic_annotation,
-    PrivetURLLoader::Delegate* delegate)
-    : url_(url),
-      request_type_(request_type),
-      url_loader_factory_(url_loader_factory),
-      traffic_annotation_(traffic_annotation),
-      delegate_(delegate),
-      max_retries_(kPrivetMaxRetries) {}
-
-PrivetURLLoader::~PrivetURLLoader() {}
-
-// static
-void PrivetURLLoader::SetTokenForHost(const std::string& host,
-                                      const std::string& token) {
-  g_tokens.Get()[host] = token;
-}
-
-// static
-void PrivetURLLoader::ResetTokenMapForTest() {
-  g_tokens.Get().clear();
-}
-
-void PrivetURLLoader::SetMaxRetriesForTest(int max_retries) {
-  DCHECK_EQ(tries_, 0);
-  max_retries_ = max_retries;
-}
-
-void PrivetURLLoader::DoNotRetryOnTransientError() {
-  DCHECK_EQ(tries_, 0);
-  do_not_retry_on_transient_error_ = true;
-}
-
-void PrivetURLLoader::SendEmptyPrivetToken() {
-  DCHECK_EQ(tries_, 0);
-  send_empty_privet_token_ = true;
-}
-
-std::string PrivetURLLoader::GetPrivetAccessToken() {
-  if (send_empty_privet_token_)
-    return std::string();
-
-  auto it = g_tokens.Get().find(GetHostString());
-  return it != g_tokens.Get().end() ? it->second : std::string();
-}
-
-std::string PrivetURLLoader::GetHostString() {
-  return url_.GetOrigin().spec();
-}
-
-void PrivetURLLoader::SaveResponseToFile() {
-  DCHECK_EQ(tries_, 0);
-  make_response_file_ = true;
-}
-
-void PrivetURLLoader::SetByteRange(int start, int end) {
-  DCHECK_EQ(tries_, 0);
-  byte_range_start_ = start;
-  byte_range_end_ = end;
-  has_byte_range_ = true;
-}
-
-void PrivetURLLoader::Try() {
-  tries_++;
-  if (tries_ > max_retries_) {
-    delegate_->OnError(0, UNKNOWN_ERROR);
-    return;
-  }
-
-  DVLOG(1) << "Attempt: " << tries_;
-
-  auto request = std::make_unique<network::ResourceRequest>();
-  request->url = url_;
-  request->method = request_type_;
-  // Privet requests are relevant to hosts on local network only.
-  request->load_flags = net::LOAD_BYPASS_PROXY | net::LOAD_DISABLE_CACHE;
-  request->credentials_mode = network::mojom::CredentialsMode::kOmit;
-
-  std::string token = GetPrivetAccessToken();
-  if (token.empty())
-    token = kXPrivetEmptyToken;
-  request->headers.SetHeader(kXPrivetTokenHeaderKey, token);
-
-  if (has_byte_range_) {
-    request->headers.SetHeader(
-        kRangeHeaderKey,
-        MakeRangeHeaderValue(byte_range_start_, byte_range_end_));
-  }
-
-  url_loader_ =
-      network::SimpleURLLoader::Create(std::move(request), traffic_annotation_);
-
-  url_loader_->SetAllowHttpErrorResults(true);
-
-  url_loader_->SetOnResponseStartedCallback(base::BindOnce(
-      &PrivetURLLoader::OnResponseStarted, weak_factory_.GetWeakPtr()));
-
-  // URLFetcher requires us to set upload data for POST requests.
-  if (request_type_ == "POST")
-    url_loader_->AttachStringForUpload(upload_data_, upload_content_type_);
-
-  if (make_response_file_) {
-    url_loader_->DownloadToTempFile(
-        url_loader_factory_.get(),
-        base::BindOnce(&PrivetURLLoader::OnDownloadedToFile,
-                       weak_factory_.GetWeakPtr()));
-  } else {
-    url_loader_->DownloadToString(
-        url_loader_factory_.get(),
-        base::BindOnce(&PrivetURLLoader::OnDownloadedToString,
-                       weak_factory_.GetWeakPtr()),
-        kPrivetMaxContentSize);
-  }
-}
-
-void PrivetURLLoader::Start() {
-  DCHECK_EQ(tries_, 0);  // We haven't called |Start()| yet.
-
-  if (!url_.is_valid())
-    return delegate_->OnError(0, UNKNOWN_ERROR);
-
-  if (!send_empty_privet_token_) {
-    std::string privet_access_token;
-    privet_access_token = GetPrivetAccessToken();
-    if (privet_access_token.empty()) {
-      RequestTokenRefresh();
-      return;
-    }
-  }
-
-  Try();
-}
-
-void PrivetURLLoader::SetUploadData(const std::string& upload_content_type,
-                                    const std::string& upload_data) {
-  upload_content_type_ = upload_content_type;
-  upload_data_ = upload_data;
-}
-
-void PrivetURLLoader::OnResponseStarted(
-    const GURL& final_url,
-    const network::mojom::URLResponseHead& response_head) {
-  if (!response_head.headers ||
-      response_head.headers->response_code() == net::HTTP_SERVICE_UNAVAILABLE) {
-    url_loader_.reset();
-    ScheduleRetry(kPrivetTimeoutOnError);
-  }
-}
-
-void PrivetURLLoader::OnDownloadedToString(
-    std::unique_ptr<std::string> response_body) {
-  DCHECK(!make_response_file_);
-
-  if (CheckURLLoaderForError())
-    return;
-
-  if (delegate_->OnRawData(false, *response_body, base::FilePath()))
-    return;
-
-  // Byte ranges should only be used when we're not parsing the data as JSON.
-  DCHECK(!has_byte_range_);
-
-  // Response contains error description.
-  int response_code = url_loader_->ResponseInfo()->headers->response_code();
-  bool is_error_response = false;
-  if (response_code != net::HTTP_OK) {
-    delegate_->OnError(response_code, RESPONSE_CODE_ERROR);
-    return;
-  }
-
-  absl::optional<base::Value> value =
-      base::JSONReader::Read(*response_body, base::JSON_ALLOW_TRAILING_COMMAS);
-  if (!value || !value->is_dict()) {
-    delegate_->OnError(0, JSON_PARSE_ERROR);
-    return;
-  }
-
-  const base::Value* error_value =
-      value->FindKeyOfType(kPrivetKeyError, base::Value::Type::STRING);
-  if (error_value) {
-    const std::string& error = error_value->GetString();
-    if (error == kPrivetErrorInvalidXPrivetToken) {
-      RequestTokenRefresh();
-      return;
-    }
-    if (PrivetErrorTransient(error)) {
-      if (!do_not_retry_on_transient_error_) {
-        const base::Value* timeout_value =
-            value->FindKeyOfType(kPrivetKeyTimeout, base::Value::Type::INTEGER);
-        ScheduleRetry(timeout_value ? timeout_value->GetInt()
-                                    : kPrivetDefaultTimeout);
-        return;
-      }
-    }
-    is_error_response = true;
-  }
-
-  std::unique_ptr<base::DictionaryValue> dict_value =
-      base::DictionaryValue::From(
-          base::Value::ToUniquePtrValue(std::move(*value)));
-  delegate_->OnParsedJson(response_code, *dict_value, is_error_response);
-}
-
-void PrivetURLLoader::OnDownloadedToFile(base::FilePath path) {
-  DCHECK(make_response_file_);
-
-  if (CheckURLLoaderForError())
-    return;
-
-  bool result = delegate_->OnRawData(true, std::string(), path);
-  DCHECK(result);
-}
-
-bool PrivetURLLoader::CheckURLLoaderForError() {
-  switch (url_loader_->NetError()) {
-    case net::OK:
-      break;
-    case net::ERR_ABORTED:
-      delegate_->OnError(0, REQUEST_CANCELED);
-      return true;
-    default:
-      delegate_->OnError(0, UNKNOWN_ERROR);
-      return true;
-  }
-  int response_code = net::ERR_FAILED;
-  if (url_loader_->ResponseInfo()->headers)
-    response_code = url_loader_->ResponseInfo()->headers->response_code();
-  if (response_code == kHTTPErrorCodeInvalidXPrivetToken) {
-    RequestTokenRefresh();
-    return true;
-  }
-  if (response_code != net::HTTP_OK &&
-      response_code != net::HTTP_PARTIAL_CONTENT &&
-      response_code != net::HTTP_BAD_REQUEST) {
-    delegate_->OnError(response_code, RESPONSE_CODE_ERROR);
-    return true;
-  }
-  return false;
-}
-
-void PrivetURLLoader::ScheduleRetry(int timeout_seconds) {
-  double random_scaling_factor =
-      1 + base::RandDouble() * kPrivetMaximumTimeRandomAddition;
-
-  int timeout_seconds_randomized =
-      static_cast<int>(timeout_seconds * random_scaling_factor);
-
-  timeout_seconds_randomized =
-      std::max(timeout_seconds_randomized, kPrivetMinimumTimeout);
-
-  // Don't wait because only error callback is going to be called.
-  if (tries_ >= max_retries_)
-    timeout_seconds_randomized = 0;
-
-  if (skip_retry_timeouts_for_tests_)
-    timeout_seconds_randomized = 0;
-
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE,
-      base::BindOnce(&PrivetURLLoader::Try, weak_factory_.GetWeakPtr()),
-      base::TimeDelta::FromSeconds(timeout_seconds_randomized));
-}
-
-void PrivetURLLoader::RequestTokenRefresh() {
-  delegate_->OnNeedPrivetToken(base::BindOnce(&PrivetURLLoader::RefreshToken,
-                                              weak_factory_.GetWeakPtr()));
-}
-
-void PrivetURLLoader::RefreshToken(const std::string& token) {
-  if (token.empty()) {
-    delegate_->OnError(0, TOKEN_ERROR);
-  } else {
-    SetTokenForHost(GetHostString(), token);
-    Try();
-  }
-}
-
-bool PrivetURLLoader::PrivetErrorTransient(const std::string& error) {
-  return error == kPrivetErrorDeviceBusy ||
-         error == kPrivetErrorPendingUserAction ||
-         error == kPrivetErrorPrinterBusy;
-}
-
-}  // namespace cloud_print
diff --git a/chrome/browser/printing/cloud_print/privet_url_loader.h b/chrome/browser/printing/cloud_print/privet_url_loader.h
deleted file mode 100644
index 93fcb3a..0000000
--- a/chrome/browser/printing/cloud_print/privet_url_loader.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_URL_LOADER_H_
-#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_URL_LOADER_H_
-
-#include <memory>
-#include <string>
-
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/sequenced_task_runner.h"
-#include "base/values.h"
-#include "net/traffic_annotation/network_traffic_annotation.h"
-#include "services/network/public/cpp/simple_url_loader.h"
-#include "services/network/public/mojom/url_response_head.mojom-forward.h"
-#include "url/gurl.h"
-
-namespace network {
-class SharedURLLoaderFactory;
-}
-
-namespace cloud_print {
-
-// Privet-specific URLLoader adapter. Currently supports only the subset of
-// HTTP features required by Privet for GCP 1.5 (/privet/info and
-// /privet/register).
-class PrivetURLLoader {
- public:
-  enum ErrorType {
-    JSON_PARSE_ERROR,
-    REQUEST_CANCELED,
-    RESPONSE_CODE_ERROR,
-    TOKEN_ERROR,
-    UNKNOWN_ERROR,
-  };
-
-  using TokenCallback = base::OnceCallback<void(const std::string& /*token*/)>;
-
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-
-    // If you do not implement this method for PrivetV1 callers, you will always
-    // get a TOKEN_ERROR error when your token is invalid.
-    virtual void OnNeedPrivetToken(TokenCallback callback);
-
-    // |response_code| is only needed for RESPONSE_CODE_ERROR.
-    virtual void OnError(int response_code, ErrorType error) = 0;
-    virtual void OnParsedJson(int response_code,
-                              const base::DictionaryValue& value,
-                              bool has_error) = 0;
-
-    // If this method returns true, the data will not be parsed as JSON, and
-    // OnParsedJson() will not be called. Otherwise, OnParsedJson() will be
-    // called. This only happens in tests.
-    virtual bool OnRawData(bool response_is_file,
-                           const std::string& data_string,
-                           const base::FilePath& data_file);
-  };
-
-  PrivetURLLoader(
-      const GURL& url,
-      const std::string& request_type,
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-      const net::NetworkTrafficAnnotationTag& traffic_annotation,
-      Delegate* delegate);
-
-  virtual ~PrivetURLLoader();
-
-  static void SetTokenForHost(const std::string& host,
-                              const std::string& token);
-
-  static void ResetTokenMapForTest();
-
-  void SetMaxRetriesForTest(int max_retries);
-
-  void DoNotRetryOnTransientError();
-
-  void SendEmptyPrivetToken();
-
-  // Set the contents of the Range header. OnRawData() must return true if this
-  // is called.
-  void SetByteRange(int start, int end);
-
-  // Save the response to a file. OnRawData() must return true if this is
-  // called.
-  void SaveResponseToFile();
-
-  void Start();
-
-  void SetUploadData(const std::string& upload_content_type,
-                     const std::string& upload_data);
-
-  // A class that can be used in tests that want to bypass the delay when
-  // retrying loading a URL. Create one of this object in your test, it will
-  // disable the delay for retry on construction and revert it back on
-  // destruction.
-  // Note that you should not have more than one of these allocated at a time.
-  class RetryImmediatelyForTest final {
-   public:
-    RetryImmediatelyForTest();
-    ~RetryImmediatelyForTest();
-  };
-
- private:
-  std::string GetHostString();  // Get string representing the host.
-  std::string GetPrivetAccessToken();
-  void Try();
-  void ScheduleRetry(int timeout_seconds);
-  bool PrivetErrorTransient(const std::string& error);
-  void RequestTokenRefresh();
-  void RefreshToken(const std::string& token);
-  void OnResponseStarted(const GURL& final_url,
-                         const network::mojom::URLResponseHead& response_head);
-  void OnDownloadedToString(std::unique_ptr<std::string> response_body);
-  void OnDownloadedToFile(base::FilePath path);
-  bool CheckURLLoaderForError();
-
-  const GURL url_;
-  const std::string request_type_;
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-  const net::NetworkTrafficAnnotationTag traffic_annotation_;
-  Delegate* const delegate_;
-
-  int max_retries_;
-  bool do_not_retry_on_transient_error_ = false;
-  bool send_empty_privet_token_ = false;
-  bool has_byte_range_ = false;
-  bool make_response_file_ = false;
-  static bool skip_retry_timeouts_for_tests_;
-
-  int byte_range_start_ = 0;
-  int byte_range_end_ = 0;
-
-  int tries_ = 0;
-  std::string upload_data_;
-  std::string upload_content_type_;
-  std::unique_ptr<network::SimpleURLLoader> url_loader_;
-
-  base::WeakPtrFactory<PrivetURLLoader> weak_factory_{this};
-  DISALLOW_COPY_AND_ASSIGN(PrivetURLLoader);
-};
-
-}  // namespace cloud_print
-
-#endif  // CHROME_BROWSER_PRINTING_CLOUD_PRINT_PRIVET_URL_LOADER_H_
diff --git a/chrome/browser/printing/cloud_print/privet_url_loader_unittest.cc b/chrome/browser/printing/cloud_print/privet_url_loader_unittest.cc
deleted file mode 100644
index a50b2234..0000000
--- a/chrome/browser/printing/cloud_print/privet_url_loader_unittest.cc
+++ /dev/null
@@ -1,298 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/printing/cloud_print/privet_url_loader.h"
-
-#include <memory>
-
-#include "base/bind.h"
-#include "base/callback_helpers.h"
-#include "base/files/file_util.h"
-#include "base/run_loop.h"
-#include "base/test/bind.h"
-#include "base/test/task_environment.h"
-#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
-#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
-#include "services/network/test/test_url_loader_factory.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using ::testing::_;
-
-namespace cloud_print {
-
-namespace {
-
-const char kSamplePrivetURL[] =
-    "http://10.0.0.8:7676/privet/register?action=start";
-const char kSamplePrivetToken[] = "MyToken";
-const char kEmptyPrivetToken[] = "\"\"";
-
-const char kSampleParsableJSON[] = "{ \"hello\" : 2 }";
-const char kSampleUnparsableJSON[] = "{ \"hello\" : }";
-const char kSampleJSONWithError[] = "{ \"error\" : \"unittest_example\" }";
-const net::HttpStatusCode kHTTPErrorCodeInvalidXPrivetToken =
-    static_cast<net::HttpStatusCode>(418);
-
-class MockPrivetURLLoaderDelegate : public PrivetURLLoader::Delegate {
- public:
-  MockPrivetURLLoaderDelegate(
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner)
-      : raw_mode_(false), task_runner_(task_runner) {}
-
-  ~MockPrivetURLLoaderDelegate() override {}
-
-  MOCK_METHOD2(OnError,
-               void(int response_code, PrivetURLLoader::ErrorType error));
-
-  void OnParsedJson(int response_code,
-                    const base::DictionaryValue& value,
-                    bool has_error) override {
-    saved_value_.reset(value.DeepCopy());
-    OnParsedJsonInternal(has_error);
-  }
-
-  MOCK_METHOD1(OnParsedJsonInternal, void(bool has_error));
-
-  void OnNeedPrivetToken(PrivetURLLoader::TokenCallback callback) override {
-    auto closure = base::BindOnce(
-        [](PrivetURLLoader::TokenCallback callback) {
-          std::move(callback).Run(kSamplePrivetToken);
-        },
-        std::move(callback));
-    task_runner_->PostTask(FROM_HERE, std::move(closure));
-    OnNeedPrivetTokenInternal();
-  }
-
-  MOCK_METHOD0(OnNeedPrivetTokenInternal, void());
-
-  bool OnRawData(bool response_is_file,
-                 const std::string& data,
-                 const base::FilePath& response_file) override {
-    if (!raw_mode_)
-      return false;
-
-    if (response_is_file) {
-      EXPECT_TRUE(response_file != base::FilePath());
-      OnFileInternal(response_file);
-    } else {
-      OnRawDataInternal(data);
-    }
-
-    return true;
-  }
-
-  MOCK_METHOD1(OnRawDataInternal, void(const std::string& data));
-
-  MOCK_METHOD1(OnFileInternal, void(const base::FilePath& response_file));
-
-  const base::DictionaryValue* saved_value() { return saved_value_.get(); }
-
-  void SetRawMode(bool raw_mode) { raw_mode_ = raw_mode; }
-
- private:
-  std::unique_ptr<base::DictionaryValue> saved_value_;
-  bool raw_mode_;
-  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-};
-
-class PrivetURLLoaderTest : public ::testing::Test {
- public:
-  PrivetURLLoaderTest()
-      : task_environment_(base::test::TaskEnvironment::MainThreadType::IO),
-        test_shared_url_loader_factory_(
-            base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
-                &test_url_loader_factory_)),
-        delegate_(task_environment_.GetMainThreadTaskRunner()) {
-    privet_url_loader_ = std::make_unique<PrivetURLLoader>(
-        GURL(kSamplePrivetURL), "POST", test_shared_url_loader_factory_,
-        TRAFFIC_ANNOTATION_FOR_TESTS, &delegate_);
-
-    PrivetURLLoader::SetTokenForHost(GURL(kSamplePrivetURL).GetOrigin().spec(),
-                                     kSamplePrivetToken);
-  }
-  ~PrivetURLLoaderTest() override {}
-
- protected:
-  void StartPrivetURLLoaderAndCaptureHeaders(net::HttpRequestHeaders* headers) {
-    test_url_loader_factory_.SetInterceptor(base::BindLambdaForTesting(
-        [&](const network::ResourceRequest& request) {
-          *headers = request.headers;
-        }));
-    privet_url_loader_->Start();
-    base::RunLoop().RunUntilIdle();
-    test_url_loader_factory_.SetInterceptor(base::NullCallback());
-  }
-
-  base::test::TaskEnvironment task_environment_;
-  network::TestURLLoaderFactory test_url_loader_factory_;
-  scoped_refptr<network::WeakWrapperSharedURLLoaderFactory>
-      test_shared_url_loader_factory_;
-  std::unique_ptr<PrivetURLLoader> privet_url_loader_;
-  testing::StrictMock<MockPrivetURLLoaderDelegate> delegate_;
-};
-
-TEST_F(PrivetURLLoaderTest, FetchSuccess) {
-  test_url_loader_factory_.AddResponse(kSamplePrivetURL, kSampleParsableJSON);
-
-  EXPECT_CALL(delegate_, OnParsedJsonInternal(false));
-  privet_url_loader_->Start();
-  base::RunLoop().RunUntilIdle();
-
-  const base::DictionaryValue* value = delegate_.saved_value();
-  int hello_value;
-  ASSERT_TRUE(value);
-  ASSERT_TRUE(value->GetInteger("hello", &hello_value));
-  EXPECT_EQ(2, hello_value);
-}
-
-// An interceptor used by the HTTP503Retry test that returns multiple failures
-// then success.
-class RetryURLLoaderInterceptor {
- public:
-  explicit RetryURLLoaderInterceptor(
-      network::TestURLLoaderFactory* test_url_loader_factory)
-      : test_url_loader_factory_(test_url_loader_factory) {
-    test_url_loader_factory_->SetInterceptor(base::BindRepeating(
-        &RetryURLLoaderInterceptor::InterceptURL, base::Unretained(this)));
-  }
-
-  void InterceptURL(const network::ResourceRequest& resource_request) {
-    if (resource_request.url != kSamplePrivetURL)
-      return;
-    net::HttpStatusCode status =
-        counter_++ < 3 ? net::HTTP_SERVICE_UNAVAILABLE : net::HTTP_OK;
-    test_url_loader_factory_->AddResponse(kSamplePrivetURL, kSampleParsableJSON,
-                                          status);
-  }
-
- private:
-  network::TestURLLoaderFactory* test_url_loader_factory_;
-  int counter_ = 0;
-  GURL url_;
-};
-
-TEST_F(PrivetURLLoaderTest, HTTP503Retry) {
-  PrivetURLLoader::RetryImmediatelyForTest retry_immediately;
-
-  // The interceptor simulates the service being unavailable and then available.
-  RetryURLLoaderInterceptor interceptor(&test_url_loader_factory_);
-
-  EXPECT_CALL(delegate_, OnParsedJsonInternal(false));
-  privet_url_loader_->Start();
-  base::RunLoop().RunUntilIdle();
-}
-
-TEST_F(PrivetURLLoaderTest, ResponseCodeError) {
-  test_url_loader_factory_.AddResponse(kSamplePrivetURL, kSampleParsableJSON,
-                                       net::HTTP_NOT_FOUND);
-  EXPECT_CALL(delegate_, OnError(_, PrivetURLLoader::RESPONSE_CODE_ERROR));
-  privet_url_loader_->Start();
-  base::RunLoop().RunUntilIdle();
-}
-
-TEST_F(PrivetURLLoaderTest, JsonParseError) {
-  test_url_loader_factory_.AddResponse(kSamplePrivetURL, kSampleUnparsableJSON);
-  EXPECT_CALL(delegate_, OnError(_, PrivetURLLoader::JSON_PARSE_ERROR));
-  privet_url_loader_->Start();
-  base::RunLoop().RunUntilIdle();
-}
-
-TEST_F(PrivetURLLoaderTest, Header) {
-  net::HttpRequestHeaders request_headers;
-  StartPrivetURLLoaderAndCaptureHeaders(&request_headers);
-
-  std::string header_token;
-  ASSERT_TRUE(request_headers.GetHeader("X-Privet-Token", &header_token));
-  EXPECT_EQ(kSamplePrivetToken, header_token);
-}
-
-TEST_F(PrivetURLLoaderTest, Header2) {
-  PrivetURLLoader::SetTokenForHost(GURL(kSamplePrivetURL).GetOrigin().spec(),
-                                   "");
-  privet_url_loader_->SendEmptyPrivetToken();
-
-  net::HttpRequestHeaders request_headers;
-  StartPrivetURLLoaderAndCaptureHeaders(&request_headers);
-
-  std::string header_token;
-  ASSERT_TRUE(request_headers.GetHeader("X-Privet-Token", &header_token));
-  EXPECT_EQ(kEmptyPrivetToken, header_token);
-}
-
-TEST_F(PrivetURLLoaderTest, AlwaysSendEmpty) {
-  PrivetURLLoader::SetTokenForHost(GURL(kSamplePrivetURL).GetOrigin().spec(),
-                                   "SampleToken");
-
-  privet_url_loader_->SendEmptyPrivetToken();
-
-  net::HttpRequestHeaders request_headers;
-  StartPrivetURLLoaderAndCaptureHeaders(&request_headers);
-
-  std::string header_token;
-  ASSERT_TRUE(request_headers.GetHeader("X-Privet-Token", &header_token));
-  EXPECT_EQ(kEmptyPrivetToken, header_token);
-}
-
-TEST_F(PrivetURLLoaderTest, HandleInvalidToken) {
-  privet_url_loader_->SetMaxRetriesForTest(1);
-  test_url_loader_factory_.AddResponse(kSamplePrivetURL, kSampleParsableJSON,
-                                       kHTTPErrorCodeInvalidXPrivetToken);
-  EXPECT_CALL(delegate_, OnNeedPrivetTokenInternal());
-  EXPECT_CALL(delegate_, OnError(0, PrivetURLLoader::UNKNOWN_ERROR));
-  privet_url_loader_->Start();
-  base::RunLoop().RunUntilIdle();
-}
-
-TEST_F(PrivetURLLoaderTest, FetchHasError) {
-  test_url_loader_factory_.AddResponse(kSamplePrivetURL, kSampleJSONWithError);
-  EXPECT_CALL(delegate_, OnParsedJsonInternal(true));
-  privet_url_loader_->Start();
-  base::RunLoop().RunUntilIdle();
-}
-
-TEST_F(PrivetURLLoaderTest, LoaderRawData) {
-  delegate_.SetRawMode(true);
-  test_url_loader_factory_.AddResponse(kSamplePrivetURL, kSampleJSONWithError);
-  EXPECT_CALL(delegate_, OnRawDataInternal(kSampleJSONWithError));
-  privet_url_loader_->Start();
-  base::RunLoop().RunUntilIdle();
-}
-
-TEST_F(PrivetURLLoaderTest, RangeRequest) {
-  delegate_.SetRawMode(true);
-  privet_url_loader_->SetByteRange(200, 300);
-
-  net::HttpRequestHeaders request_headers;
-  StartPrivetURLLoaderAndCaptureHeaders(&request_headers);
-
-  std::string header_range;
-  ASSERT_TRUE(request_headers.GetHeader("Range", &header_range));
-  EXPECT_EQ("bytes=200-300", header_range);
-}
-
-TEST_F(PrivetURLLoaderTest, LoaderToFile) {
-  test_url_loader_factory_.AddResponse(kSamplePrivetURL, kSampleParsableJSON);
-  delegate_.SetRawMode(true);
-  privet_url_loader_->SaveResponseToFile();
-  // Downloading to a file bounce to another thread for the write so we cannot
-  // just use RunLoop::RunUntilIdle() and have to wait for the callback.
-  base::FilePath response_file;
-  base::RunLoop run_loop;
-  EXPECT_CALL(delegate_, OnFileInternal(testing::_))
-      .WillOnce(testing::Invoke([&](const base::FilePath& response_file_param) {
-        response_file = response_file_param;
-        run_loop.Quit();
-      }));
-  privet_url_loader_->Start();
-  run_loop.Run();
-
-  std::string file_content;
-  ASSERT_TRUE(base::ReadFileToString(response_file, &file_content));
-  EXPECT_EQ(kSampleParsableJSON, file_content);
-}
-
-}  // namespace
-
-}  // namespace cloud_print
diff --git a/chrome/browser/profiles/profile_attributes_storage.cc b/chrome/browser/profiles/profile_attributes_storage.cc
index 1698fc0..26630f5 100644
--- a/chrome/browser/profiles/profile_attributes_storage.cc
+++ b/chrome/browser/profiles/profile_attributes_storage.cc
@@ -428,7 +428,7 @@
   DictionaryPrefUpdate update(prefs_, prefs::kProfileAttributes);
   base::DictionaryValue* attributes = update.Get();
   std::string key = StorageKeyFromProfilePath(profile_path);
-  attributes->Remove(key, nullptr);
+  attributes->RemoveKey(key);
   profile_attributes_entries_.erase(profile_path.value());
 
   // `OnProfileWasRemoved()` must be the first observer method being called
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn
index a9bd73841..50e47faf 100644
--- a/chrome/browser/resources/BUILD.gn
+++ b/chrome/browser/resources/BUILD.gn
@@ -123,7 +123,6 @@
         "bluetooth_internals:closure_compile",
         "commander:closure_compile",
         "discards:closure_compile",
-        "download_internals:closure_compile",
         "federated_learning:closure_compile",
         "feedback_webui/js:closure_compile",
         "gaia_auth_host:closure_compile",
@@ -311,7 +310,6 @@
   sources = [
     "$root_gen_dir/chrome/bluetooth_internals_resources.pak",
     "$root_gen_dir/chrome/dev_ui_browser_resources.pak",
-    "$root_gen_dir/chrome/download_internals_resources.pak",
     "$root_gen_dir/chrome/floc_internals_resources.pak",
     "$root_gen_dir/chrome/internals_resources.pak",
     "$root_gen_dir/chrome/invalidations_resources.pak",
@@ -321,6 +319,7 @@
     "$root_gen_dir/chrome/usb_internals_resources.pak",
     "$root_gen_dir/chrome/webrtc_logs_resources.pak",
     "$root_gen_dir/components/dev_ui_components_resources.pak",
+    "$root_gen_dir/components/download_internals_resources.pak",
     "$root_gen_dir/components/sync_driver_sync_internals_resources.pak",
     "$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
     "$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak",
@@ -329,7 +328,6 @@
   deps = [
     "//chrome/browser:dev_ui_browser_resources",
     "//chrome/browser/resources/bluetooth_internals:resources",
-    "//chrome/browser/resources/download_internals:resources",
     "//chrome/browser/resources/federated_learning:resources",
     "//chrome/browser/resources/internals:resources",
     "//chrome/browser/resources/invalidations:resources",
@@ -338,6 +336,7 @@
     "//chrome/browser/resources/omnibox:resources",
     "//chrome/browser/resources/quota_internals:resources",
     "//chrome/browser/resources/usb_internals:resources",
+    "//components/download/resources/download_internals:resources",
     "//components/resources:dev_ui_components_resources",
     "//components/sync/driver/resources",
     "//content:dev_ui_content_resources",
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js
index 9432147..c9854ba2 100644
--- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js
@@ -182,6 +182,26 @@
       });
     });
 
+TEST_F('MagnifierE2ETest', 'MagnifierCenterOnPoint', function() {
+  this.runWithLoadedTree('', async function(root) {
+    const targetPoint = {x: 100, y: 100};
+    const targetBounds = {left: 100, top: 100, width: 0, height: 0};
+    const magnifier = accessibilityCommon.getMagnifierForTest();
+    magnifier.setIsInitializingForTest(false);
+
+    // Verify magnifier bounds don't include |targetBounds|.
+    bounds = await this.getNextMagnifierBounds();
+    assertFalse(RectUtil.contains(bounds, targetBounds));
+
+    // Center magnifier on point |targetPoint|.
+    chrome.accessibilityPrivate.magnifierCenterOnPoint(targetPoint);
+
+    // Verify magnifier bounds do include |targetBounds|.
+    bounds = await this.getNextMagnifierBounds();
+    assertTrue(RectUtil.contains(bounds, targetBounds));
+  });
+});
+
 
 TEST_F('MagnifierE2ETest', 'ScreenMagnifierFocusFollowingPref', function() {
   this.newCallback(async () => {
diff --git a/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js b/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js
index 6e6ddb1..839f5514 100644
--- a/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js
+++ b/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js
@@ -15,6 +15,7 @@
    * @return {!Promise} A promise firing once resetting has completed.
    */
   performResetProfileSettings(sendSettings, requestOrigin) {}
+
   /**
    * A method to be called when the reset profile dialog is hidden.
    */
@@ -42,18 +43,6 @@
    *     has been retrieved.
    */
   getTriggeredResetToolName() {}
-
-  // <if expr="chromeos">
-  /**
-   * A method to be called when the reset powerwash dialog is shown.
-   */
-  onPowerwashDialogShow() {}
-
-  /**
-   * Initiates a factory reset and restarts ChromeOS.
-   */
-  requestFactoryResetRestart() {}
-  // </if>
 }
 
 /**
@@ -99,18 +88,6 @@
   getTriggeredResetToolName() {
     return sendWithPromise('getTriggeredResetToolName');
   }
-
-  // <if expr="chromeos">
-  /** @override */
-  onPowerwashDialogShow() {
-    chrome.send('onPowerwashDialogShow');
-  }
-
-  /** @override */
-  requestFactoryResetRestart() {
-    chrome.send('requestFactoryResetRestart');
-  }
-  // </if>
 }
 
 addSingletonGetter(ResetBrowserProxyImpl);
diff --git a/chrome/browser/resources/signin/signin_reauth/signin_reauth_app.ts b/chrome/browser/resources/signin/signin_reauth/signin_reauth_app.ts
index 0e0e46c..0904a24 100644
--- a/chrome/browser/resources/signin/signin_reauth/signin_reauth_app.ts
+++ b/chrome/browser/resources/signin/signin_reauth/signin_reauth_app.ts
@@ -59,7 +59,7 @@
     super.connectedCallback();
 
     this.addWebUIListener(
-        'reauth-type-received', this.onReauthTypeReceived_.bind(this));
+        'reauth-type-determined', this.onReauthTypeDetermined_.bind(this));
     this.signinReauthBrowserProxy_.initialize();
   }
 
@@ -73,11 +73,7 @@
     this.signinReauthBrowserProxy_.cancel();
   }
 
-  /**
-   * @param requiresReauth Whether the user will be asked to
-   *     reauthenticate after clicking on the confirm button.
-   */
-  private onReauthTypeReceived_(_requiresReauth: boolean) {
+  private onReauthTypeDetermined_() {
     this.confirmButtonHidden_ = false;
     this.$.confirmButton.focus();
     this.cancelButtonHidden_ = false;
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.cc b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
index 4e90f8a7..0163c54 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
@@ -1751,7 +1751,7 @@
     return;
 
   for (const auto& credential : matching_reused_credentials) {
-    password_manager::PasswordStore* password_store =
+    password_manager::PasswordStoreInterface* password_store =
         GetStoreForReusedCredential(credential);
     // Password store can be null in tests.
     if (!password_store) {
@@ -1770,7 +1770,7 @@
     return;
 
   for (const auto& credential : matching_reused_credentials) {
-    password_manager::PasswordStore* password_store =
+    password_manager::PasswordStoreInterface* password_store =
         GetStoreForReusedCredential(credential);
     // Password store can be null in tests.
     if (!password_store) {
@@ -1795,20 +1795,20 @@
   return PasswordReuseManagerFactory::GetForProfile(profile_);
 }
 
-password_manager::PasswordStore*
+password_manager::PasswordStoreInterface*
 ChromePasswordProtectionService::GetProfilePasswordStore() const {
   // Always use EXPLICIT_ACCESS as the password manager checks IsIncognito
-  // itself when it shouldn't access the PasswordStore.
-  return PasswordStoreFactory::GetForProfile(profile_,
-                                             ServiceAccessType::EXPLICIT_ACCESS)
+  // itself when it shouldn't access the PasswordStoreInterface.
+  return PasswordStoreFactory::GetInterfaceForProfile(
+             profile_, ServiceAccessType::EXPLICIT_ACCESS)
       .get();
 }
 
-password_manager::PasswordStore*
+password_manager::PasswordStoreInterface*
 ChromePasswordProtectionService::GetAccountPasswordStore() const {
   // Always use EXPLICIT_ACCESS as the password manager checks IsIncognito
-  // itself when it shouldn't access the PasswordStore.
-  return AccountPasswordStoreFactory::GetForProfile(
+  // itself when it shouldn't access the PasswordStoreInterface.
+  return AccountPasswordStoreFactory::GetInterfaceForProfile(
              profile_, ServiceAccessType::EXPLICIT_ACCESS)
       .get();
 }
@@ -1867,7 +1867,7 @@
 }
 #endif  // FULL_SAFE_BROWSING
 
-password_manager::PasswordStore*
+password_manager::PasswordStoreInterface*
 ChromePasswordProtectionService::GetStoreForReusedCredential(
     const password_manager::MatchingReusedCredential& reused_credential) {
   if (!profile_)
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.h b/chrome/browser/safe_browsing/chrome_password_protection_service.h
index ac8410ee..f40a6c5 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service.h
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service.h
@@ -246,13 +246,13 @@
   // Returns the PasswordReuseManager associated with this instance.
   password_manager::PasswordReuseManager* GetPasswordReuseManager() const;
 
-  // Returns the profile PasswordStore associated with this instance.
-  password_manager::PasswordStore* GetProfilePasswordStore() const;
+  // Returns the profile PasswordStoreInterface associated with this instance.
+  password_manager::PasswordStoreInterface* GetProfilePasswordStore() const;
 
-  // Returns the GAIA-account-scoped PasswordStore associated with this
+  // Returns the GAIA-account-scoped PasswordStoreInterface associated with this
   // instance. The account password store contains passwords stored in the
   // account and is accessible only when the user is signed in and non syncing.
-  password_manager::PasswordStore* GetAccountPasswordStore() const;
+  password_manager::PasswordStoreInterface* GetAccountPasswordStore() const;
 
   // Gets the type of sync account associated with current profile or
   // |NOT_SIGNED_IN|.
@@ -560,7 +560,7 @@
   // Code shared by both ctors.
   void Init();
 
-  password_manager::PasswordStore* GetStoreForReusedCredential(
+  password_manager::PasswordStoreInterface* GetStoreForReusedCredential(
       const password_manager::MatchingReusedCredential& reused_credential);
 
   scoped_refptr<SafeBrowsingUIManager> ui_manager_;
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 dcf3a2c1..22b06c5 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
@@ -31,7 +31,7 @@
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/password_manager/core/browser/hash_password_manager.h"
 #include "components/password_manager/core/browser/insecure_credentials_table.h"
-#include "components/password_manager/core/browser/mock_password_store.h"
+#include "components/password_manager/core/browser/mock_password_store_interface.h"
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
 #include "components/password_manager/core/browser/password_reuse_detector.h"
@@ -236,26 +236,28 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
 
-    password_store_ =
-        base::WrapRefCounted(static_cast<password_manager::MockPasswordStore*>(
+    password_store_ = base::WrapRefCounted(
+        static_cast<password_manager::MockPasswordStoreInterface*>(
             PasswordStoreFactory::GetInstance()
                 ->SetTestingFactoryAndUse(
                     profile(),
-                    base::BindRepeating(&password_manager::BuildPasswordStore<
-                                        content::BrowserContext,
-                                        password_manager::MockPasswordStore>))
+                    base::BindRepeating(
+                        &password_manager::BuildPasswordStoreInterface<
+                            content::BrowserContext,
+                            password_manager::MockPasswordStoreInterface>))
                 .get()));
 
     if (base::FeatureList::IsEnabled(
             password_manager::features::kEnablePasswordsAccountStorage)) {
       account_password_store_ = base::WrapRefCounted(
-          static_cast<password_manager::MockPasswordStore*>(
+          static_cast<password_manager::MockPasswordStoreInterface*>(
               AccountPasswordStoreFactory::GetInstance()
                   ->SetTestingFactoryAndUse(
                       profile(),
-                      base::BindRepeating(&password_manager::BuildPasswordStore<
-                                          content::BrowserContext,
-                                          password_manager::MockPasswordStore>))
+                      base::BindRepeating(
+                          &password_manager::BuildPasswordStoreInterface<
+                              content::BrowserContext,
+                              password_manager::MockPasswordStoreInterface>))
                   .get()));
     }
 
@@ -416,8 +418,9 @@
   std::unique_ptr<IdentityTestEnvironmentProfileAdaptor>
       identity_test_env_profile_adaptor_;
   MockSecurityEventRecorder* security_event_recorder_;
-  scoped_refptr<password_manager::MockPasswordStore> password_store_;
-  scoped_refptr<password_manager::MockPasswordStore> account_password_store_;
+  scoped_refptr<password_manager::MockPasswordStoreInterface> password_store_;
+  scoped_refptr<password_manager::MockPasswordStoreInterface>
+      account_password_store_;
   // Owned by KeyedServiceFactory.
   syncer::FakeUserEventService* fake_user_event_service_;
 #if !defined(OS_ANDROID)
diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc
index 63261de..f351237c7 100644
--- a/chrome/browser/sync/chrome_sync_client.cc
+++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -66,7 +66,7 @@
 #include "components/invalidation/impl/invalidation_switches.h"
 #include "components/invalidation/impl/profile_invalidation_provider.h"
 #include "components/metrics/demographics/user_demographics.h"
-#include "components/password_manager/core/browser/password_store.h"
+#include "components/password_manager/core/browser/password_store_interface.h"
 #include "components/prefs/pref_service.h"
 #include "components/reading_list/core/reading_list_model.h"
 #include "components/reading_list/features/reading_list_switches.h"
@@ -210,9 +210,9 @@
   DCHECK(!account_web_data_service_ ||
          web_data_service_thread_ ==
              account_web_data_service_->GetDBTaskRunner());
-  profile_password_store_ = PasswordStoreFactory::GetForProfile(
+  profile_password_store_ = PasswordStoreFactory::GetInterfaceForProfile(
       profile_, ServiceAccessType::IMPLICIT_ACCESS);
-  account_password_store_ = AccountPasswordStoreFactory::GetForProfile(
+  account_password_store_ = AccountPasswordStoreFactory::GetInterfaceForProfile(
       profile_, ServiceAccessType::IMPLICIT_ACCESS);
 
   component_factory_ = std::make_unique<ProfileSyncComponentsFactoryImpl>(
diff --git a/chrome/browser/sync/chrome_sync_client.h b/chrome/browser/sync/chrome_sync_client.h
index 9dc5f00..689b807 100644
--- a/chrome/browser/sync/chrome_sync_client.h
+++ b/chrome/browser/sync/chrome_sync_client.h
@@ -23,7 +23,7 @@
 }  // namespace autofill
 
 namespace password_manager {
-class PasswordStore;
+class PasswordStoreInterface;
 }  // namespace password_manager
 
 namespace syncer {
@@ -99,8 +99,10 @@
   // respective backend threads.
   scoped_refptr<autofill::AutofillWebDataService> profile_web_data_service_;
   scoped_refptr<autofill::AutofillWebDataService> account_web_data_service_;
-  scoped_refptr<password_manager::PasswordStore> profile_password_store_;
-  scoped_refptr<password_manager::PasswordStore> account_password_store_;
+  scoped_refptr<password_manager::PasswordStoreInterface>
+      profile_password_store_;
+  scoped_refptr<password_manager::PasswordStoreInterface>
+      account_password_store_;
 
   // The task runner for the |web_data_service_|, if any.
   scoped_refptr<base::SequencedTaskRunner> web_data_service_thread_;
diff --git a/chrome/browser/sync/test/integration/enable_disable_test.cc b/chrome/browser/sync/test/integration/enable_disable_test.cc
index a07c35a..dde89a5 100644
--- a/chrome/browser/sync/test/integration/enable_disable_test.cc
+++ b/chrome/browser/sync/test/integration/enable_disable_test.cc
@@ -31,7 +31,6 @@
 using syncer::ModelTypeFromString;
 using syncer::ModelTypeSet;
 using syncer::ModelTypeToString;
-using syncer::ProxyTypes;
 using syncer::SyncUserSettings;
 using syncer::UserSelectableType;
 using syncer::UserSelectableTypeSet;
@@ -63,8 +62,8 @@
   return multi;
 }
 
-// This test enables and disables types and verifies the type is sufficiently
-// affected by checking for existence of a root node.
+// This test enables and disables types and verifies the type is active via
+// SyncService::GetActiveDataTypes().
 class EnableDisableSingleClientTest : public SyncTest {
  public:
   EnableDisableSingleClientTest() : SyncTest(SINGLE_CLIENT) {}
@@ -73,33 +72,8 @@
   // Don't use self-notifications as they can trigger additional sync cycles.
   bool TestUsesSelfNotifications() override { return false; }
 
-  bool ModelTypeExists(ModelType type) {
-    base::RunLoop loop;
-    std::unique_ptr<base::ListValue> all_nodes;
-    GetSyncService(0)->GetAllNodesForDebugging(
-        base::BindLambdaForTesting([&](std::unique_ptr<base::ListValue> nodes) {
-          all_nodes = std::move(nodes);
-          loop.Quit();
-        }));
-    loop.Run();
-    // Look for the root node corresponding to |type|.
-    for (const base::Value& value : all_nodes->GetList()) {
-      DCHECK(value.is_dict());
-      const base::Value* nodes = value.FindKey("nodes");
-      DCHECK(nodes);
-      DCHECK(nodes->is_list());
-      // Ignore types that are empty, because we expect the root node.
-      if (nodes->GetList().empty()) {
-        continue;
-      }
-      const base::Value* model_type = value.FindKey("type");
-      DCHECK(model_type);
-      DCHECK(model_type->is_string());
-      if (type == ModelTypeFromString(model_type->GetString())) {
-        return true;
-      }
-    }
-    return false;
+  bool IsModelTypeActive(ModelType type) {
+    return GetSyncService(0)->GetActiveDataTypes().Has(type);
   }
 
   void InjectSyncedBookmark() {
@@ -136,7 +110,6 @@
     ModelTypeSet grouped_types =
         syncer::SyncUserSettingsImpl::ResolvePreferredTypesForTesting({type});
     grouped_types.RetainAll(registered_data_types_);
-    grouped_types.RemoveAll(ProxyTypes());
     return grouped_types;
   }
 
@@ -158,10 +131,17 @@
   // Setup sync with no enabled types.
   SetupTest(/*all_types_enabled=*/false);
 
+  // Certain datatypes like SESSIONS can be configured by multiple
+  // user-selectable types. Hence, enabling a new user-selectable type doesn't
+  // necessarily mean that the datatype (SESSIONS) will be newly-configured. In
+  // this particular test, this influences whether the engine will issue UMA
+  // corresponding to the configuration cycle.
+  syncer::ModelTypeSet previously_active_types;
+
   for (UserSelectableType type : registered_selectable_types_) {
     const ModelTypeSet grouped_types = ResolveGroup(type);
     for (ModelType single_grouped_type : WithoutMultiTypes(grouped_types)) {
-      ASSERT_FALSE(ModelTypeExists(single_grouped_type))
+      ASSERT_FALSE(IsModelTypeActive(single_grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
 
@@ -169,10 +149,12 @@
     EXPECT_TRUE(GetClient(0)->EnableSyncForType(type));
 
     for (ModelType grouped_type : grouped_types) {
-      EXPECT_TRUE(ModelTypeExists(grouped_type))
+      EXPECT_TRUE(IsModelTypeActive(grouped_type))
           << " for " << GetUserSelectableTypeName(type);
 
-      if (syncer::CommitOnlyTypes().Has(grouped_type)) {
+      if (!syncer::ProtocolTypes().Has(grouped_type) ||
+          syncer::CommitOnlyTypes().Has(grouped_type) ||
+          previously_active_types.Has(grouped_type)) {
         EXPECT_EQ(0,
                   histogram_tester.GetBucketCount(
                       "Sync.PostedDataTypeGetUpdatesRequest",
@@ -185,6 +167,8 @@
                       static_cast<int>(ModelTypeHistogramValue(grouped_type))))
             << " for " << ModelTypeToString(grouped_type);
       }
+
+      previously_active_types.Put(grouped_type);
     }
   }
 }
@@ -196,14 +180,14 @@
   for (UserSelectableType type : registered_selectable_types_) {
     const ModelTypeSet grouped_types = ResolveGroup(type);
     for (ModelType grouped_type : grouped_types) {
-      ASSERT_TRUE(ModelTypeExists(grouped_type))
+      ASSERT_TRUE(IsModelTypeActive(grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
 
     EXPECT_TRUE(GetClient(0)->DisableSyncForType(type));
 
     for (ModelType single_grouped_type : WithoutMultiTypes(grouped_types)) {
-      EXPECT_FALSE(ModelTypeExists(single_grouped_type))
+      EXPECT_FALSE(IsModelTypeActive(single_grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
   }
@@ -211,7 +195,7 @@
   // Lastly make sure that all the multi grouped times are all gone, since we
   // did not check these after disabling inside the above loop.
   for (ModelType multi_grouped_type : multi_grouped_types_) {
-    EXPECT_FALSE(ModelTypeExists(multi_grouped_type))
+    EXPECT_FALSE(IsModelTypeActive(multi_grouped_type))
         << " for " << ModelTypeToString(multi_grouped_type);
   }
 }
@@ -225,7 +209,7 @@
     const ModelTypeSet grouped_types = ResolveGroup(type);
     const ModelTypeSet single_grouped_types = WithoutMultiTypes(grouped_types);
     for (ModelType single_grouped_type : single_grouped_types) {
-      ASSERT_FALSE(ModelTypeExists(single_grouped_type))
+      ASSERT_FALSE(IsModelTypeActive(single_grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
 
@@ -235,7 +219,7 @@
     EXPECT_TRUE(GetClient(0)->DisableSyncForType(type));
 
     for (ModelType single_grouped_type : single_grouped_types) {
-      EXPECT_FALSE(ModelTypeExists(single_grouped_type))
+      EXPECT_FALSE(IsModelTypeActive(single_grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
   }
@@ -243,7 +227,7 @@
   // Lastly make sure that all the multi grouped times are all gone, since we
   // did not check these after disabling inside the above loop.
   for (ModelType multi_grouped_type : multi_grouped_types_) {
-    EXPECT_FALSE(ModelTypeExists(multi_grouped_type))
+    EXPECT_FALSE(IsModelTypeActive(multi_grouped_type))
         << " for " << ModelTypeToString(multi_grouped_type);
   }
 }
@@ -256,7 +240,7 @@
   for (UserSelectableType type : registered_selectable_types_) {
     const ModelTypeSet grouped_types = ResolveGroup(type);
     for (ModelType grouped_type : grouped_types) {
-      ASSERT_TRUE(ModelTypeExists(grouped_type))
+      ASSERT_TRUE(IsModelTypeActive(grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
 
@@ -266,7 +250,7 @@
     EXPECT_TRUE(GetClient(0)->EnableSyncForType(type));
 
     for (ModelType grouped_type : grouped_types) {
-      EXPECT_TRUE(ModelTypeExists(grouped_type))
+      EXPECT_TRUE(IsModelTypeActive(grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
   }
@@ -281,7 +265,7 @@
     const ModelTypeSet single_grouped_types =
         WithoutMultiTypes(ResolveGroup(type));
     for (ModelType single_grouped_type : single_grouped_types) {
-      ASSERT_FALSE(ModelTypeExists(single_grouped_type))
+      ASSERT_FALSE(IsModelTypeActive(single_grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
 
@@ -292,7 +276,7 @@
     EXPECT_TRUE(GetClient(0)->EnableSyncForType(type));
 
     for (ModelType single_grouped_type : single_grouped_types) {
-      EXPECT_TRUE(ModelTypeExists(single_grouped_type))
+      EXPECT_TRUE(IsModelTypeActive(single_grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
   }
@@ -309,7 +293,7 @@
 
   for (UserSelectableType type : UserSelectableTypeSet::All()) {
     for (ModelType grouped_type : ResolveGroup(type)) {
-      EXPECT_FALSE(ModelTypeExists(grouped_type))
+      EXPECT_FALSE(IsModelTypeActive(grouped_type))
           << " for " << GetUserSelectableTypeName(type);
     }
   }
@@ -326,7 +310,7 @@
 
   for (UserSelectableType type : UserSelectableTypeSet::All()) {
     for (ModelType model_type : ResolveGroup(type)) {
-      EXPECT_TRUE(ModelTypeExists(model_type))
+      EXPECT_TRUE(IsModelTypeActive(model_type))
           << " for " << ModelTypeToString(model_type);
     }
   }
@@ -344,7 +328,7 @@
 
   for (UserSelectableType type : UserSelectableTypeSet::All()) {
     for (ModelType model_type : ResolveGroup(type)) {
-      EXPECT_TRUE(ModelTypeExists(model_type))
+      EXPECT_TRUE(IsModelTypeActive(model_type))
           << " for " << ModelTypeToString(model_type);
     }
   }
diff --git a/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc b/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc
index 9e5911d..ec568823 100644
--- a/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc
@@ -807,9 +807,17 @@
   EXPECT_TRUE(keys_cleared_checker.Wait());
 }
 
+// Failing on Mac 10.11 (See http://crbug.com/1235658)
+#if defined(OS_MAC)
+#define MAYBE_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared \
+    DISABLED_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared
+#else
+#define MAYBE_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared \
+    ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared
+#endif
 IN_PROC_BROWSER_TEST_F(
     SingleClientNigoriWithWebApiTest,
-    ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared) {
+    MAYBE_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared) {
   const std::vector<uint8_t> kTestEncryptionKey = {1, 2, 3, 4};
 
   // Mimic the account being already using a trusted vault passphrase.
diff --git a/chrome/browser/sync/test/integration/two_client_web_apps_integration_sync_test.cc b/chrome/browser/sync/test/integration/two_client_web_apps_integration_sync_test.cc
index 9775866..bc43740c 100644
--- a/chrome/browser/sync/test/integration/two_client_web_apps_integration_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_web_apps_integration_sync_test.cc
@@ -18,28 +18,6 @@
 
 namespace web_app {
 
-namespace {
-
-const char kTestCaseFileName[] =
-    "web_app_integration_browsertest_sync_cases.csv";
-
-// Returns the path of the requested file in the test data directory.
-base::FilePath GetTestFileDir() {
-  base::FilePath file_path;
-  base::PathService::Get(base::DIR_SOURCE_ROOT, &file_path);
-  file_path = file_path.Append(FILE_PATH_LITERAL("chrome"));
-  file_path = file_path.Append(FILE_PATH_LITERAL("test"));
-  file_path = file_path.Append(FILE_PATH_LITERAL("data"));
-  return file_path.Append(FILE_PATH_LITERAL("web_apps"));
-}
-
-std::vector<std::string> BuildAllPlatformTestCaseSet() {
-  return WebAppIntegrationBrowserTestBase::BuildAllPlatformTestCaseSet(
-      GetTestFileDir(), kTestCaseFileName);
-}
-
-}  // anonymous namespace
-
 class TwoClientWebAppsIntegrationSyncTest
     : public SyncTest,
       public WebAppIntegrationBrowserTestBase::TestDelegate,
@@ -71,15 +49,13 @@
 
   bool IsSyncTest() override { return true; }
 
-  bool UserSigninInternal() override { return SyncTest::SetupSync(); }
-
-  void TurnSyncOff() override {
+  void SyncTurnOff() override {
     for (auto* client : GetSyncClients()) {
       client->StopSyncServiceAndClearData();
     }
   }
 
-  void TurnSyncOn() override {
+  void SyncTurnOn() override {
     for (auto* client : GetSyncClients()) {
       ASSERT_TRUE(client->StartSyncService());
     }
@@ -103,12 +79,14 @@
     helper_.SetUpOnMainThread();
   }
 
+  void TearDownOnMainThread() override { helper_.TearDownOnMainThread(); }
+
   void SetUpCommandLine(base::CommandLine* command_line) override {
     SyncTest::SetUpCommandLine(command_line);
     ASSERT_TRUE(embedded_test_server()->Start());
     command_line->AppendSwitchASCII(
         network::switches::kUnsafelyTreatInsecureOriginAsSecure,
-        helper_.GetInstallableAppURL("site_a").GetOrigin().spec());
+        helper_.GetInstallableAppURL("SiteA").GetOrigin().spec());
     command_line->AppendSwitch("disable-fake-server-failure-output");
   }
 
@@ -133,21 +111,6 @@
 // documented in //chrome/browser/ui/views/web_apps/README.md. For information
 // about diagnosing, debugging and/or disabling tests, please look to the
 // README file.
-IN_PROC_BROWSER_TEST_P(TwoClientWebAppsIntegrationSyncTest, Default) {
-  helper_.ParseParams(GetParam());
-  // Since this test framework differs from traditional browser tests, print
-  // some useful information for sheriffs and developers to help identify,
-  // diagnose, and disable failing tests.
-  LOG(INFO) << helper_.BuildLogForTest(helper_.testing_actions(), IsSyncTest());
-
-  for (const auto& action : helper_.testing_actions()) {
-    helper_.ExecuteAction(action);
-  }
-}
-
-INSTANTIATE_TEST_SUITE_P(All,
-                         TwoClientWebAppsIntegrationSyncTest,
-                         testing::ValuesIn(BuildAllPlatformTestCaseSet()));
 
 namespace {
 // TODO(jarrydg@chromium.org): Remove the macro disabling the following tests
@@ -159,56 +122,125 @@
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  SwitchProfileClients("UserAClient2");
-  CheckAppInListNotLocallyInstalled("SiteA");
-  NavigateBrowser("SiteA");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SwitchProfileClients();
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppInListNotLocallyInstalled("SiteA");
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
 IN_PROC_BROWSER_TEST_F(
-    WebAppSyncIntegrationTestBase,
+    TwoClientWebAppsIntegrationSyncTest,
     WebAppIntegration_InstOmniboxSiteA_WindowCreated_SwitchProfileClientUserAClient2_InListNotLclyInstSiteA_TurnSyncOff) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  SwitchProfileClients("UserAClient2");
-  CheckAppInListNotLocallyInstalled("SiteA");
-  SyncTurnOff();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SwitchProfileClients();
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppInListNotLocallyInstalled("SiteA");
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SyncTurnOff();
+  helper_.AfterStateChangeAction();
 }
 
 IN_PROC_BROWSER_TEST_F(
-    WebAppSyncIntegrationTestBase,
+    TwoClientWebAppsIntegrationSyncTest,
     WebAppIntegration_InstMenuOptionSiteA_WindowCreated_SwitchProfileClientUserAClient2_InListNotLclyInstSiteA_NavSiteA_InstIconShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  SwitchProfileClients("UserAClient2");
-  CheckAppInListNotLocallyInstalled("SiteA");
-  NavigateBrowser("SiteA");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SwitchProfileClients();
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppInListNotLocallyInstalled("SiteA");
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
 IN_PROC_BROWSER_TEST_F(
-    WebAppSyncIntegrationTestBase,
+    TwoClientWebAppsIntegrationSyncTest,
     WebAppIntegration_InstMenuOptionSiteA_WindowCreated_SwitchProfileClientUserAClient2_InListNotLclyInstSiteA_TurnSyncOff) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  SwitchProfileClients("UserAClient2");
-  CheckAppInListNotLocallyInstalled("SiteA");
-  SyncTurnOff();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SwitchProfileClients();
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppInListNotLocallyInstalled("SiteA");
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SyncTurnOff();
+  helper_.AfterStateChangeAction();
 }
 #endif
 
 }  // namespace
+
 }  // namespace web_app
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLogger.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLogger.java
index 5d7ad9cea..2266989 100644
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLogger.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PriceDropMetricsLogger.java
@@ -11,12 +11,33 @@
 import org.chromium.base.metrics.RecordHistogram;
 
 import java.util.Locale;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Records metrics to better understand and enhance our price drops feature
  */
 public class PriceDropMetricsLogger {
+    private static final long NINETY_DAYS_MS = TimeUnit.DAYS.toMillis(90);
+    private static final long ONE_DAY_MS = TimeUnit.DAYS.toMillis(1);
+
     private MetricsResult mMetrics;
+    @VisibleForTesting
+    protected enum TabUsageStatus {
+        ABANDONED("AbandonedTab"),
+        STALE("StaleTab"),
+        ACTIVE("ActiveTab");
+
+        private final String mTabUsageStatus;
+
+        TabUsageStatus(String tabUsageStatus) {
+            mTabUsageStatus = tabUsageStatus;
+        }
+
+        @Override
+        public String toString() {
+            return mTabUsageStatus;
+        }
+    }
 
     /**
      * Log metrics related to our price drops feature.
@@ -30,20 +51,27 @@
     /**
      * Log metrics related to the price drops feature
      * @param locationIdentifier to be placed in the metric name (these metrics are recorded in
-     *         different places in the user experience)
+     *         different places in the user experience).
+     * @param timeSinceTabLastOpenedMs time since the tab was last opened in milliseconds.
      */
-    public void logPriceDropMetrics(String locationIdentifier) {
+    public void logPriceDropMetrics(String locationIdentifier, long timeSinceTabLastOpenedMs) {
+        TabUsageStatus tabUsageStatus = getTabUsageStatus(timeSinceTabLastOpenedMs);
+        // Tabs greater than 90 days old are not included in price drops, so the following shouldn't
+        // happen but is included as a safeguard.
+        if (tabUsageStatus == TabUsageStatus.ABANDONED) {
+            return;
+        }
         RecordHistogram.recordBooleanHistogram(
-                String.format(Locale.US, "Commerce.PriceDrops.%s.IsProductDetailPage",
-                        locationIdentifier),
+                String.format(Locale.US, "Commerce.PriceDrops.%s%s.IsProductDetailPage",
+                        tabUsageStatus, locationIdentifier),
                 mMetrics.isProductDetailPage);
         RecordHistogram.recordBooleanHistogram(
-                String.format(
-                        Locale.US, "Commerce.PriceDrops.%s.ContainsPrice", locationIdentifier),
+                String.format(Locale.US, "Commerce.PriceDrops.%s%s.ContainsPrice", tabUsageStatus,
+                        locationIdentifier),
                 mMetrics.containsPrice);
         RecordHistogram.recordBooleanHistogram(
-                String.format(
-                        Locale.US, "Commerce.PriceDrops.%s.ContainsPriceDrop", locationIdentifier),
+                String.format(Locale.US, "Commerce.PriceDrops.%s%s.ContainsPriceDrop",
+                        tabUsageStatus, locationIdentifier),
                 mMetrics.containsPriceDrop);
     }
 
@@ -60,6 +88,14 @@
     }
 
     @VisibleForTesting
+    protected static TabUsageStatus getTabUsageStatus(long timeSinceTabLastOpenedMs) {
+        if (timeSinceTabLastOpenedMs >= NINETY_DAYS_MS) {
+            return TabUsageStatus.ABANDONED;
+        }
+        return timeSinceTabLastOpenedMs < ONE_DAY_MS ? TabUsageStatus.ACTIVE : TabUsageStatus.STALE;
+    }
+
+    @VisibleForTesting
     protected static class MetricsResult {
         public final boolean isProductDetailPage;
         public final boolean containsPrice;
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/ShoppingPersistedTabData.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/ShoppingPersistedTabData.java
index e4c4d001..49dd5de 100644
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/ShoppingPersistedTabData.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/ShoppingPersistedTabData.java
@@ -238,7 +238,8 @@
                                 setLastUpdatedMs(System.currentTimeMillis());
                                 mPriceDropMetricsLogger = new PriceDropMetricsLogger(this);
                                 mPriceDropMetricsLogger.logPriceDropMetrics(
-                                        METRICS_IDENTIFIER_PREFIX);
+                                        METRICS_IDENTIFIER_PREFIX,
+                                        getTimeSinceTabLastOpenedMs(tab));
                             } catch (InvalidProtocolBufferException e) {
                                 Log.i(TAG,
                                         String.format(Locale.US,
@@ -262,7 +263,8 @@
      */
     public void logPriceDropMetrics(String locationIdentifier) {
         if (mPriceDropMetricsLogger != null) {
-            mPriceDropMetricsLogger.logPriceDropMetrics(locationIdentifier);
+            mPriceDropMetricsLogger.logPriceDropMetrics(
+                    locationIdentifier, getTimeSinceTabLastOpenedMs(mTab));
         }
     }
 
diff --git a/chrome/browser/touch_to_fill/DEPS b/chrome/browser/touch_to_fill/DEPS
index 557b697..7f6dcd7 100644
--- a/chrome/browser/touch_to_fill/DEPS
+++ b/chrome/browser/touch_to_fill/DEPS
@@ -3,4 +3,6 @@
   "+chrome/browser/ui/android/favicon/java",
   "+components/browser_ui/bottomsheet/android",
   "+components/favicon/android",
+  "+components/device_reauth/biometric_authenticator.h",
+  "+components/device_reauth/mock_biometric_authenticator.h",
 ]
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller.cc b/chrome/browser/touch_to_fill/touch_to_fill_controller.cc
index e466ed0..e30c5c2 100644
--- a/chrome/browser/touch_to_fill/touch_to_fill_controller.cc
+++ b/chrome/browser/touch_to_fill/touch_to_fill_controller.cc
@@ -11,12 +11,12 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/ranges/algorithm.h"
 #include "base/types/pass_key.h"
-#include "chrome/browser/password_manager/chrome_biometric_authenticator.h"
+#include "chrome/browser/device_reauth/chrome_biometric_authenticator.h"
 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
 #include "chrome/browser/touch_to_fill/touch_to_fill_view.h"
 #include "chrome/browser/touch_to_fill/touch_to_fill_view_factory.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/core/browser/android_affiliation/affiliation_utils.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
 #include "components/password_manager/core/browser/origin_credential_store.h"
 #include "components/password_manager/core/browser/password_manager_driver.h"
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
@@ -34,7 +34,7 @@
 
 using ShowVirtualKeyboard =
     password_manager::PasswordManagerDriver::ShowVirtualKeyboard;
-using password_manager::BiometricsAvailability;
+using device_reauth::BiometricsAvailability;
 using password_manager::PasswordManagerDriver;
 using password_manager::UiCredential;
 
@@ -57,12 +57,12 @@
 
 TouchToFillController::TouchToFillController(
     base::PassKey<TouchToFillControllerTest>,
-    scoped_refptr<password_manager::BiometricAuthenticator> authenticator)
+    scoped_refptr<device_reauth::BiometricAuthenticator> authenticator)
     : authenticator_(std::move(authenticator)) {}
 
 TouchToFillController::TouchToFillController(
     ChromePasswordManagerClient* password_client,
-    scoped_refptr<password_manager::BiometricAuthenticator> authenticator)
+    scoped_refptr<device_reauth::BiometricAuthenticator> authenticator)
     : password_client_(password_client),
       authenticator_(std::move(authenticator)),
       source_id_(ukm::GetSourceIdForWebContentsDocument(
@@ -71,8 +71,7 @@
 TouchToFillController::~TouchToFillController() {
   if (authenticator_) {
     // This is a noop if no auth triggered by Touch To Fill is in progress.
-    authenticator_->Cancel(
-        password_manager::BiometricAuthRequester::kTouchToFill);
+    authenticator_->Cancel(device_reauth::BiometricAuthRequester::kTouchToFill);
   }
 }
 
@@ -120,7 +119,7 @@
   // the callback being reset by the authenticator. Therefore, it is safe
   // to use base::Unretained.
   authenticator_->Authenticate(
-      password_manager::BiometricAuthRequester::kTouchToFill,
+      device_reauth::BiometricAuthRequester::kTouchToFill,
       base::BindOnce(&TouchToFillController::OnReauthCompleted,
                      base::Unretained(this), credential));
 }
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller.h b/chrome/browser/touch_to_fill/touch_to_fill_controller.h
index 723988a2..a9bd8ac 100644
--- a/chrome/browser/touch_to_fill/touch_to_fill_controller.h
+++ b/chrome/browser/touch_to_fill/touch_to_fill_controller.h
@@ -15,7 +15,7 @@
 #include "base/types/pass_key.h"
 #include "chrome/browser/touch_to_fill/touch_to_fill_view.h"
 #include "chrome/browser/touch_to_fill/touch_to_fill_view_factory.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 #include "ui/gfx/native_widget_types.h"
 
@@ -45,10 +45,10 @@
   // No-op constructor for tests.
   TouchToFillController(
       base::PassKey<class TouchToFillControllerTest>,
-      scoped_refptr<password_manager::BiometricAuthenticator> authenticator);
+      scoped_refptr<device_reauth::BiometricAuthenticator> authenticator);
   TouchToFillController(
       ChromePasswordManagerClient* password_client,
-      scoped_refptr<password_manager::BiometricAuthenticator> authenticator);
+      scoped_refptr<device_reauth::BiometricAuthenticator> authenticator);
   TouchToFillController(const TouchToFillController&) = delete;
   TouchToFillController& operator=(const TouchToFillController&) = delete;
   ~TouchToFillController();
@@ -96,7 +96,7 @@
   base::WeakPtr<password_manager::PasswordManagerDriver> driver_;
 
   // Authenticator used to trigger a biometric auth before filling.
-  scoped_refptr<password_manager::BiometricAuthenticator> authenticator_;
+  scoped_refptr<device_reauth::BiometricAuthenticator> authenticator_;
 
   ukm::SourceId source_id_ = ukm::kInvalidSourceId;
 
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller_unittest.cc b/chrome/browser/touch_to_fill/touch_to_fill_controller_unittest.cc
index 194b73e..23a80789 100644
--- a/chrome/browser/touch_to_fill/touch_to_fill_controller_unittest.cc
+++ b/chrome/browser/touch_to_fill/touch_to_fill_controller_unittest.cc
@@ -14,8 +14,8 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "base/types/pass_key.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
-#include "components/password_manager/core/browser/mock_biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
+#include "components/device_reauth/mock_biometric_authenticator.h"
 #include "components/password_manager/core/browser/origin_credential_store.h"
 #include "components/password_manager/core/browser/stub_password_manager_client.h"
 #include "components/password_manager/core/browser/stub_password_manager_driver.h"
@@ -32,7 +32,9 @@
 using ShowVirtualKeyboard =
     password_manager::PasswordManagerDriver::ShowVirtualKeyboard;
 using base::test::RunOnceCallback;
-using password_manager::MockBiometricAuthenticator;
+using device_reauth::BiometricAuthRequester;
+using device_reauth::BiometricsAvailability;
+using device_reauth::MockBiometricAuthenticator;
 using password_manager::UiCredential;
 using ::testing::_;
 using ::testing::ElementsAreArray;
@@ -184,7 +186,7 @@
   EXPECT_CALL(driver(), TouchToFillClosed(ShowVirtualKeyboard(false)));
 
   EXPECT_CALL(*authenticator(), CanAuthenticate())
-      .WillOnce(Return(password_manager::BiometricsAvailability::kNoHardware));
+      .WillOnce(Return(BiometricsAvailability::kNoHardware));
 
   touch_to_fill_controller().OnCredentialSelected(credentials[0]);
   histogram_tester().ExpectUniqueSample(
@@ -213,10 +215,9 @@
   EXPECT_CALL(driver(), TouchToFillClosed(ShowVirtualKeyboard(false)));
 
   EXPECT_CALL(*authenticator(), CanAuthenticate())
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
-  EXPECT_CALL(
-      *authenticator(),
-      Authenticate(password_manager::BiometricAuthRequester::kTouchToFill, _))
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
+  EXPECT_CALL(*authenticator(),
+              Authenticate(BiometricAuthRequester::kTouchToFill, _))
       .WillOnce(RunOnceCallback<1>(true));
   touch_to_fill_controller().OnCredentialSelected(credentials[0]);
 }
@@ -233,10 +234,9 @@
   EXPECT_CALL(driver(), TouchToFillClosed(ShowVirtualKeyboard(true)));
 
   EXPECT_CALL(*authenticator(), CanAuthenticate())
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
-  EXPECT_CALL(
-      *authenticator(),
-      Authenticate(password_manager::BiometricAuthRequester::kTouchToFill, _))
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
+  EXPECT_CALL(*authenticator(),
+              Authenticate(BiometricAuthRequester::kTouchToFill, _))
       .WillOnce(RunOnceCallback<1>(false));
   touch_to_fill_controller().OnCredentialSelected(credentials[0]);
 }
@@ -287,7 +287,7 @@
                                        std::u16string(u"s3cr3t")));
   EXPECT_CALL(driver(), TouchToFillClosed(ShowVirtualKeyboard(false)));
   EXPECT_CALL(*authenticator(), CanAuthenticate())
-      .WillOnce(Return(password_manager::BiometricsAvailability::kNoHardware));
+      .WillOnce(Return(BiometricsAvailability::kNoHardware));
   touch_to_fill_controller().OnCredentialSelected(credentials[1]);
   histogram_tester().ExpectUniqueSample(
       "PasswordManager.TouchToFill.NumCredentialsShown", 2, 1);
@@ -361,12 +361,10 @@
   touch_to_fill_controller().Show(credentials, driver().AsWeakPtr());
 
   EXPECT_CALL(*authenticator(), CanAuthenticate)
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
-  EXPECT_CALL(
-      *authenticator(),
-      Authenticate(password_manager::BiometricAuthRequester::kTouchToFill, _));
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
+  EXPECT_CALL(*authenticator(),
+              Authenticate(BiometricAuthRequester::kTouchToFill, _));
   touch_to_fill_controller().OnCredentialSelected(credentials[0]);
 
-  EXPECT_CALL(*authenticator(),
-              Cancel(password_manager::BiometricAuthRequester::kTouchToFill));
+  EXPECT_CALL(*authenticator(), Cancel(BiometricAuthRequester::kTouchToFill));
 }
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index f8a8a41..f975bd3c 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -388,7 +388,6 @@
     "//chrome/browser/profiles",
     "//chrome/browser/profiles:profile",
     "//chrome/browser/profiling_host",
-    "//chrome/browser/resources/download_internals:resources",
     "//chrome/browser/resources/federated_learning:resources",
     "//chrome/browser/resources/internals:resources",
     "//chrome/browser/resources/invalidations:resources",
@@ -447,6 +446,7 @@
     "//components/domain_reliability",
     "//components/download/content/factory",
     "//components/download/content/public",
+    "//components/download/resources/download_internals:resources",
     "//components/embedder_support",
     "//components/embedder_support:browser_util",
     "//components/encrypted_messages:encrypted_message_proto",
@@ -5182,6 +5182,7 @@
     deps += [
       "//chrome/test:test_support_ui",
       "//components/media_message_center:media_message_center",
+      "//components/media_router/browser:browser",
       "//components/signin/core/browser",
       "//components/signin/public/identity_manager",
       "//components/ukm:test_support",
diff --git a/chrome/browser/ui/android/appmenu/internal/java/res/layout/title_button_menu_item.xml b/chrome/browser/ui/android/appmenu/internal/java/res/layout/title_button_menu_item.xml
index 5c6f6f9..d944ad8 100644
--- a/chrome/browser/ui/android/appmenu/internal/java/res/layout/title_button_menu_item.xml
+++ b/chrome/browser/ui/android/appmenu/internal/java/res/layout/title_button_menu_item.xml
@@ -27,7 +27,8 @@
         android:layout_height="match_parent"
         android:layout_weight="1"
         android:paddingStart="16dp"
-        android:background="@color/menu_item_bg_color" />
+        android:background="@color/menu_item_bg_color"
+        android:foreground="?attr/listChoiceBackgroundIndicator"/>
 
     <!-- Checkbox.  Paddings account for built-in padding from the Android resource. -->
     <org.chromium.chrome.browser.ui.appmenu.AppMenuItemIcon
@@ -35,6 +36,7 @@
         android:layout_width="56dp"
         android:layout_height="match_parent"
         android:background="@color/menu_item_bg_color"
+        android:foreground="?attr/listChoiceBackgroundIndicator"
         android:paddingStart="12dp"
         android:paddingEnd="12dp"
         android:paddingTop="8dp"
@@ -51,6 +53,7 @@
         android:layout_width="56dp"
         android:layout_height="match_parent"
         android:background="@color/menu_item_bg_color"
+        android:foreground="?attr/listChoiceBackgroundIndicator"
         android:paddingStart="16dp"
         android:paddingEnd="16dp"
         android:paddingTop="12dp"
diff --git a/chrome/browser/ui/ash/chrome_shell_delegate.cc b/chrome/browser/ui/ash/chrome_shell_delegate.cc
index 4e3e746..d96d7b6 100644
--- a/chrome/browser/ui/ash/chrome_shell_delegate.cc
+++ b/chrome/browser/ui/ash/chrome_shell_delegate.cc
@@ -14,6 +14,8 @@
 #include "base/check.h"
 #include "base/command_line.h"
 #include "cc/input/touch_action.h"
+#include "chrome/browser/apps/app_service/app_service_proxy.h"
+#include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
 #include "chrome/browser/ash/file_manager/path_util.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/browser/browser_process.h"
@@ -402,6 +404,21 @@
     }
   }
 
+  auto& app_registry_cache =
+      apps::AppServiceProxyFactory::GetForProfile(user_profile)
+          ->AppRegistryCache();
+  const apps::mojom::AppType app_type = app_registry_cache.GetAppType(app_id);
+  if (app_id != extension_misc::kChromeAppId &&
+      (app_type == apps::mojom::AppType::kExtension ||
+       app_type == apps::mojom::AppType::kWeb)) {
+    // If these values are not present, we will not be able to restore the
+    // application. See http://crbug.com/1232520 for more information.
+    if (!app_launch_info->container.has_value() ||
+        !app_launch_info->disposition.has_value()) {
+      return nullptr;
+    }
+  }
+
   return app_launch_info;
 }
 
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc
index d8fcb0c..32592b6 100644
--- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc
+++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc
@@ -1792,36 +1792,33 @@
   constexpr gfx::Size kImageSize(20, 20);
   constexpr bool kDarkBackground = false;
 
-  // Initially the holding space image should be an empty bitmap until the
-  // thumbnail loader finishes processing the request. Note that requesting the
-  // image is what spawns the initial request.
-  gfx::ImageSkia actual_image =
-      model->items()[0]->image().GetImageSkia(kImageSize, kDarkBackground);
-  gfx::ImageSkia expected_image = image_util::CreateEmptyImage(kImageSize);
-  EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
-
-  ThumbnailLoader* thumbnail_loader =
-      HoldingSpaceKeyedServiceFactory::GetInstance()
-          ->GetService(GetProfile())
-          ->thumbnail_loader_for_testing();
-
   {
-    // Wait for the `thumbnail_loader` to finish processing the request.
+    // Once the `ThumbnailLoader` has finished processing the initial request,
+    // the image should represent the file type of the *target* file for the
+    // underlying download, not its current backing file.
     base::RunLoop run_loop;
-    thumbnail_loader->SetRequestFinishedCallbackForTesting(
-        run_loop.QuitClosure());
-    run_loop.Run();
-    thumbnail_loader->SetRequestFinishedCallbackForTesting(
-        base::NullCallback());
-  }
+    auto image_skia_changed_subscription =
+        model->items()[0]->image().AddImageSkiaChangedCallback(
+            base::BindLambdaForTesting([&]() {
+              gfx::ImageSkia actual_image =
+                  model->items()[0]->image().GetImageSkia(kImageSize,
+                                                          kDarkBackground);
+              gfx::ImageSkia expected_image =
+                  GetIconForPath(current_target_path, kDarkBackground);
+              EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
+              run_loop.Quit();
+            }));
 
-  // Once the `thumbnail_loader` has finished processing the request, the image
-  // should represent the file type of the *target* file for the underlying
-  // download, not its current backing file.
-  actual_image =
-      model->items()[0]->image().GetImageSkia(kImageSize, kDarkBackground);
-  expected_image = GetIconForPath(current_target_path, kDarkBackground);
-  EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
+    // But initially the holding space image should be an empty bitmap. Note
+    // that requesting the image is what spawns the initial request.
+    gfx::ImageSkia actual_image =
+        model->items()[0]->image().GetImageSkia(kImageSize, kDarkBackground);
+    gfx::ImageSkia expected_image = image_util::CreateEmptyImage(kImageSize);
+    EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
+
+    // Wait for the `ThumbnailLoader` to finish processing the initial request.
+    run_loop.Run();
+  }
 
   // Update the total bytes for the download.
   current_total_bytes = -1;
@@ -1884,31 +1881,33 @@
   EXPECT_EQ(model->items()[0]->file_path(), current_path);
   EXPECT_EQ(model->items()[0]->progress().GetValue(), 0.5f);
 
-  // Initially the holding space image should be an empty bitmap until the
-  // `thumbnail_loader` finishes processing the request. Note that requesting
-  // the image is what spawns the initial request.
-  actual_image =
-      model->items()[0]->image().GetImageSkia(kImageSize, kDarkBackground);
-  expected_image = image_util::CreateEmptyImage(kImageSize);
-  EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
-
   {
-    // Wait for the `thumbnail_loader` to finish processing the request.
+    // Once the `ThumbnailLoader` has finished processing the request, the image
+    // should represent the file type of the *target* file for the underlying
+    // download, not its current backing file.
     base::RunLoop run_loop;
-    thumbnail_loader->SetRequestFinishedCallbackForTesting(
-        run_loop.QuitClosure());
-    run_loop.Run();
-    thumbnail_loader->SetRequestFinishedCallbackForTesting(
-        base::NullCallback());
-  }
+    auto image_skia_changed_subscription =
+        model->items()[0]->image().AddImageSkiaChangedCallback(
+            base::BindLambdaForTesting([&]() {
+              gfx::ImageSkia actual_image =
+                  model->items()[0]->image().GetImageSkia(kImageSize,
+                                                          kDarkBackground);
+              gfx::ImageSkia expected_image =
+                  GetIconForPath(current_target_path, kDarkBackground);
+              EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
+              run_loop.Quit();
+            }));
 
-  // Once the `thumbnail_loader` has finished processing the request, the image
-  // should represent the file type of the *target* file for the underlying
-  // download, not its current backing file.
-  actual_image =
-      model->items()[0]->image().GetImageSkia(kImageSize, kDarkBackground);
-  expected_image = GetIconForPath(current_target_path, kDarkBackground);
-  EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
+    // But initially the holding space image should be an empty bitmap. Note
+    // that requesting the image is what spawns the initial request.
+    gfx::ImageSkia actual_image =
+        model->items()[0]->image().GetImageSkia(kImageSize, kDarkBackground);
+    gfx::ImageSkia expected_image = image_util::CreateEmptyImage(kImageSize);
+    EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
+
+    // Wait for the `ThumbnailLoader` to finish processing the initial request.
+    run_loop.Run();
+  }
 
   // Complete the download.
   current_state = download::DownloadItem::COMPLETE;
@@ -1925,9 +1924,10 @@
   // The image should still be representative of the file type of the *target*
   // file for the underlying download which by this point is actually the same
   // file path as the backing file path.
-  actual_image =
+  gfx::ImageSkia actual_image =
       model->items()[0]->image().GetImageSkia(kImageSize, kDarkBackground);
-  expected_image = GetIconForPath(current_target_path, kDarkBackground);
+  gfx::ImageSkia expected_image =
+      GetIconForPath(current_target_path, kDarkBackground);
   EXPECT_TRUE(BitmapsAreEqual(actual_image, expected_image));
 }
 
diff --git a/chrome/browser/ui/ash/media_notification_provider_impl.cc b/chrome/browser/ui/ash/media_notification_provider_impl.cc
index 5278250..88f53574 100644
--- a/chrome/browser/ui/ash/media_notification_provider_impl.cc
+++ b/chrome/browser/ui/ash/media_notification_provider_impl.cc
@@ -87,7 +87,7 @@
     return nullptr;
 
   auto container = std::make_unique<MediaNotificationContainerImplView>(
-      id, item, service_, GlobalMediaControlsEntryPoint::kSystemTray,
+      id, item, service_, GlobalMediaControlsEntryPoint::kSystemTray, profile_,
       color_theme_);
   MediaNotificationContainerImplView* container_ptr = container.get();
   container_ptr->AddObserver(this);
@@ -136,13 +136,12 @@
 
 void MediaNotificationProviderImpl::OnUserProfileLoaded(
     const AccountId& account_id) {
-  Profile* profile =
-      chromeos::ProfileHelper::Get()->GetProfileByAccountId(account_id);
+  profile_ = chromeos::ProfileHelper::Get()->GetProfileByAccountId(account_id);
   user_manager::User* user =
-      chromeos::ProfileHelper::Get()->GetUserByProfile(profile);
+      chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
 
   if (user_manager::UserManager::Get()->GetPrimaryUser() == user) {
-    service_ = MediaNotificationServiceFactory::GetForProfile(profile);
+    service_ = MediaNotificationServiceFactory::GetForProfile(profile_);
     service_->AddObserver(this);
   }
 }
diff --git a/chrome/browser/ui/ash/media_notification_provider_impl.h b/chrome/browser/ui/ash/media_notification_provider_impl.h
index faa01002..7ddf013 100644
--- a/chrome/browser/ui/ash/media_notification_provider_impl.h
+++ b/chrome/browser/ui/ash/media_notification_provider_impl.h
@@ -16,6 +16,7 @@
 class MediaNotificationService;
 class MediaNotificationListView;
 class MediaNotificationContainerImplView;
+class Profile;
 
 class MediaNotificationProviderImpl
     : public ash::MediaNotificationProvider,
@@ -76,6 +77,8 @@
 
   MediaNotificationListView* active_session_view_ = nullptr;
 
+  Profile* profile_ = nullptr;
+
   MediaNotificationService* service_ = nullptr;
 
   std::map<const std::string, MediaNotificationContainerImplView*>
diff --git a/chrome/browser/ui/ash/thumbnail_loader.cc b/chrome/browser/ui/ash/thumbnail_loader.cc
index 43ca6a2..6c73bd5 100644
--- a/chrome/browser/ui/ash/thumbnail_loader.cc
+++ b/chrome/browser/ui/ash/thumbnail_loader.cc
@@ -212,11 +212,6 @@
                      weak_factory_.GetWeakPtr(), request, std::move(callback)));
 }
 
-void ThumbnailLoader::SetRequestFinishedCallbackForTesting(
-    base::RepeatingClosure callback) {
-  request_finished_callback_for_testing_ = std::move(callback);
-}
-
 void ThumbnailLoader::LoadForFileWithMetadata(
     const ThumbnailRequest& request,
     ImageCallback callback,
@@ -344,9 +339,6 @@
   requests_.erase(request_it);
   std::move(callback).Run(cropped_bitmap.isNull() ? bitmap : &cropped_bitmap,
                           error);
-
-  if (!request_finished_callback_for_testing_.is_null())
-    request_finished_callback_for_testing_.Run();
 }
 
 }  // namespace ash
diff --git a/chrome/browser/ui/ash/thumbnail_loader.h b/chrome/browser/ui/ash/thumbnail_loader.h
index 8420085..30e29b4 100644
--- a/chrome/browser/ui/ash/thumbnail_loader.h
+++ b/chrome/browser/ui/ash/thumbnail_loader.h
@@ -56,10 +56,6 @@
   // bitmap. On error, the bitmap will be null.
   void Load(const ThumbnailRequest& request, ImageCallback callback);
 
-  // Sets the `request_finished_callback_for_testing_` which is run whenever
-  // any request has finished, both in the case of success and failure.
-  void SetRequestFinishedCallbackForTesting(base::RepeatingClosure callback);
-
  private:
   class ThumbnailDecoder;
 
@@ -98,10 +94,6 @@
   std::map<base::UnguessableToken, std::unique_ptr<ThumbnailDecoder>>
       thumbnail_decoders_;
 
-  // An optional callback to be run whenever any request has finished, both in
-  // the case of success and failure.
-  base::RepeatingClosure request_finished_callback_for_testing_;
-
   base::WeakPtrFactory<ThumbnailLoader> weak_factory_{this};
 };
 
diff --git a/chrome/browser/ui/cocoa/window_size_autosaver.mm b/chrome/browser/ui/cocoa/window_size_autosaver.mm
index c86282bb..a0fe83e 100644
--- a/chrome/browser/ui/cocoa/window_size_autosaver.mm
+++ b/chrome/browser/ui/cocoa/window_size_autosaver.mm
@@ -87,10 +87,10 @@
       // Windows should never be very small.
       DictionaryPrefUpdate update(_prefService, _path);
       base::DictionaryValue* mutableWindowPrefs = update.Get();
-      mutableWindowPrefs->Remove("left", NULL);
-      mutableWindowPrefs->Remove("right", NULL);
-      mutableWindowPrefs->Remove("top", NULL);
-      mutableWindowPrefs->Remove("bottom", NULL);
+      mutableWindowPrefs->RemoveKey("left");
+      mutableWindowPrefs->RemoveKey("right");
+      mutableWindowPrefs->RemoveKey("top");
+      mutableWindowPrefs->RemoveKey("bottom");
     } else {
       [_window setFrame:NSMakeRect(x1, y1, x2 - x1, y2 - y1) display:YES];
 
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc
index e30e9af..ad5afa62 100644
--- a/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc
+++ b/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc
@@ -276,10 +276,18 @@
   ASSERT_TRUE(IsWindowFullscreenForTabOrPending());
 }
 
+#if (defined(OS_WIN) && !defined(NDEBUG))
+// Test is flaky on Windows 7 (dbg): https://crbug.com/1234337
+#define MAYBE_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks \
+  DISABLED_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks
+#else
+#define MAYBE_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks \
+  TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks
+#endif
 // Tests tab fullscreen exits, but browser fullscreen remains, on navigation.
 IN_PROC_BROWSER_TEST_F(
     FullscreenControllerInteractiveTest,
-    TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks) {
+    MAYBE_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
   ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service.cc b/chrome/browser/ui/global_media_controls/media_notification_service.cc
index 48107b4..dcefd4d 100644
--- a/chrome/browser/ui/global_media_controls/media_notification_service.cc
+++ b/chrome/browser/ui/global_media_controls/media_notification_service.cc
@@ -32,6 +32,16 @@
 #include "media/base/media_switches.h"
 #include "services/media_session/public/mojom/media_session.mojom.h"
 
+namespace {
+void CancelRequest(
+    std::unique_ptr<media_router::StartPresentationContext> context,
+    const std::string& message) {
+  context->InvokeErrorCallback(blink::mojom::PresentationError(
+      blink::mojom::PresentationErrorType::PRESENTATION_REQUEST_CANCELLED,
+      message));
+}
+}  // namespace
+
 MediaNotificationService::MediaNotificationService(
     Profile* profile,
     bool show_from_all_profiles) {
@@ -207,15 +217,11 @@
 
 bool MediaNotificationService::HasActiveNotificationsForWebContents(
     content::WebContents* web_contents) const {
-  bool has_cast_session =
-      !media_router::WebContentsPresentationManager::Get(web_contents)
-           ->GetMediaRoutes()
-           .empty();
   bool has_media_session =
       media_session_notification_producer_ &&
       media_session_notification_producer_
           ->HasActiveControllableSessionForWebContents(web_contents);
-  return has_cast_session || has_media_session;
+  return HasCastNotificationsForWebContents(web_contents) || has_media_session;
 }
 
 bool MediaNotificationService::HasFrozenNotifications() const {
@@ -260,13 +266,33 @@
 
 void MediaNotificationService::OnStartPresentationContextCreated(
     std::unique_ptr<media_router::StartPresentationContext> context) {
-  if (presentation_request_notification_producer_) {
+  auto* web_contents = content::WebContents::FromRenderFrameHost(
+      content::RenderFrameHost::FromID(
+          context->presentation_request().render_frame_host_id));
+  if (!web_contents) {
+    CancelRequest(std::move(context), "The web page is closed.");
+    return;
+  }
+
+  // If there exists a cast notification associated with |web_contents|,
+  // delete |context| because users should not start a new presentation at
+  // this time.
+  if (HasCastNotificationsForWebContents(web_contents)) {
+    CancelRequest(std::move(context), "A presentation has already started.");
+  } else if (media_session_notification_producer_
+                 ->HasActiveControllableSessionForWebContents(web_contents)) {
+    // If there exists a media session notification associated with
+    // |web_contents|, pass |context| to |media_session_notification_producer_|.
+    media_session_notification_producer_->OnStartPresentationContextCreated(
+        std::move(context));
+  } else if (presentation_request_notification_producer_) {
+    // If there do not exist active notifications, pass |context| to
+    // |presentation_request_notification_producer_| to create a dummy
+    // notification.
     presentation_request_notification_producer_
         ->OnStartPresentationContextCreated(std::move(context));
   } else {
-    context->InvokeErrorCallback(blink::mojom::PresentationError(
-        blink::mojom::PresentationErrorType::PRESENTATION_REQUEST_CANCELLED,
-        "Unable to start presentation."));
+    CancelRequest(std::move(context), "Unable to start presentation.");
   }
 }
 
@@ -344,3 +370,10 @@
   }
   return nullptr;
 }
+
+bool MediaNotificationService::HasCastNotificationsForWebContents(
+    content::WebContents* web_contents) const {
+  return !media_router::WebContentsPresentationManager::Get(web_contents)
+              ->GetMediaRoutes()
+              .empty();
+}
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service.h b/chrome/browser/ui/global_media_controls/media_notification_service.h
index 2d18c211..2e3fabe0 100644
--- a/chrome/browser/ui/global_media_controls/media_notification_service.h
+++ b/chrome/browser/ui/global_media_controls/media_notification_service.h
@@ -111,9 +111,6 @@
       const std::string& id,
       base::RepeatingCallback<void(bool)> callback);
 
-  void OnPresentationRequestCreated(
-      std::unique_ptr<media_router::StartPresentationContext> context);
-
   void OnStartPresentationContextCreated(
       std::unique_ptr<media_router::StartPresentationContext> context);
 
@@ -163,6 +160,10 @@
   // PresentationRequest.
   bool HasOpenDialogForPresentationRequest() const;
 
+  // True if there are cast notifications associated with |web_contents|.
+  bool HasCastNotificationsForWebContents(
+      content::WebContents* web_contents) const;
+
   MediaDialogDelegate* dialog_delegate_ = nullptr;
 
   // True if the dialog was opened by |SetDialogDelegateForWebContents()|. The
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc b/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc
index 855b2a1..cb8a253db 100644
--- a/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc
+++ b/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
+#include "base/test/mock_callback.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/unguessable_token.h"
 #include "build/build_config.h"
@@ -38,6 +39,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 using media_router::MediaRoute;
+using media_router::StartPresentationContext;
 using media_session::mojom::AudioFocusRequestState;
 using media_session::mojom::AudioFocusRequestStatePtr;
 using media_session::mojom::MediaSessionInfo;
@@ -93,45 +95,6 @@
   OverlayMediaNotificationsManager* manager_ = nullptr;
 };
 
-class MockWebContentsPresentationManager
-    : public media_router::WebContentsPresentationManager {
- public:
-  void NotifyMediaRoutesChanged(
-      const std::vector<media_router::MediaRoute>& routes) {
-    for (auto& observer : observers_) {
-      observer.OnMediaRoutesChanged(routes);
-    }
-  }
-
-  void AddObserver(media_router::WebContentsPresentationManager::Observer*
-                       observer) override {
-    observers_.AddObserver(observer);
-  }
-
-  void RemoveObserver(media_router::WebContentsPresentationManager::Observer*
-                          observer) override {
-    observers_.RemoveObserver(observer);
-  }
-
-  MOCK_CONST_METHOD0(HasDefaultPresentationRequest, bool());
-  MOCK_CONST_METHOD0(GetDefaultPresentationRequest,
-                     const content::PresentationRequest&());
-  MOCK_METHOD3(OnPresentationResponse,
-               void(const content::PresentationRequest&,
-                    media_router::mojom::RoutePresentationConnectionPtr,
-                    const media_router::RouteRequestResult&));
-  MOCK_METHOD0(GetMediaRoutes, std::vector<media_router::MediaRoute>());
-
-  base::WeakPtr<WebContentsPresentationManager> GetWeakPtr() override {
-    return weak_factory_.GetWeakPtr();
-  }
-
- private:
-  base::ObserverList<media_router::WebContentsPresentationManager::Observer>
-      observers_;
-  base::WeakPtrFactory<MockWebContentsPresentationManager> weak_factory_{this};
-};
-
 }  // anonymous namespace
 
 class MediaNotificationServiceTest : public ChromeRenderViewHostTestHarness {
@@ -434,19 +397,29 @@
     return media_route;
   }
 
+  content::PresentationRequest CreatePresentationRequest() {
+    return content::PresentationRequest(main_rfh()->GetGlobalId(),
+                                        {GURL(), GURL()},
+                                        url::Origin::Create(GURL()));
+  }
+
+  std::unique_ptr<StartPresentationContext> CreateStartPresentationContext(
+      content::PresentationRequest presentation_request,
+      StartPresentationContext::PresentationConnectionCallback success_cb =
+          base::DoNothing(),
+      StartPresentationContext::PresentationConnectionErrorCallback error_cb =
+          base::DoNothing()) {
+    return std::make_unique<StartPresentationContext>(
+        presentation_request, std::move(success_cb), std::move(error_cb));
+  }
+
   // Simulate a supplementalNotification for |web_contents()|.
   std::string SimulateSupplementalNotification() {
-    auto presentation_request = content::PresentationRequest(
-        main_rfh()->GetGlobalId(),
-        {GURL("http://example.com"), GURL("http://example2.com")},
-        url::Origin::Create(GURL("http://google.com")));
-
-    auto start_presentation_context =
-        GetStartPresentationContext(presentation_request);
+    auto presentation_request = CreatePresentationRequest();
 
     // Create a PresentationRequestNotificationItem.
     service()->OnStartPresentationContextCreated(
-        std::move(start_presentation_context));
+        CreateStartPresentationContext(presentation_request));
     auto notification_id = GetSupplementalNotification()->id();
     EXPECT_FALSE(notification_id.empty());
     auto item =
@@ -472,25 +445,12 @@
         ->presentation_request_notification_producer_->GetNotificationItem();
   }
 
-  MOCK_METHOD3(RequestSuccess,
-               void(const blink::mojom::PresentationInfo&,
-                    media_router::mojom::RoutePresentationConnectionPtr,
-                    const MediaRoute&));
-  MOCK_METHOD1(RequestError,
-               void(const blink::mojom::PresentationError& error));
-
- private:
-  std::unique_ptr<media_router::StartPresentationContext>
-  GetStartPresentationContext(
-      content::PresentationRequest presentation_request) {
-    return std::make_unique<media_router::StartPresentationContext>(
-        presentation_request,
-        base::BindOnce(&MediaNotificationServiceCastTest::RequestSuccess,
-                       base::Unretained(this)),
-        base::BindOnce(&MediaNotificationServiceCastTest::RequestError,
-                       base::Unretained(this)));
+  MockWebContentsPresentationManager* GetMockPresentationManager() {
+    return static_cast<MockWebContentsPresentationManager*>(
+        presentation_manager_.get());
   }
 
+ private:
   std::unique_ptr<MockWebContentsPresentationManager> presentation_manager_;
   base::test::ScopedFeatureList feature_list_;
 };
@@ -970,6 +930,64 @@
   testing::Mock::VerifyAndClearExpectations(&observer());
 }
 
+TEST_F(MediaNotificationServiceCastTest,
+       OnStartPresentationContextCreated_ForPresentationRequestNotifications) {
+  // If there does not exist an active notification, pass the
+  // StartPresentationContext to PresentationRequestNotificationProducer.
+  service()->OnStartPresentationContextCreated(
+      CreateStartPresentationContext(CreatePresentationRequest()));
+  auto supplemental_notification = GetSupplementalNotification();
+  EXPECT_TRUE(supplemental_notification);
+  EXPECT_FALSE(supplemental_notification->is_default_presentation_request());
+}
+
+TEST_F(MediaNotificationServiceCastTest,
+       OnStartPresentationContextCreated_ForMediaSessionNotifications) {
+  SimulatePlayingControllableMediaForWebContents(web_contents());
+  base::MockCallback<content::PresentationConnectionErrorCallback>
+      mock_error_cb;
+  auto context = CreateStartPresentationContext(
+      CreatePresentationRequest(), base::DoNothing(), mock_error_cb.Get());
+  auto* context_ptr = context.get();
+
+  // If there only exists a media session notification, pass |context| to
+  // MediaSessionNotificationProducer.
+  EXPECT_CALL(mock_error_cb, Run).Times(0);
+  service()->OnStartPresentationContextCreated(std::move(context));
+
+  // Invoke callback before |mock_error_cb| is deleted.
+  testing::Mock::VerifyAndClearExpectations(&mock_error_cb);
+  context_ptr->InvokeErrorCallback(blink::mojom::PresentationError(
+      blink::mojom::PresentationErrorType::PRESENTATION_REQUEST_CANCELLED, ""));
+}
+
+TEST_F(MediaNotificationServiceCastTest,
+       OnStartPresentationContextCreated_ForCastNotifications) {
+  auto media_route = CreateMediaRoute("route_id");
+  SetMediaRoutesManagedByPresentationManager({media_route});
+
+  // If there exists cast notifications, |context| will not be passed to any
+  // notification producer and its error callback should be evoked.
+  base::MockCallback<content::PresentationConnectionErrorCallback>
+      mock_error_cb;
+  EXPECT_CALL(mock_error_cb, Run);
+  service()->OnStartPresentationContextCreated(CreateStartPresentationContext(
+      CreatePresentationRequest(), base::DoNothing(), mock_error_cb.Get()));
+}
+
+TEST_F(MediaNotificationServiceCastTest,
+       OnStartPresentationContextCreated_ForRemovedWebContents) {
+  // If the StartPresentationContext is from a WebContents that has been
+  // removed, its error callback should be evoked.
+  base::MockCallback<content::PresentationConnectionErrorCallback>
+      mock_error_cb;
+  auto context = CreateStartPresentationContext(
+      CreatePresentationRequest(), base::DoNothing(), mock_error_cb.Get());
+  EXPECT_CALL(mock_error_cb, Run);
+  DeleteContents();
+  service()->OnStartPresentationContextCreated(std::move(context));
+}
+
 // Regression test for https://crbug.com/1015903: we could end up in a
 // situation where the toolbar icon was disabled indefinitely.
 TEST_F(MediaNotificationServiceTest, LoseGainLoseDoesNotCauseRaceCondition) {
diff --git a/chrome/browser/ui/global_media_controls/media_session_notification_producer.cc b/chrome/browser/ui/global_media_controls/media_session_notification_producer.cc
index 2eac128..ff843e6 100644
--- a/chrome/browser/ui/global_media_controls/media_session_notification_producer.cc
+++ b/chrome/browser/ui/global_media_controls/media_session_notification_producer.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/ui/global_media_controls/media_notification_device_provider_impl.h"
 #include "chrome/browser/ui/global_media_controls/media_notification_service.h"
 #include "chrome/browser/ui/media_router/media_router_ui.h"
+#include "components/media_router/browser/presentation/start_presentation_context.h"
 #include "components/ukm/content/source_url_recorder.h"
 #include "content/public/browser/audio_service.h"
 #include "content/public/browser/media_session.h"
@@ -254,6 +255,12 @@
       std::move(callback));
 }
 
+void MediaSessionNotificationProducer::OnStartPresentationContextCreated(
+    std::unique_ptr<media_router::StartPresentationContext> context) {
+  DCHECK(context);
+  context_ = std::move(context);
+}
+
 void MediaSessionNotificationProducer::Session::
     SetPresentationManagerForTesting(
         base::WeakPtr<media_router::WebContentsPresentationManager>
@@ -585,13 +592,16 @@
 MediaSessionNotificationProducer::CreateCastDialogControllerForSession(
     const std::string& session_id) {
   auto it = sessions_.find(session_id);
-  if (it != sessions_.end()) {
-    auto ui = std::make_unique<media_router::MediaRouterUI>(
-        it->second.web_contents());
+  if (it == sessions_.end())
+    return nullptr;
+  auto ui =
+      std::make_unique<media_router::MediaRouterUI>(it->second.web_contents());
+  if (context_) {
+    ui->InitWithStartPresentationContext(std::move(context_));
+  } else {
     ui->InitWithDefaultMediaSource();
-    return ui;
   }
-  return nullptr;
+  return ui;
 }
 
 bool MediaSessionNotificationProducer::
diff --git a/chrome/browser/ui/global_media_controls/media_session_notification_producer.h b/chrome/browser/ui/global_media_controls/media_session_notification_producer.h
index cee3750..a9666b1 100644
--- a/chrome/browser/ui/global_media_controls/media_session_notification_producer.h
+++ b/chrome/browser/ui/global_media_controls/media_session_notification_producer.h
@@ -25,6 +25,7 @@
 
 namespace media_router {
 class CastDialogController;
+class StartPresentationContext;
 }  // namespace media_router
 
 class MediaNotificationContainerImpl;
@@ -108,6 +109,9 @@
       const std::string& id,
       base::RepeatingCallback<void(bool)> callback);
 
+  void OnStartPresentationContextCreated(
+      std::unique_ptr<media_router::StartPresentationContext> context);
+
   void set_device_provider_for_testing(
       std::unique_ptr<MediaNotificationDeviceProvider> device_provider);
 
@@ -288,6 +292,8 @@
 
   std::unique_ptr<MediaNotificationDeviceProvider> device_provider_;
 
+  // Used to initialize a MediaRouterUI.
+  std::unique_ptr<media_router::StartPresentationContext> context_;
   base::WeakPtrFactory<MediaSessionNotificationProducer> weak_ptr_factory_{
       this};
 };
diff --git a/chrome/browser/ui/global_media_controls/presentation_request_notification_producer_unittest.cc b/chrome/browser/ui/global_media_controls/presentation_request_notification_producer_unittest.cc
index d7f28b6..867f5a91 100644
--- a/chrome/browser/ui/global_media_controls/presentation_request_notification_producer_unittest.cc
+++ b/chrome/browser/ui/global_media_controls/presentation_request_notification_producer_unittest.cc
@@ -28,43 +28,7 @@
 using testing::NiceMock;
 
 namespace {
-class MockWebContentsPresentationManager
-    : public media_router::WebContentsPresentationManager {
- public:
-  bool HasDefaultPresentationRequest() const override {
-    return default_presentation_request_.has_value();
-  }
 
-  const content::PresentationRequest& GetDefaultPresentationRequest()
-      const override {
-    return *default_presentation_request_;
-  }
-
-  void SetDefaultPresentationRequest(
-      const content::PresentationRequest& request) {
-    default_presentation_request_ = request;
-  }
-
-  MOCK_METHOD1(
-      AddObserver,
-      void(media_router::WebContentsPresentationManager::Observer* observer));
-  MOCK_METHOD1(
-      RemoveObserver,
-      void(media_router::WebContentsPresentationManager::Observer* observer));
-  MOCK_METHOD3(OnPresentationResponse,
-               void(const content::PresentationRequest&,
-                    media_router::mojom::RoutePresentationConnectionPtr,
-                    const media_router::RouteRequestResult&));
-  MOCK_METHOD0(GetMediaRoutes, std::vector<media_router::MediaRoute>());
-
-  base::WeakPtr<WebContentsPresentationManager> GetWeakPtr() override {
-    return weak_factory_.GetWeakPtr();
-  }
-
- private:
-  absl::optional<content::PresentationRequest> default_presentation_request_;
-  base::WeakPtrFactory<MockWebContentsPresentationManager> weak_factory_{this};
-};
 
 media_router::MediaRoute CreateMediaRoute(
     media_router::MediaRoute::Id route_id) {
diff --git a/chrome/browser/ui/global_media_controls/test_helper.cc b/chrome/browser/ui/global_media_controls/test_helper.cc
index 5511c01..4a1ae5e 100644
--- a/chrome/browser/ui/global_media_controls/test_helper.cc
+++ b/chrome/browser/ui/global_media_controls/test_helper.cc
@@ -59,3 +59,44 @@
 MockMediaItemsManager::MockMediaItemsManager() = default;
 
 MockMediaItemsManager::~MockMediaItemsManager() = default;
+
+MockWebContentsPresentationManager::MockWebContentsPresentationManager() =
+    default;
+MockWebContentsPresentationManager::~MockWebContentsPresentationManager() =
+    default;
+
+bool MockWebContentsPresentationManager::HasDefaultPresentationRequest() const {
+  return default_presentation_request_.has_value();
+}
+
+const content::PresentationRequest&
+MockWebContentsPresentationManager::GetDefaultPresentationRequest() const {
+  return *default_presentation_request_;
+}
+
+void MockWebContentsPresentationManager::SetDefaultPresentationRequest(
+    const content::PresentationRequest& request) {
+  default_presentation_request_ = request;
+}
+
+void MockWebContentsPresentationManager::NotifyMediaRoutesChanged(
+    const std::vector<media_router::MediaRoute>& routes) {
+  for (auto& observer : observers_) {
+    observer.OnMediaRoutesChanged(routes);
+  }
+}
+
+void MockWebContentsPresentationManager::AddObserver(
+    media_router::WebContentsPresentationManager::Observer* observer) {
+  observers_.AddObserver(observer);
+}
+
+void MockWebContentsPresentationManager::RemoveObserver(
+    media_router::WebContentsPresentationManager::Observer* observer) {
+  observers_.RemoveObserver(observer);
+}
+
+base::WeakPtr<WebContentsPresentationManager>
+MockWebContentsPresentationManager::GetWeakPtr() {
+  return weak_factory_.GetWeakPtr();
+}
diff --git a/chrome/browser/ui/global_media_controls/test_helper.h b/chrome/browser/ui/global_media_controls/test_helper.h
index e34e4b1..a7e9ec3 100644
--- a/chrome/browser/ui/global_media_controls/test_helper.h
+++ b/chrome/browser/ui/global_media_controls/test_helper.h
@@ -8,6 +8,8 @@
 #include "chrome/browser/ui/global_media_controls/media_dialog_delegate.h"
 #include "chrome/browser/ui/global_media_controls/media_items_manager.h"
 #include "components/media_message_center/media_notification_item.h"
+#include "components/media_router/browser/presentation/web_contents_presentation_manager.h"
+#include "content/public/browser/presentation_request.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 namespace content {
@@ -16,6 +18,7 @@
 class MediaNotificationService;
 
 using media_message_center::MediaNotificationView;
+using media_router::WebContentsPresentationManager;
 
 class MockMediaNotificationItem
     : public media_message_center::MediaNotificationItem {
@@ -52,12 +55,13 @@
                                          gfx::Rect bounds));
 
   // MediaDialogDelegate implementation.
-  MOCK_METHOD2(
+  MOCK_METHOD(
+      MediaNotificationContainerImpl*,
       ShowMediaSession,
-      MediaNotificationContainerImpl*(
-          const std::string& id,
-          base::WeakPtr<media_message_center::MediaNotificationItem> item));
-  MOCK_METHOD1(HideMediaSession, void(const std::string& id));
+      (const std::string& id,
+       base::WeakPtr<media_message_center::MediaNotificationItem> item));
+  MOCK_METHOD(void, HideMediaSession, (const std::string& id));
+
   std::unique_ptr<OverlayMediaNotification> PopOut(const std::string& id,
                                                    gfx::Rect bounds) override;
   void HideMediaDialog() override;
@@ -77,4 +81,37 @@
   MOCK_METHOD(void, HideItem, (const std::string&));
 };
 
+class MockWebContentsPresentationManager
+    : public WebContentsPresentationManager {
+ public:
+  MockWebContentsPresentationManager();
+  ~MockWebContentsPresentationManager() override;
+
+  void NotifyMediaRoutesChanged(
+      const std::vector<media_router::MediaRoute>& routes);
+  void SetDefaultPresentationRequest(
+      const content::PresentationRequest& request);
+
+  // WebContentsPresentationManager implementation.
+  bool HasDefaultPresentationRequest() const override;
+  const content::PresentationRequest& GetDefaultPresentationRequest()
+      const override;
+  void AddObserver(WebContentsPresentationManager::Observer* observer) override;
+  void RemoveObserver(
+      WebContentsPresentationManager::Observer* observer) override;
+  base::WeakPtr<WebContentsPresentationManager> GetWeakPtr() override;
+
+  MOCK_METHOD(void,
+              OnPresentationResponse,
+              (const content::PresentationRequest&,
+               media_router::mojom::RoutePresentationConnectionPtr,
+               const media_router::RouteRequestResult&));
+  MOCK_METHOD(std::vector<media_router::MediaRoute>, GetMediaRoutes, ());
+
+ private:
+  absl::optional<content::PresentationRequest> default_presentation_request_;
+  base::ObserverList<WebContentsPresentationManager::Observer> observers_;
+  base::WeakPtrFactory<MockWebContentsPresentationManager> weak_factory_{this};
+};
+
 #endif  // CHROME_BROWSER_UI_GLOBAL_MEDIA_CONTROLS_TEST_HELPER_H_
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
index 0aba6d6..ef806dd 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -536,8 +536,8 @@
       std::make_unique<password_manager::PostSaveCompromisedHelper>(
           passwords_data_.form_manager()->GetInsecureCredentials(), username);
   post_save_compromised_helper_->AnalyzeLeakedCredentials(
-      passwords_data_.client()->GetProfilePasswordStore(),
-      passwords_data_.client()->GetAccountPasswordStore(),
+      passwords_data_.client()->GetProfilePasswordStoreInterface(),
+      passwords_data_.client()->GetAccountPasswordStoreInterface(),
       Profile::FromBrowserContext(web_contents()->GetBrowserContext())
           ->GetPrefs(),
       base::BindOnce(
@@ -556,7 +556,7 @@
     const std::vector<password_manager::PasswordForm>& selected_credentials) {
   auto profile_store_form_saver =
       std::make_unique<password_manager::FormSaverImpl>(
-          passwords_data_.client()->GetProfilePasswordStore());
+          passwords_data_.client()->GetProfilePasswordStoreInterface());
   for (const password_manager::PasswordForm& form : selected_credentials) {
     // Only newly-saved or newly-updated credentials can be unsynced. Since
     // conflicts are solved in that process, any entry in the profile store
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
index bce78b6a..3e783522 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
@@ -27,7 +27,7 @@
 #include "chrome/browser/ui/passwords/passwords_model_delegate.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "components/password_manager/core/browser/mock_password_form_manager_for_ui.h"
-#include "components/password_manager/core/browser/mock_password_store.h"
+#include "components/password_manager/core/browser/mock_password_store_interface.h"
 #include "components/password_manager/core/browser/password_bubble_experiment.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_form_metrics_recorder.h"
@@ -51,7 +51,7 @@
 
 using password_manager::InsecureCredential;
 using password_manager::MockPasswordFormManagerForUI;
-using password_manager::MockPasswordStore;
+using password_manager::MockPasswordStoreInterface;
 using password_manager::PasswordForm;
 using ReauthSucceeded =
     password_manager::PasswordManagerClient::ReauthSucceeded;
@@ -114,11 +114,10 @@
 class TestPasswordManagerClient
     : public password_manager::StubPasswordManagerClient {
  public:
-  TestPasswordManagerClient() : mock_profile_store_(new MockPasswordStore()) {
-    mock_profile_store_->Init(nullptr);
-  }
+  TestPasswordManagerClient()
+      : mock_profile_store_(new MockPasswordStoreInterface()) {}
+
   ~TestPasswordManagerClient() override {
-    mock_profile_store_->ShutdownOnUIThread();
   }
 
   MOCK_METHOD(void,
@@ -127,12 +126,13 @@
                base::OnceCallback<void(ReauthSucceeded)>),
               (override));
 
-  MockPasswordStore* GetProfilePasswordStore() const override {
+  MockPasswordStoreInterface* GetProfilePasswordStoreInterface()
+      const override {
     return mock_profile_store_.get();
   }
 
  private:
-  scoped_refptr<MockPasswordStore> mock_profile_store_;
+  scoped_refptr<MockPasswordStoreInterface> mock_profile_store_;
 };
 
 // This subclass is used to disable some code paths which are not essential for
@@ -1465,7 +1465,8 @@
       BuildFormFromLoginAndURL("user2", "password2", "http://b.com")};
 
   // Set expectations on the store.
-  MockPasswordStore* profile_store = client().GetProfilePasswordStore();
+  MockPasswordStoreInterface* profile_store =
+      client().GetProfilePasswordStoreInterface();
   EXPECT_CALL(*profile_store,
               AddLogin(MatchesLoginAndURL(credentials[0].username_value,
                                           credentials[0].password_value,
@@ -1493,7 +1494,8 @@
   controller()->NotifyUnsyncedCredentialsWillBeDeleted(std::move(credentials));
 
   // No save should happen on the profile store.
-  MockPasswordStore* profile_store = client().GetProfilePasswordStore();
+  MockPasswordStoreInterface* profile_store =
+      client().GetProfilePasswordStoreInterface();
   EXPECT_CALL(*profile_store, AddLogin).Times(0);
 
   // Discard.
@@ -1553,7 +1555,8 @@
       .WillOnce(Return(saved));
   password_manager::PasswordStoreConsumer* post_save_helper = nullptr;
 
-  EXPECT_CALL(*client().GetProfilePasswordStore(), GetAutofillableLogins)
+  EXPECT_CALL(*client().GetProfilePasswordStoreInterface(),
+              GetAutofillableLogins)
       .WillOnce(testing::WithArg<0>([&post_save_helper](auto* consumer) {
         post_save_helper = consumer;
       }));
@@ -1596,7 +1599,8 @@
 
   password_manager::PasswordStoreConsumer* post_save_helper = nullptr;
 
-  EXPECT_CALL(*client().GetProfilePasswordStore(), GetAutofillableLogins)
+  EXPECT_CALL(*client().GetProfilePasswordStoreInterface(),
+              GetAutofillableLogins)
       .WillOnce(testing::WithArg<0>([&post_save_helper](auto* consumer) {
         post_save_helper = consumer;
       }));
@@ -1647,12 +1651,6 @@
   controller()->SavePassword(submitted_form().username_value,
                              submitted_form().password_value);
   // The sign-in promo bubble stays open, the warning isn't shown.
-  // There are insecure credentials to fix.
-  saved[0].username = u"another username";
-  EXPECT_CALL(*client().GetProfilePasswordStore(),
-              GetAllInsecureCredentialsImpl)
-      .Times(testing::AtMost(1))
-      .WillOnce(Return(saved));
   WaitForPasswordStore();
 
   ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE);
diff --git a/chrome/browser/ui/views/global_media_controls/media_dialog_view.cc b/chrome/browser/ui/views/global_media_controls/media_dialog_view.cc
index 14266ffb..73a4b11 100644
--- a/chrome/browser/ui/views/global_media_controls/media_dialog_view.cc
+++ b/chrome/browser/ui/views/global_media_controls/media_dialog_view.cc
@@ -114,7 +114,7 @@
     const std::string& id,
     base::WeakPtr<media_message_center::MediaNotificationItem> item) {
   auto container = std::make_unique<MediaNotificationContainerImplView>(
-      id, item, service_, entry_point_);
+      id, item, service_, entry_point_, profile_);
   MediaNotificationContainerImplView* container_ptr = container.get();
   container_ptr->AddObserver(this);
   observed_containers_[id] = container_ptr;
diff --git a/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.cc b/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.cc
index 6ab73d9..a87083a 100644
--- a/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.cc
+++ b/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.cc
@@ -102,6 +102,7 @@
     base::WeakPtr<media_message_center::MediaNotificationItem> item,
     MediaNotificationService* service,
     GlobalMediaControlsEntryPoint entry_point,
+    Profile* profile,
     absl::optional<media_message_center::NotificationTheme> theme)
     : views::Button(base::BindRepeating(
           [](MediaNotificationContainerImplView* view) {
@@ -116,7 +117,8 @@
       background_color_(kDefaultBackgroundColor),
       service_(service),
       is_cros_(theme.has_value()),
-      entry_point_(entry_point) {
+      entry_point_(entry_point),
+      profile_(profile) {
   DCHECK(item);
   SetLayoutManager(std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kVertical));
@@ -195,17 +197,18 @@
     SetPreferredSize(kNormalSize);
   }
   view_ = swipeable_container_->AddChildView(std::move(view));
-
-  // Show a stop cast button for cast notifications.
-  if (is_cast_notification &&
+  bool gmc_cast_start_stop_enabled =
       media_router::GlobalMediaControlsCastStartStopEnabled() &&
+      media_router::MediaRouterEnabled(profile_);
+  // Show a stop cast button for cast notifications.
+  if (is_cast_notification && gmc_cast_start_stop_enabled &&
       !base::FeatureList::IsEnabled(media::kGlobalMediaControlsModernUI)) {
     AddStopCastButton(cast_item);
   }
 
   // Show a device selector view for media and supplemental notifications.
   if (!is_cast_notification &&
-      (media_router::GlobalMediaControlsCastStartStopEnabled() ||
+      (gmc_cast_start_stop_enabled ||
        base::FeatureList::IsEnabled(
            media::kGlobalMediaControlsSeamlessTransfer))) {
     AddDeviceSelectorView(
@@ -549,7 +552,8 @@
     bool is_local_media_session,
     bool show_expand_button) {
   std::unique_ptr<media_router::CastDialogController> cast_controller;
-  if (media_router::GlobalMediaControlsCastStartStopEnabled()) {
+  if (media_router::GlobalMediaControlsCastStartStopEnabled() &&
+      media_router::MediaRouterEnabled(profile_)) {
     cast_controller =
         is_local_media_session
             ? service_->CreateCastDialogControllerForSession(id_)
diff --git a/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.h b/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.h
index 3e55331c..32da6c0 100644
--- a/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.h
+++ b/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view.h
@@ -37,6 +37,7 @@
 class MediaNotificationContainerObserver;
 class MediaNotificationFooterView;
 class MediaNotificationService;
+class Profile;
 
 // MediaNotificationContainerImplView holds a media notification for display
 // within the MediaDialogView. The media notification shows metadata for a media
@@ -56,6 +57,7 @@
       base::WeakPtr<media_message_center::MediaNotificationItem> item,
       MediaNotificationService* service,
       GlobalMediaControlsEntryPoint entry_point,
+      Profile* profile,
       absl::optional<media_message_center::NotificationTheme> theme =
           absl::nullopt);
   MediaNotificationContainerImplView(
@@ -227,6 +229,7 @@
 
   const bool is_cros_;
   const GlobalMediaControlsEntryPoint entry_point_;
+  Profile* const profile_;
 };
 
 #endif  // CHROME_BROWSER_UI_VIEWS_GLOBAL_MEDIA_CONTROLS_MEDIA_NOTIFICATION_CONTAINER_IMPL_VIEW_H_
diff --git a/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view_unittest.cc b/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view_unittest.cc
index 49a3167..88d75a3b 100644
--- a/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view_unittest.cc
+++ b/chrome/browser/ui/views/global_media_controls/media_notification_container_impl_view_unittest.cc
@@ -101,7 +101,7 @@
     item_ = std::make_unique<NiceMock<MockMediaNotificationItem>>();
     SetUpCommon(std::make_unique<MediaNotificationContainerImplView>(
         kTestNotificationId, item_->GetWeakPtr(), nullptr,
-        GlobalMediaControlsEntryPoint::kToolbarIcon));
+        GlobalMediaControlsEntryPoint::kToolbarIcon, nullptr));
   }
 
   void SetUpCommon(std::unique_ptr<MediaNotificationContainerImplView>
@@ -362,7 +362,7 @@
 
     SetUpCommon(std::make_unique<MediaNotificationContainerImplView>(
         kTestNotificationId, item_->GetWeakPtr(), nullptr,
-        GlobalMediaControlsEntryPoint::kToolbarIcon));
+        GlobalMediaControlsEntryPoint::kToolbarIcon, profile()));
   }
 
   void TearDown() override {
@@ -487,7 +487,7 @@
 TEST_F(MediaNotificationContainerImplViewTest, SendsDestroyedUpdates) {
   auto container = std::make_unique<MediaNotificationContainerImplView>(
       kOtherTestNotificationId, notification_item(), nullptr,
-      GlobalMediaControlsEntryPoint::kToolbarIcon);
+      GlobalMediaControlsEntryPoint::kToolbarIcon, nullptr);
   MockMediaNotificationContainerObserver observer;
   container->AddObserver(&observer);
 
@@ -518,7 +518,7 @@
 TEST_F(MediaNotificationContainerImplViewTest, MetadataTest) {
   auto container_view = std::make_unique<MediaNotificationContainerImplView>(
       kOtherTestNotificationId, notification_item(), nullptr,
-      GlobalMediaControlsEntryPoint::kToolbarIcon);
+      GlobalMediaControlsEntryPoint::kToolbarIcon, nullptr);
   views::test::TestViewMetadata(container_view.get());
 }
 
diff --git a/chrome/browser/ui/views/global_media_controls/media_notification_list_view_unittest.cc b/chrome/browser/ui/views/global_media_controls/media_notification_list_view_unittest.cc
index 38aa2eb..8d4a678 100644
--- a/chrome/browser/ui/views/global_media_controls/media_notification_list_view_unittest.cc
+++ b/chrome/browser/ui/views/global_media_controls/media_notification_list_view_unittest.cc
@@ -52,7 +52,7 @@
     list_view_->ShowNotification(
         id, std::make_unique<MediaNotificationContainerImplView>(
                 id, item_->GetWeakPtr(), nullptr,
-                GlobalMediaControlsEntryPoint::kToolbarIcon));
+                GlobalMediaControlsEntryPoint::kToolbarIcon, nullptr));
   }
 
   void HideNotification(const std::string& id) {
diff --git a/chrome/browser/ui/views/global_media_controls/overlay_media_notification_view_unittest.cc b/chrome/browser/ui/views/global_media_controls/overlay_media_notification_view_unittest.cc
index ac863ae8..f3a00095 100644
--- a/chrome/browser/ui/views/global_media_controls/overlay_media_notification_view_unittest.cc
+++ b/chrome/browser/ui/views/global_media_controls/overlay_media_notification_view_unittest.cc
@@ -44,7 +44,7 @@
 
     auto notification = std::make_unique<MediaNotificationContainerImplView>(
         kTestNotificationId, item_->GetWeakPtr(), nullptr,
-        GlobalMediaControlsEntryPoint::kToolbarIcon);
+        GlobalMediaControlsEntryPoint::kToolbarIcon, nullptr);
     notification->PopOut();
 
     overlay_ = std::make_unique<OverlayMediaNotificationView>(
diff --git a/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view.cc b/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view.cc
index f478dc5a..b473787 100644
--- a/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view.cc
+++ b/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/notreached.h"
 #include "chrome/browser/platform_util.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
@@ -173,7 +174,7 @@
       // action_taken_ may be set. Otherwise, keep default of kNoAction.
       break;
     case ClosedReason::kAcceptButtonClicked:
-      action_taken_ = AccuracyTipUI::Interaction::kLearnMorePressed;
+      action_taken_ = AccuracyTipUI::Interaction::kLearnMore;
       break;
     case ClosedReason::kEscKeyPressed:
     case ClosedReason::kCloseButtonClicked:
@@ -189,7 +190,7 @@
 
 void AccuracyTipBubbleView::OpenHelpCenter() {
   // TODO(crbug.com/1210891): Add link to the right info page.
-  action_taken_ = AccuracyTipUI::Interaction::kLearnMorePressed;
+  action_taken_ = AccuracyTipUI::Interaction::kLearnMore;
   web_contents()->OpenURL(content::OpenURLParams(
       GURL(accuracy_tips::features::kLearnMoreUrl.Get().empty()
                ? chrome::kSafetyTipHelpCenterURL
@@ -199,7 +200,7 @@
 }
 
 void AccuracyTipBubbleView::OnDontShowAgainClicked() {
-  action_taken_ = AccuracyTipUI::Interaction::kOptOutPressed;
+  action_taken_ = AccuracyTipUI::Interaction::kOptOut;
   GetWidget()->Close();
 }
 
diff --git a/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view_browsertest.cc b/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view_browsertest.cc
index 07c49359..e3176aed1 100644
--- a/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/page_info/accuracy_tip_bubble_view_browsertest.cc
@@ -139,7 +139,7 @@
 
   histogram_tester()->ExpectUniqueSample(
       "Privacy.AccuracyTip.AccuracyTipInteraction",
-      AccuracyTipUI::Interaction::kOptOutPressed, 1);
+      AccuracyTipUI::Interaction::kOptOut, 1);
 }
 
 IN_PROC_BROWSER_TEST_F(AccuracyTipBubbleViewBrowserTest, DisappearOnNavigate) {
@@ -174,7 +174,7 @@
 
   histogram_tester()->ExpectUniqueSample(
       "Privacy.AccuracyTip.AccuracyTipInteraction",
-      AccuracyTipUI::Interaction::kLearnMorePressed, 1);
+      AccuracyTipUI::Interaction::kLearnMore, 1);
 }
 
 // Render test for accuracy tip ui.
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_utils.cc b/chrome/browser/ui/views/toolbar/chrome_labs_utils.cc
index 7ea5fe8..a10c3dd 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_utils.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_utils.cc
@@ -79,5 +79,5 @@
   }
 
   for (const std::string& key : entries_to_remove)
-    new_badge_prefs->Remove(key, nullptr);
+    new_badge_prefs->RemoveKey(key);
 }
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc
index c4ec6946..b3cd3291 100644
--- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc
+++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc
@@ -11,27 +11,6 @@
 
 namespace web_app {
 
-namespace {
-
-const char kTestCaseFileName[] = "web_app_integration_browsertest_cases.csv";
-
-// Returns the path of the requested file in the test data directory.
-base::FilePath GetTestFileDir() {
-  base::FilePath file_path;
-  base::PathService::Get(base::DIR_SOURCE_ROOT, &file_path);
-  file_path = file_path.Append(FILE_PATH_LITERAL("chrome"));
-  file_path = file_path.Append(FILE_PATH_LITERAL("test"));
-  file_path = file_path.Append(FILE_PATH_LITERAL("data"));
-  return file_path.Append(FILE_PATH_LITERAL("web_apps"));
-}
-
-std::vector<std::string> BuildAllPlatformTestCaseSet() {
-  return WebAppIntegrationBrowserTestBase::BuildAllPlatformTestCaseSet(
-      GetTestFileDir(), kTestCaseFileName);
-}
-
-}  // anonymous namespace
-
 class WebAppIntegrationBrowserTest
     : public InProcessBrowserTest,
       public WebAppIntegrationBrowserTestBase::TestDelegate,
@@ -47,24 +26,25 @@
 
   // BrowserTestBase
   void SetUpOnMainThread() override { helper_.SetUpOnMainThread(); }
+  void TearDownOnMainThread() override { helper_.TearDownOnMainThread(); }
 
   void SetUpCommandLine(base::CommandLine* command_line) override {
     ASSERT_TRUE(embedded_test_server()->Start());
     command_line->AppendSwitchASCII(
         network::switches::kUnsafelyTreatInsecureOriginAsSecure,
-        helper_.GetInstallableAppURL("site_a").GetOrigin().spec());
+        helper_.GetInstallableAppURL("SiteA").GetOrigin().spec());
     command_line->AppendSwitchASCII(
         network::switches::kUnsafelyTreatInsecureOriginAsSecure,
-        helper_.GetInstallableAppURL("site_b").GetOrigin().spec());
+        helper_.GetInstallableAppURL("SiteB").GetOrigin().spec());
     command_line->AppendSwitchASCII(
         network::switches::kUnsafelyTreatInsecureOriginAsSecure,
-        helper_.GetInstallableAppURL("site_c").GetOrigin().spec());
+        helper_.GetInstallableAppURL("SiteC").GetOrigin().spec());
     command_line->AppendSwitchASCII(
         network::switches::kUnsafelyTreatInsecureOriginAsSecure,
-        helper_.GetInstallableAppURL("site_a_foo").GetOrigin().spec());
+        helper_.GetInstallableAppURL("SiteAFoo").GetOrigin().spec());
     command_line->AppendSwitchASCII(
         network::switches::kUnsafelyTreatInsecureOriginAsSecure,
-        helper_.GetInstallableAppURL("site_a_bar").GetOrigin().spec());
+        helper_.GetInstallableAppURL("SiteABar").GetOrigin().spec());
   }
 
   // WebAppIntegrationBrowserTestBase::TestDelegate
@@ -86,479 +66,926 @@
 
   bool IsSyncTest() override { return false; }
 
-  bool UserSigninInternal() override {
-    NOTREACHED();
-    return false;
-  }
-  void TurnSyncOff() override { NOTREACHED(); }
-  void TurnSyncOn() override { NOTREACHED(); }
+  void SyncTurnOff() override { NOTREACHED(); }
+  void SyncTurnOn() override { NOTREACHED(); }
 
   WebAppIntegrationBrowserTestBase helper_;
 };
 
-// This test is a part of the web app integration test suite, which is
-// documented in //chrome/browser/ui/views/web_apps/README.md. For information
-// about diagnosing, debugging and/or disabling tests, please look to the
-// README file.
-IN_PROC_BROWSER_TEST_P(WebAppIntegrationBrowserTest, Default) {
-  helper_.ParseParams(GetParam());
-  // Since this test framework differs from traditional browser tests, print
-  // some useful information for sheriffs and developers to help identify,
-  // diagnose, and disable failing tests.
-  LOG(INFO) << helper_.BuildLogForTest(helper_.testing_actions(), IsSyncTest());
-
-  for (auto& action : helper_.testing_actions()) {
-    helper_.ExecuteAction(action);
-  }
-  helper_.ResetRegistrarObserver();
-}
-
-INSTANTIATE_TEST_SUITE_P(All,
-                         WebAppIntegrationBrowserTest,
-                         testing::ValuesIn(BuildAllPlatformTestCaseSet()));
-
-// TODO(jarrydg@chromium.org): Remove the macro disabling the following tests
-// when they can compile. https://crbug.com/1215791
+// TODO(jarrydg@): Fix the following test failure/crash.
 #if false
-namespace {
-
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstOmniboxSiteA_WindowCreated_InstPlcyTabShctSiteA_NavSiteA_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  InstallPolicyAppTabbedShortcut("SiteA");
-  NavigateBrowser("SiteA");
-  CheckLaunchIconShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstOmniboxSiteA_WindowCreated_InstPlcyTabShctSiteA_UninstallPlcySiteA) {
+    WebAppIntegration_InstOmniboxSiteA_WindowCreated_InstPlcyTabShctSiteA_UninstallPlcySiteA)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  InstallPolicyAppTabbedShortcut("SiteA");
-  UninstallPolicyApp("SiteA");
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstOmniboxSiteA_WindowCreated_NavSiteA_InstIconNotShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  NavigateBrowser("SiteA");
-  CheckInstallIconNotShown();
-  CheckLaunchIconShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstOmniboxSiteA_WindowCreated_ClosePWA_MnfstUpdateDsplMinimalSiteA) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  ClosePwa();
-  ManifestUpdateDisplayMinimal("SiteA");
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.ClosePwa();
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.ManifestUpdateDisplayMinimal("SiteA");
+  helper_.AfterStateChangeAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstOmniboxSiteA_WindowCreated_SetOpenTabSiteA_NavSiteA_InstIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  SetOpenInTab("SiteA");
-  NavigateBrowser("SiteA");
-  CheckInstallIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SetOpenInTab("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstOmniboxSiteA_WindowCreated_NavSiteAFoo_InstIconNotShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  NavigateBrowser("SiteAFoo");
-  CheckInstallIconNotShown();
-  CheckLaunchIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteAFoo");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstOmniboxSiteA_WindowCreated_InstPlcyWinShctSiteA_UninstallPlcySiteA) {
+    WebAppIntegration_InstOmniboxSiteA_WindowCreated_InstPlcyWinShctSiteA_UninstallPlcySiteA)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  InstallPolicyAppWindowedShortcut("SiteA");
-  UninstallPolicyApp("SiteA");
-}
+  helper_.BeforeStateCheckAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateCheckAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_InstPlcyTabShctSiteA_NavSiteA_LaunchIconShown) {
+    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_InstPlcyTabShctSiteA_NavSiteA_LaunchIconShown)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  InstallPolicyAppTabbedShortcut("SiteA");
-  NavigateBrowser("SiteA");
-  CheckLaunchIconShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_InstPlcyTabShctSiteA_UninstallPlcySiteA) {
+    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_InstPlcyTabShctSiteA_UninstallPlcySiteA)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  InstallPolicyAppTabbedShortcut("SiteA");
-  UninstallPolicyApp("SiteA");
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_NavSiteA_InstIconNotShown_LaunchIconShown) {
+    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_NavSiteA_InstIconNotShown_LaunchIconShown)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  NavigateBrowser("SiteA");
-  CheckInstallIconNotShown();
-  CheckLaunchIconShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_ClosePWA_MnfstUpdateDsplMinimalSiteA) {
+    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_ClosePWA_MnfstUpdateDsplMinimalSiteA)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  ClosePwa();
-  ManifestUpdateDisplayMinimal("SiteA");
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.ClosePwa();
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.ManifestUpdateDisplayMinimal("SiteA");
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_SetOpenTabSiteA_NavSiteA_InstIconShown) {
+    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_SetOpenTabSiteA_NavSiteA_InstIconShown)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  SetOpenInTab("SiteA");
-  NavigateBrowser("SiteA");
-  CheckInstallIconShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SetOpenInTab("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_NavSiteAFoo_InstIconNotShown_LaunchIconShown) {
+  WebAppIntegration_InstMenuOptionSiteA_WindowCreated_NavSiteAFoo_InstIconNotShown_LaunchIconShown)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  NavigateBrowser("SiteAFoo");
-  CheckInstallIconNotShown();
-  CheckLaunchIconShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
-    WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_InstPlcyWinShctSiteA_UninstallPlcySiteA) {
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteAFoo");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
+  WebAppIntegrationBrowserTest,
+  WebAppIntegration_InstMenuOptionSiteA_WindowCreated_InstPlcyWinShctSiteA_UninstallPlcySiteA)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  InstallPolicyAppWindowedShortcut("SiteA");
-  UninstallPolicyApp("SiteA");
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteA");
+  helper_.BeforeStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyWinShctSiteA_UninstallPlcySiteA_NotInListSiteA) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppWindowedShortcut("SiteA");
-  UninstallPolicyApp("SiteA");
-  CheckAppNotInList("SiteA");
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppNotInList("SiteA");
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyWinShctSiteA_NavSiteA_InstIconNotShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppWindowedShortcut("SiteA");
-  NavigateBrowser("SiteA");
-  CheckInstallIconNotShown();
-  CheckLaunchIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(WebAppIntegrationBrowserTest,
-                     WebAppIntegration_InstPlcyWinShctSiteA_SetOpenTabSiteA) {
+IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest,
+                       WebAppIntegration_InstPlcyWinShctSiteA_SetOpenTabSiteA) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppWindowedShortcut("SiteA");
-  SetOpenInTab("SiteA");
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SetOpenInTab("SiteA");
+  helper_.AfterStateChangeAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyWinShctSiteA_NavSiteAFoo_InstIconNotShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppWindowedShortcut("SiteA");
-  NavigateBrowser("SiteAFoo");
-  CheckInstallIconNotShown();
-  CheckLaunchIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteAFoo");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyTabShctSiteA_UninstallPlcySiteA_NotInListSiteA_NavSiteA_InstIconShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppTabbedShortcut("SiteA");
-  UninstallPolicyApp("SiteA");
-  CheckAppNotInList("SiteA");
-  NavigateBrowser("SiteA");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppNotInList("SiteA");
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstPlcyTabShctSiteA_InstOmniboxSiteA_WindowCreated_UninstallPlcySiteA) {
+    WebAppIntegration_InstPlcyTabShctSiteA_InstOmniboxSiteA_WindowCreated_UninstallPlcySiteA)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppTabbedShortcut("SiteA");
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  UninstallPolicyApp("SiteA");
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstPlcyTabShctSiteA_InstMenuOptionSiteA_WindowCreated_UninstallPlcySiteA) {
+    WebAppIntegration_InstPlcyTabShctSiteA_InstMenuOptionSiteA_WindowCreated_UninstallPlcySiteA)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppTabbedShortcut("SiteA");
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  UninstallPolicyApp("SiteA");
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.UninstallPolicyApp("SiteA");
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyTabShctSiteA_NavSiteA_InstIconShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppTabbedShortcut("SiteA");
-  NavigateBrowser("SiteA");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyTabShctSiteA_SetOpenWindowSiteA) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppTabbedShortcut("SiteA");
-  SetOpenInWindow("SiteA");
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.SetOpenInWindow("SiteA");
+  helper_.AfterStateChangeAction();
 }
 
-IN_PROC_BROWSER_TEST(
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstPlcyTabShctSiteC_NavSiteC_InstIconNotShown_LaunchIconShown) {
+    WebAppIntegration_InstPlcyTabShctSiteC_NavSiteC_InstIconNotShown_LaunchIconShown)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppTabbedShortcut("SiteC");
-  NavigateBrowser("SiteC");
-  CheckInstallIconNotShown();
-  CheckLaunchIconNotShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppTabbedShortcut("SiteC");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteC");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyWinShctSiteC_NavSiteC_InstIconNotShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppWindowedShortcut("SiteC");
-  NavigateBrowser("SiteC");
-  CheckInstallIconNotShown();
-  CheckLaunchIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteC");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteC");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(WebAppIntegrationBrowserTest,
-                     WebAppIntegration_InstOmniboxSiteAFoo_ClosePWA) {
+IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest,
+                       WebAppIntegration_InstOmniboxSiteAFoo_ClosePWA) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteAFoo");
-  ClosePwa();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteAFoo");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.ClosePwa();
+  helper_.AfterStateChangeAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstOmniboxSiteAFoo_NavSiteABar_InstIconShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteAFoo");
-  NavigateBrowser("SiteABar");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteAFoo");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteABar");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(WebAppIntegrationBrowserTest,
-                     WebAppIntegration_InstMenuOptionSiteAFoo_ClosePWA) {
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest,
+                       WebAppIntegration_InstMenuOptionSiteAFoo_ClosePWA) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteAFoo");
-  ClosePwa();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteAFoo");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateChangeAction();
+  helper_.ClosePwa();
+  helper_.AfterStateChangeAction();
+}
+#endif
+
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
-    WebAppIntegration_InstMenuOptionSiteAFoo_NavSiteABar_InstIconShown_LaunchIconShown) {
+    WebAppIntegration_InstMenuOptionSiteAFoo_NavSiteABar_InstIconShown_LaunchIconShown)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteAFoo");
-  NavigateBrowser("SiteABar");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteAFoo");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSER_TEST(
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteABar");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_InstPlcyWinShctSiteAFoo_NavSiteABar_InstIconShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppWindowedShortcut("SiteAFoo");
-  NavigateBrowser("SiteABar");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteAFoo");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteABar");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(WebAppIntegrationBrowserTest,
-                     WebAppIntegration_NavSiteAFoo_InstIconShown) {
+IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest,
+                       WebAppIntegration_NavSiteAFoo_InstIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  NavigateBrowser("SiteAFoo");
-  CheckInstallIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteAFoo");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(WebAppIntegrationBrowserTest,
-                     WebAppIntegration_NavSiteA_NotInListSiteA) {
+IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest,
+                       WebAppIntegration_NavSiteA_NotInListSiteA) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  NavigateBrowser("SiteA");
-  CheckAppNotInList("SiteA");
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppNotInList("SiteA");
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSER_TEST(
+IN_PROC_BROWSER_TEST_F(
     WebAppIntegrationBrowserTest,
     WebAppIntegration_NavSiteC_NotInListSiteA_InstIconNotShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  NavigateBrowser("SiteC");
-  CheckAppNotInList("SiteA");
-  CheckInstallIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteC");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckAppNotInList("SiteA");
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSERTEST_F(WebAppIntegrationBrowserTest, WebAppIntegration_InstOmniboxSiteA_WindowCreated_NavSiteB_InstIconShown_LaunchIconShown){
+IN_PROC_BROWSER_TEST_F(
+    WebAppIntegrationBrowserTest,
+    WebAppIntegration_InstOmniboxSiteA_WindowCreated_NavSiteB_InstIconShown_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteA");
-  CheckWindowCreated();
-  NavigateBrowser("SiteB");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteA");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteB");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSERTEST_F(WebAppIntegrationBrowserTest, WebAppIntegration_InstMenuOptionSiteA_WindowCreated_NavSiteB_InstIconShown_LaunchIconShown){
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(
+    WebAppIntegrationBrowserTest,
+    WebAppIntegration_InstMenuOptionSiteA_WindowCreated_NavSiteB_InstIconShown_LaunchIconShown)
+{
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteA");
-  CheckWindowCreated();
-  NavigateBrowser("SiteB");
-  CheckInstallIconShown();
-  CheckLaunchIconNotShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteA");
+  helper_.AfterStateChangeAction();
 
-IN_PROC_BROWSERTEST_F(WebAppIntegrationBrowserTest, WebAppIntegration_InstOmniboxSiteB_NavSiteB_LaunchIconShown){
+  helper_.BeforeStateCheckAction();
+  helper_.CheckWindowCreated();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteB");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckInstallIconShown();
+  helper_.AfterStateCheckAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconNotShown();
+  helper_.AfterStateCheckAction();
+}
+#endif
+
+IN_PROC_BROWSER_TEST_F(
+    WebAppIntegrationBrowserTest,
+    WebAppIntegration_InstOmniboxSiteB_NavSiteB_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallOmniboxIcon("SiteB");
-  NavigateBrowser("SiteB");
-  CheckLaunchIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallOmniboxIcon("SiteB");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteB");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSERTEST_F(WebAppIntegrationBrowserTest, WebAppIntegration_InstPlcyWinShctSiteB_NavSiteB_LaunchIconShown){
+IN_PROC_BROWSER_TEST_F(
+    WebAppIntegrationBrowserTest,
+    WebAppIntegration_InstPlcyWinShctSiteB_NavSiteB_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallPolicyAppWindowedShortcut("SiteB");
-  NavigateBrowser("SiteB");
-  CheckLaunchIconShown();
+  helper_.BeforeStateChangeAction();
+  helper_.InstallPolicyAppWindowedShortcut("SiteB");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteB");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
 }
 
-IN_PROC_BROWSERTEST_F(WebAppIntegrationBrowserTest, WebAppIntegration_InstMenuOptionSiteB_NavSiteB_LaunchIconShown){
+// TODO(jarrydg@): Fix the following test failure/crash.
+#if false
+IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest,
+                       WebAppIntegration_InstMenuOptionSiteB_NavSiteB_LaunchIconShown) {
   // Test contents are generated by script. Please do not modify!
   // See `chrome/test/webapps/README.md` for more info.
   // Sheriffs: Disabling this test is supported.
-  InstallMenuOption("SiteB");
-  NavigateBrowser("SiteB");
-  CheckLaunchIconShown();
-}
+  helper_.BeforeStateChangeAction();
+  helper_.InstallMenuOption("SiteB");
+  helper_.AfterStateChangeAction();
 
-}  // namespace
+  helper_.BeforeStateChangeAction();
+  helper_.NavigateBrowser("SiteB");
+  helper_.AfterStateChangeAction();
+
+  helper_.BeforeStateCheckAction();
+  helper_.CheckLaunchIconShown();
+  helper_.AfterStateCheckAction();
+}
 #endif
 
 }  // namespace web_app
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.cc
index 64dfaa9..8db0604 100644
--- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.cc
+++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.cc
@@ -58,7 +58,6 @@
 
 namespace {
 
-constexpr char kExpectationsFilename[] = "TestExpectations";
 constexpr char kPlatformName[] =
 #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
     "ChromeOS";
@@ -74,11 +73,12 @@
 #error "Unknown platform"
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
-// Command-line switch that overrides test case input. Takes a comma
-// separated list of testing actions. This aids in development of tests
-// by allowing one to run a single test at a time, and avoid running every
-// test case in the suite.
-const char kWebAppIntegrationTestCase[] = "web-app-integration-test-case";
+const base::flat_map<std::string, std::string> scope_to_path = {
+    {"SiteA", "site_a"},
+    {"SiteB", "site_b"},
+    {"SiteC", "site_c"},
+    {"SiteAFoo", "site_a/foo"},
+    {"SiteABar", "site_a/bar"}};
 
 class TestAppLauncherHandler : public AppLauncherHandler {
  public:
@@ -92,29 +92,6 @@
   }
 };
 
-bool IsStateCheckAction(const std::string& action) {
-  return base::StartsWith(action, "check_");
-}
-
-std::string GetCommandLineTestOverride() {
-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(kWebAppIntegrationTestCase)) {
-    return command_line->GetSwitchValueASCII(kWebAppIntegrationTestCase);
-  }
-  return "";
-}
-
-std::string StripAllWhitespace(std::string line) {
-  std::string output;
-  output.reserve(line.size());
-  for (const char& c : line) {
-    if (!isspace(c)) {
-      output += c;
-    }
-  }
-  return output;
-}
-
 }  // anonymous namespace
 
 BrowserState::BrowserState(
@@ -201,14 +178,14 @@
 absl::optional<AppState> WebAppIntegrationBrowserTestBase::GetAppByScope(
     StateSnapshot* state_snapshot,
     Profile* profile,
-    const std::string& action_param) {
+    const std::string& action_mode) {
   absl::optional<ProfileState> profile_state =
       GetStateForProfile(state_snapshot, profile);
   if (!profile_state) {
     return absl::nullopt;
   }
 
-  GURL scope = GetURLForScope(action_param);
+  GURL scope = GetURLForScope(action_mode);
   auto it =
       std::find_if(profile_state->apps.begin(), profile_state->apps.end(),
                    [scope](std::pair<web_app::AppId, AppState>& app_entry) {
@@ -287,262 +264,47 @@
 void WebAppIntegrationBrowserTestBase::SetUpOnMainThread() {
   os_hooks_suppress_ = OsIntegrationManager::ScopedSuppressOsHooksForTesting();
   if (!delegate_->IsSyncTest()) {
+    observation_.Reset();
     observation_.Observe(&GetProvider()->registrar());
   }
 }
 
-std::vector<std::string>
-WebAppIntegrationBrowserTestBase::BuildAllPlatformTestCaseSet(
-    base::FilePath test_data_dir,
-    const std::string& test_case_file_name) {
-  std::vector<std::string> test_cases_all =
-      ReadTestInputFile(test_data_dir, test_case_file_name);
-  std::sort(test_cases_all.begin(), test_cases_all.end());
+void WebAppIntegrationBrowserTestBase::TearDownOnMainThread() {
+  observation_.Reset();
+}
 
-  std::vector<std::string> ignored_cases =
-      GetPlatformIgnoredTests(test_data_dir, kExpectationsFilename);
-  std::sort(ignored_cases.begin(), ignored_cases.end());
+void WebAppIntegrationBrowserTestBase::BeforeStateChangeAction() {
+  if (after_state_change_action_state_) {
+    before_state_change_action_state_ =
+        std::move(after_state_change_action_state_);
+  } else {
+    before_state_change_action_state_ =
+        std::make_unique<StateSnapshot>(ConstructStateSnapshot());
+  }
+}
 
-  std::vector<std::string> final_tests(test_cases_all.size());
-  auto iter = std::set_difference(test_cases_all.begin(), test_cases_all.end(),
-                                  ignored_cases.begin(), ignored_cases.end(),
-                                  final_tests.begin());
-  final_tests.resize(iter - final_tests.begin());
-  return final_tests;
+void WebAppIntegrationBrowserTestBase::AfterStateChangeAction() {
+  after_state_change_action_state_ =
+      std::make_unique<StateSnapshot>(ConstructStateSnapshot());
+  MaybeWaitForManifestUpdates(profile());
+}
+
+void WebAppIntegrationBrowserTestBase::BeforeStateCheckAction() {
+  DCHECK(after_state_change_action_state_);
+}
+
+void WebAppIntegrationBrowserTestBase::AfterStateCheckAction() {
+  DCHECK(!after_state_change_action_state_ ||
+         *after_state_change_action_state_ == ConstructStateSnapshot());
 }
 
 // State change actions implemented before state check actions. Implemented in
 // alphabetical order.
-void WebAppIntegrationBrowserTestBase::ExecuteAction(
-    const std::string& action_string) {
-  // Useful for sheriffs and developers in test failures since this test
-  // framework differs from that of traditional browser tests.
-  LOG(INFO) << base::StringPrintf("Current testing action: %s",
-                                  action_string.c_str());
-
-  std::string action_param;
-  RE2::PartialMatch(action_string, "(site_(a_foo|a_bar|a|b|c))", &action_param);
-  if (base::EndsWith(action_param, "_foo")) {
-    action_param = "site_a/foo";
-  } else if (base::EndsWith(action_param, "_bar")) {
-    action_param = "site_a/bar";
-  }
-  // Add 1 to `param_length` if a param is present to strip the preceding
-  // underscore.
-  const int param_length =
-      action_param.length() ? action_param.length() + 1 : 0;
-  std::string action_base =
-      action_string.substr(0, action_string.length() - param_length);
-
-  if (!IsStateCheckAction(action_base)) {
-    before_state_change_action_state_ =
-        std::move(after_state_change_action_state_);
-  }
-
-  if (action_base == "add_policy_app_internal_tabbed") {
-    AddPolicyAppInternal(action_param,
-                         base::Value(kDefaultLaunchContainerTabValue),
-                         /*create_shortcut=*/true);
-  } else if (action_base == "add_policy_app_internal_tabbed_no_shortcut") {
-    AddPolicyAppInternal(action_param,
-                         base::Value(kDefaultLaunchContainerTabValue),
-                         /*create_shortcut=*/false);
-  } else if (action_base == "add_policy_app_internal_windowed") {
-    AddPolicyAppInternal(action_param,
-                         base::Value(kDefaultLaunchContainerWindowValue),
-                         /*create_shortcut=*/true);
-  } else if (action_base == "add_policy_app_internal_windowed_no_shortcut") {
-    AddPolicyAppInternal(action_param,
-                         base::Value(kDefaultLaunchContainerWindowValue),
-                         /*create_shortcut=*/false);
-  } else if (action_base == "close_pwa") {
-    ClosePWA();
-  } else if (action_base == "install_create_shortcut_tabbed") {
-    InstallCreateShortcut(/*open_in_window=*/false);
-  } else if (action_base == "install_create_shortcut_windowed") {
-    InstallCreateShortcut(/*open_in_window=*/true);
-  } else if (action_base == "install_internal_windowed") {
-    InstallOmnibox();
-  } else if (action_base == "install_locally_internal") {
-    InstallLocally();
-  } else if (action_base == "install_omnibox") {
-    InstallOmnibox();
-  } else if (action_base == "launch_internal") {
-    LaunchInternal(action_param);
-  } else if (action_base == "list_apps_internal") {
-    ListAppsInternal();
-  } else if (action_base == "manifest_update_display_minimal") {
-    ManifestUpdateDisplay(action_param, blink::mojom::DisplayMode::kMinimalUi);
-  } else if (action_base == "navigate_browser_in_scope") {
-    NavigateTabbedBrowserToSite(GetInScopeURL(action_param));
-  } else if (action_base == "navigate_installable") {
-    NavigateTabbedBrowserToSite(GetInstallableAppURL(action_param));
-  } else if (action_base == "navigate_not_installable") {
-    NavigateTabbedBrowserToSite(GetNonInstallableAppURL());
-  } else if (action_base == "set_open_in_tab_internal") {
-    SetOpenInTabInternal(action_param);
-  } else if (action_base == "set_open_in_window_internal") {
-    SetOpenInWindowInternal(action_param);
-  } else if (action_base == "switch_profile_clients") {
-    SwitchProfileClients();
-  } else if (action_base == "sync_turned_off") {
-    TurnSyncOff();
-  } else if (action_base == "sync_turned_on") {
-    TurnSyncOn();
-  } else if (action_base == "uninstall_from_menu") {
-    UninstallFromMenu();
-  } else if (action_base == "uninstall_internal") {
-    UninstallInternal(action_param);
-  } else if (action_base == "uninstall_policy_app") {
-    UninstallPolicyApp(action_param.length() ? action_param : "site_a");
-  } else if (action_base == "user_signin_internal") {
-    UserSigninInternal();
-  } else if (action_base == "check_app_locally_installed_internal") {
-    CheckAppLocallyInstalledInternal();
-  } else if (action_base == "check_app_not_in_list") {
-    CheckAppNotInList(action_param);
-  } else if (action_base == "check_app_not_locally_installed_internal") {
-    CheckAppNotLocallyInstalledInternal();
-  } else if (action_base == "check_installable") {
-    CheckInstallable();
-  } else if (action_base == "check_install_icon_shown") {
-    CheckInstallIconShown();
-  } else if (action_base == "check_install_icon_not_shown") {
-    CheckInstallIconNotShown();
-  } else if (action_base == "check_launch_icon_shown") {
-    CheckLaunchIconShown();
-  } else if (action_base == "check_launch_icon_not_shown") {
-    CheckLaunchIconNotShown();
-  } else if (action_base == "check_manifest_display_mode_browser_internal") {
-    CheckManifestDisplayModeInternal(DisplayMode::kBrowser);
-  } else if (action_base == "check_manifest_display_mode_minimal_internal") {
-    CheckManifestDisplayModeInternal(DisplayMode::kMinimalUi);
-  } else if (action_base == "check_manifest_display_mode_standalone_internal") {
-    CheckManifestDisplayModeInternal(DisplayMode::kStandalone);
-  } else if (action_base == "check_no_crash") {
-  } else if (action_base == "check_tab_created") {
-    CheckTabCreated();
-  } else if (action_base == "check_user_display_mode_browser_internal") {
-    CheckUserDisplayModeInternal(DisplayMode::kBrowser);
-  } else if (action_base == "check_user_display_mode_standalone_internal") {
-    CheckUserDisplayModeInternal(DisplayMode::kStandalone);
-  } else if (action_base == "check_no_crash") {
-  } else if (action_base == "check_tab_created") {
-    CheckTabCreated();
-  } else if (action_base == "check_window_closed") {
-    CheckWindowClosed();
-  } else if (action_base == "check_window_created") {
-    CheckWindowCreated();
-  } else if (action_string == "check_window_display_minimal") {
-    CheckWindowDisplayMode(blink::mojom::DisplayMode::kMinimalUi);
-  } else if (action_string == "check_window_display_standalone") {
-    CheckWindowDisplayMode(blink::mojom::DisplayMode::kStandalone);
-  } else {
-    FAIL() << "Unimplemented action: " << action_base;
-  }
-
-  if (IsStateCheckAction(action_base)) {
-    DCHECK(!after_state_change_action_state_ ||
-           *after_state_change_action_state_ == ConstructStateSnapshot());
-  } else {
-    after_state_change_action_state_ =
-        std::make_unique<StateSnapshot>(ConstructStateSnapshot());
-    MaybeWaitForManifestUpdates(profile());
-  }
-}
-
-std::vector<std::string>
-WebAppIntegrationBrowserTestBase::GetPlatformIgnoredTests(
-    base::FilePath test_data_dir,
-    const std::string& file_name) {
-  base::FilePath file = GetTestFilePath(test_data_dir, file_name);
-  std::string contents;
-  std::vector<std::string> platform_expectations;
-  if (!base::ReadFileToString(file, &contents)) {
-    return platform_expectations;
-  }
-
-  std::vector<std::string> file_lines = base::SplitString(
-      contents, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-  for (const auto& line : file_lines) {
-    if (line[0] == '#') {
-      continue;
-    }
-
-    std::string platform;
-    std::string expectation;
-    std::string test_case;
-    RE2::FullMatch(
-        line, "crbug.com/\\d* \\[ (\\w*) \\] \\[ (\\w*) \\] ([\\w*,\\s*]*)",
-        &platform, &expectation, &test_case);
-    if (platform == kPlatformName) {
-      if (expectation == "Skip") {
-        platform_expectations.push_back(StripAllWhitespace(test_case));
-      } else {
-        NOTREACHED() << "Unsupported expectation " << expectation;
-      }
-    }
-  }
-  return platform_expectations;
-}
-
-base::FilePath WebAppIntegrationBrowserTestBase::GetTestFilePath(
-    base::FilePath test_data_dir,
-    const std::string& file_name) {
-  return test_data_dir.AppendASCII(file_name);
-}
-
-void WebAppIntegrationBrowserTestBase::ParseParams(std::string action_strings) {
-  // Useful for debugging since all tests are run in a single parameterized
-  // test.
-  testing_actions_ = base::SplitString(
-      action_strings, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-}
-
-std::vector<std::string> WebAppIntegrationBrowserTestBase::ReadTestInputFile(
-    base::FilePath test_data_dir,
-    const std::string& file_name) {
-  std::vector<std::string> test_cases;
-  std::string command_line_test_case = GetCommandLineTestOverride();
-  if (!command_line_test_case.empty()) {
-    test_cases.push_back(StripAllWhitespace(command_line_test_case));
-    return test_cases;
-  }
-
-  base::FilePath file = GetTestFilePath(test_data_dir, file_name);
-  std::string contents;
-  if (!base::ReadFileToString(file, &contents)) {
-    return test_cases;
-  }
-
-  std::vector<std::string> file_lines = base::SplitString(
-      contents, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-  for (const auto& line : file_lines) {
-    if (line[0] == '#') {
-      continue;
-    }
-
-    if (line.find('|') == std::string::npos) {
-      test_cases.push_back(StripAllWhitespace(line));
-      continue;
-    }
-
-    std::vector<std::string> platforms_and_test = base::SplitString(
-        line, "|", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-    if (platforms_and_test[0].find(kPlatformName) != std::string::npos) {
-      test_cases.push_back(StripAllWhitespace(platforms_and_test[1]));
-    }
-  }
-
-  return test_cases;
-}
-
-// State Change Actions
-void WebAppIntegrationBrowserTestBase::AddPolicyAppInternal(
-    const std::string& action_param,
+void WebAppIntegrationBrowserTestBase::InstallPolicyAppInternal(
+    const std::string& action_mode,
     base::Value default_launch_container,
     const bool create_shortcut) {
-  GURL url = GetInstallableAppURL(action_param);
+  GURL url = GetInstallableAppURL(action_mode);
   auto* web_app_registrar =
       WebAppProvider::Get(profile())->registrar().AsWebAppRegistrar();
   base::RunLoop run_loop;
@@ -570,19 +332,33 @@
   run_loop.Run();
 }
 
-void WebAppIntegrationBrowserTestBase::ClosePWA() {
+void WebAppIntegrationBrowserTestBase::ClosePwa() {
   DCHECK(app_browser_);
   app_browser_->window()->Close();
   ui_test_utils::WaitForBrowserToClose(app_browser_);
 }
 
-void WebAppIntegrationBrowserTestBase::InstallCreateShortcut(
-    bool open_in_window) {
+void WebAppIntegrationBrowserTestBase::InstallCreateShortcutTabbed(
+    const std::string& action_scope) {
+  MaybeNavigateTabbedBrowserInScope(action_scope);
+  InstallCreateShortcut(/*open_in_window=*/false);
+}
+
+void WebAppIntegrationBrowserTestBase::InstallCreateShortcutWindowed(
+    const std::string& action_scope) {
+  MaybeNavigateTabbedBrowserInScope(action_scope);
+  InstallCreateShortcut(/*open_in_window=*/true);
+}
+
+void WebAppIntegrationBrowserTestBase::InstallMenuOption(
+    const std::string& action_scope) {
+  MaybeNavigateTabbedBrowserInScope(action_scope);
   chrome::SetAutoAcceptWebAppDialogForTesting(
       /*auto_accept=*/true,
-      /*auto_open_in_window=*/open_in_window);
+      /*auto_open_in_window=*/true);
+  chrome::SetAutoAcceptPWAInstallConfirmationForTesting(/*auto_accept=*/true);
   WebAppInstallObserver observer(profile());
-  CHECK(chrome::ExecuteCommand(browser(), IDC_CREATE_SHORTCUT));
+  CHECK(chrome::ExecuteCommand(browser(), IDC_INSTALL_PWA));
   active_app_id_ = observer.AwaitNextInstall();
   chrome::SetAutoAcceptWebAppDialogForTesting(false, false);
 }
@@ -608,7 +384,9 @@
   run_loop.Run();
 }
 
-web_app::AppId WebAppIntegrationBrowserTestBase::InstallOmnibox() {
+void WebAppIntegrationBrowserTestBase::InstallOmniboxIcon(
+    const std::string& action_scope) {
+  MaybeNavigateTabbedBrowserInScope(action_scope);
   chrome::SetAutoAcceptPWAInstallConfirmationForTesting(true);
 
   web_app::AppId app_id;
@@ -620,7 +398,7 @@
         run_loop.Quit();
       }));
 
-  DCHECK(pwa_install_view()->GetVisible());
+  ASSERT_TRUE(pwa_install_view()->GetVisible());
   pwa_install_view()->ExecuteForTesting();
 
   run_loop.Run();
@@ -630,16 +408,42 @@
   auto* browser_list = BrowserList::GetInstance();
   app_browser_ = browser_list->GetLastActive();
   DCHECK(AppBrowserController::IsWebApp(app_browser_));
+}
 
-  return app_id;
+void WebAppIntegrationBrowserTestBase::InstallPolicyAppTabbedNoShortcut(
+    const std::string& action_mode) {
+  InstallPolicyAppInternal(action_mode,
+                           base::Value(kDefaultLaunchContainerTabValue),
+                           /*create_shortcut=*/false);
+}
+
+void WebAppIntegrationBrowserTestBase::InstallPolicyAppTabbedShortcut(
+    const std::string& action_mode) {
+  InstallPolicyAppInternal(action_mode,
+                           base::Value(kDefaultLaunchContainerTabValue),
+                           /*create_shortcut=*/true);
+}
+
+void WebAppIntegrationBrowserTestBase::InstallPolicyAppWindowedNoShortcut(
+    const std::string& action_mode) {
+  InstallPolicyAppInternal(action_mode,
+                           base::Value(kDefaultLaunchContainerWindowValue),
+                           /*create_shortcut=*/false);
+}
+
+void WebAppIntegrationBrowserTestBase::InstallPolicyAppWindowedShortcut(
+    const std::string& action_mode) {
+  InstallPolicyAppInternal(action_mode,
+                           base::Value(kDefaultLaunchContainerWindowValue),
+                           /*create_shortcut=*/true);
 }
 
 void WebAppIntegrationBrowserTestBase::LaunchInternal(
-    const std::string& action_param) {
+    const std::string& action_mode) {
   absl::optional<AppState> app_state = GetAppByScope(
-      before_state_change_action_state_.get(), profile(), action_param);
+      before_state_change_action_state_.get(), profile(), action_mode);
   ASSERT_TRUE(app_state.has_value())
-      << "No app installed for scope: " << action_param;
+      << "No app installed for scope: " << action_mode;
   auto app_id = app_state->id;
   auto* web_app_provider = GetProvider();
   WebAppRegistrar& app_registrar = web_app_provider->registrar();
@@ -672,12 +476,17 @@
   app_banner_manager->WaitForInstallableCheck();
 }
 
-void WebAppIntegrationBrowserTestBase::SetOpenInTabInternal(
-    const std::string& action_param) {
+void WebAppIntegrationBrowserTestBase::NavigateBrowser(
+    const std::string& scope) {
+  NavigateTabbedBrowserToSite(GetInScopeURL(scope));
+}
+
+void WebAppIntegrationBrowserTestBase::SetOpenInTab(
+    const std::string& action_mode) {
   absl::optional<AppState> app_state = GetAppByScope(
-      before_state_change_action_state_.get(), profile(), action_param);
+      before_state_change_action_state_.get(), profile(), action_mode);
   ASSERT_TRUE(app_state.has_value())
-      << "No app installed for scope: " << action_param;
+      << "No app installed for scope: " << action_mode;
   auto app_id = app_state->id;
   auto& app_registry_controller =
       WebAppProvider::Get(profile())->registry_controller();
@@ -685,12 +494,12 @@
       app_id, blink::mojom::DisplayMode::kBrowser, true);
 }
 
-void WebAppIntegrationBrowserTestBase::SetOpenInWindowInternal(
-    const std::string& action_param) {
+void WebAppIntegrationBrowserTestBase::SetOpenInWindow(
+    const std::string& action_mode) {
   absl::optional<AppState> app_state = GetAppByScope(
-      before_state_change_action_state_.get(), profile(), action_param);
+      before_state_change_action_state_.get(), profile(), action_mode);
   ASSERT_TRUE(app_state.has_value())
-      << "No app installed for scope: " << action_param;
+      << "No app installed for scope: " << action_mode;
   auto app_id = app_state->id;
   auto& app_registry_controller =
       WebAppProvider::Get(profile())->registry_controller();
@@ -714,12 +523,12 @@
       active_profile_, /*match_original_profiles=*/false);
 }
 
-void WebAppIntegrationBrowserTestBase::TurnSyncOff() {
-  delegate_->TurnSyncOff();
+void WebAppIntegrationBrowserTestBase::SyncTurnOff() {
+  delegate_->SyncTurnOff();
 }
 
-void WebAppIntegrationBrowserTestBase::TurnSyncOn() {
-  delegate_->TurnSyncOn();
+void WebAppIntegrationBrowserTestBase::SyncTurnOn() {
+  delegate_->SyncTurnOn();
 }
 
 // TODO(https://crbug.com/1159651): Support this action on CrOS.
@@ -756,35 +565,17 @@
   run_loop.Run();
 }
 
-void WebAppIntegrationBrowserTestBase::UninstallInternal(
-    const std::string& action_param) {
-  absl::optional<AppState> app_state = GetAppByScope(
-      before_state_change_action_state_.get(), profile(), action_param);
-  ASSERT_TRUE(app_state.has_value())
-      << "No app installed for scope: " << action_param;
-  auto app_id = app_state->id;
-  WebAppProvider* const provider = WebAppProvider::Get(profile());
-  base::RunLoop run_loop;
-
-  DCHECK(provider->install_finalizer().CanUserUninstallWebApp(app_id));
-  provider->install_finalizer().UninstallWebApp(
-      app_id, webapps::WebappUninstallSource::kAppMenu,
-      base::BindLambdaForTesting([&](bool uninstalled) {
-        EXPECT_TRUE(uninstalled);
-        run_loop.Quit();
-      }));
-
-  run_loop.Run();
-}
-
 void WebAppIntegrationBrowserTestBase::UninstallPolicyApp(
-    const std::string& action_param) {
-  GURL url = GetInstallableAppURL(action_param);
+    const std::string& action_mode) {
+  GURL url = GetInstallableAppURL(action_mode);
+  auto policy_app = GetAppByScope(before_state_change_action_state_.get(),
+                                  profile(), action_mode);
+  DCHECK(policy_app);
   base::RunLoop run_loop;
   WebAppInstallObserver observer(profile());
   observer.SetWebAppUninstalledDelegate(
       base::BindLambdaForTesting([&](const AppId& app_id) {
-        if (active_app_id_ == app_id) {
+        if (policy_app->id == app_id) {
           run_loop.Quit();
         }
       }));
@@ -801,47 +592,39 @@
   run_loop.Run();
 }
 
-void WebAppIntegrationBrowserTestBase::ManifestUpdateDisplay(
-    const std::string& action_scope,
-    DisplayMode display_mode) {
+void WebAppIntegrationBrowserTestBase::ManifestUpdateDisplayMinimal(
+    const std::string& action_scope) {
   // TODO(jarrydg): Create a map of supported manifest updates keyed on scope.
-  ASSERT_EQ("site_a", action_scope);
-  ASSERT_EQ(blink::mojom::DisplayMode::kMinimalUi, display_mode);
-  ForceUpdateManifestContents(action_scope,
-                              GetAppURLForManifest(action_scope, display_mode));
-}
-
-void WebAppIntegrationBrowserTestBase::UserSigninInternal() {
-  delegate_->UserSigninInternal();
+  ASSERT_EQ("SiteA", action_scope);
+  ForceUpdateManifestContents(
+      action_scope, GetAppURLForManifest(
+                        action_scope, blink::mojom::DisplayMode::kMinimalUi));
 }
 
 // State Check Actions
 void WebAppIntegrationBrowserTestBase::CheckAppLocallyInstalledInternal() {
-  DCHECK(after_state_change_action_state_);
   absl::optional<AppState> app_state = GetStateForAppId(
       after_state_change_action_state_.get(), profile(), active_app_id_);
   ASSERT_TRUE(app_state.has_value());
   EXPECT_TRUE(app_state->is_installed_locally);
 }
 
-void WebAppIntegrationBrowserTestBase::CheckAppNotLocallyInstalledInternal() {
-  DCHECK(after_state_change_action_state_);
-  absl::optional<AppState> app_state = GetStateForAppId(
-      after_state_change_action_state_.get(), profile(), active_app_id_);
+void WebAppIntegrationBrowserTestBase::CheckAppInListNotLocallyInstalled(
+    const std::string& action_mode) {
+  absl::optional<AppState> app_state = GetAppByScope(
+      after_state_change_action_state_.get(), profile(), action_mode);
   ASSERT_TRUE(app_state.has_value());
   EXPECT_FALSE(app_state->is_installed_locally);
 }
 
 void WebAppIntegrationBrowserTestBase::CheckAppNotInList(
-    const std::string& action_param) {
-  DCHECK(after_state_change_action_state_);
+    const std::string& action_mode) {
   absl::optional<AppState> app_state = GetAppByScope(
-      after_state_change_action_state_.get(), profile(), action_param);
+      after_state_change_action_state_.get(), profile(), action_mode);
   EXPECT_FALSE(app_state.has_value());
 }
 
 void WebAppIntegrationBrowserTestBase::CheckInstallable() {
-  DCHECK(after_state_change_action_state_);
   absl::optional<BrowserState> browser_state = GetStateForBrowser(
       after_state_change_action_state_.get(), profile(), browser());
   ASSERT_TRUE(browser_state.has_value());
@@ -852,7 +635,6 @@
 }
 
 void WebAppIntegrationBrowserTestBase::CheckInstallIconShown() {
-  DCHECK(after_state_change_action_state_);
   absl::optional<BrowserState> browser_state = GetStateForBrowser(
       after_state_change_action_state_.get(), profile(), browser());
   ASSERT_TRUE(browser_state.has_value());
@@ -869,7 +651,6 @@
 }
 
 void WebAppIntegrationBrowserTestBase::CheckLaunchIconShown() {
-  DCHECK(after_state_change_action_state_);
   absl::optional<BrowserState> browser_state = GetStateForBrowser(
       after_state_change_action_state_.get(), profile(), browser());
   ASSERT_TRUE(browser_state.has_value());
@@ -877,7 +658,6 @@
 }
 
 void WebAppIntegrationBrowserTestBase::CheckLaunchIconNotShown() {
-  DCHECK(after_state_change_action_state_);
   absl::optional<BrowserState> browser_state = GetStateForBrowser(
       after_state_change_action_state_.get(), profile(), browser());
   ASSERT_TRUE(browser_state.has_value());
@@ -886,7 +666,6 @@
 
 void WebAppIntegrationBrowserTestBase::CheckManifestDisplayModeInternal(
     DisplayMode display_mode) {
-  DCHECK(after_state_change_action_state_);
   absl::optional<AppState> app_state = GetStateForAppId(
       after_state_change_action_state_.get(), profile(), active_app_id_);
   ASSERT_TRUE(app_state.has_value());
@@ -895,7 +674,6 @@
 
 void WebAppIntegrationBrowserTestBase::CheckTabCreated() {
   DCHECK(before_state_change_action_state_);
-  DCHECK(after_state_change_action_state_);
   absl::optional<BrowserState> most_recent_browser_state = GetStateForBrowser(
       after_state_change_action_state_.get(), profile(), browser());
   absl::optional<BrowserState> previous_browser_state = GetStateForBrowser(
@@ -912,7 +690,6 @@
 
 void WebAppIntegrationBrowserTestBase::CheckUserDisplayModeInternal(
     DisplayMode display_mode) {
-  DCHECK(after_state_change_action_state_);
   absl::optional<AppState> app_state = GetStateForAppId(
       after_state_change_action_state_.get(), profile(), active_app_id_);
   ASSERT_TRUE(app_state.has_value());
@@ -921,7 +698,6 @@
 
 void WebAppIntegrationBrowserTestBase::CheckWindowClosed() {
   DCHECK(before_state_change_action_state_);
-  DCHECK(after_state_change_action_state_);
   absl::optional<ProfileState> after_action_profile =
       GetStateForProfile(after_state_change_action_state_.get(), profile());
   absl::optional<ProfileState> before_action_profile =
@@ -934,7 +710,6 @@
 
 void WebAppIntegrationBrowserTestBase::CheckWindowCreated() {
   DCHECK(before_state_change_action_state_);
-  DCHECK(after_state_change_action_state_);
   absl::optional<ProfileState> after_action_profile =
       GetStateForProfile(after_state_change_action_state_.get(), profile());
   absl::optional<ProfileState> before_action_profile =
@@ -998,10 +773,11 @@
 }
 
 GURL WebAppIntegrationBrowserTestBase::GetInstallableAppURL(
-    const std::string& action_param) {
-  std::string scope = action_param;
+    const std::string& scope) {
+  DCHECK(scope_to_path.contains(scope));
+  auto scope_url_path = scope_to_path.find(scope)->second;
   return embedded_test_server()->GetURL(
-      base::StringPrintf("/web_apps/%s/basic.html", scope.c_str()));
+      base::StringPrintf("/web_apps/%s/basic.html", scope_url_path.c_str()));
 }
 
 WebAppProvider* WebAppIntegrationBrowserTestBase::GetProviderForProfile(
@@ -1070,14 +846,16 @@
 }
 
 GURL WebAppIntegrationBrowserTestBase::GetAppURLForManifest(
-    const std::string& action_scope,
+    const std::string& scope,
     DisplayMode display_mode) {
+  DCHECK(scope_to_path.contains(scope));
+  auto scope_url_path = scope_to_path.find(scope)->second;
   std::string str_template = "/web_apps/%s/basic.html";
   if (display_mode == blink::mojom::DisplayMode::kMinimalUi) {
     str_template += "?manifest=manifest_minimal_ui.json";
   }
   return embedded_test_server()->GetURL(
-      base::StringPrintf(str_template.c_str(), action_scope.c_str()));
+      base::StringPrintf(str_template.c_str(), scope_url_path.c_str()));
 }
 
 content::WebContents* WebAppIntegrationBrowserTestBase::GetCurrentTab(
@@ -1086,8 +864,8 @@
 }
 
 GURL WebAppIntegrationBrowserTestBase::GetInScopeURL(
-    const std::string& action_param) {
-  return GetInstallableAppURL(action_param);
+    const std::string& action_mode) {
+  return GetInstallableAppURL(action_mode);
 }
 
 GURL WebAppIntegrationBrowserTestBase::GetNonInstallableAppURL() {
@@ -1095,14 +873,27 @@
 }
 
 GURL WebAppIntegrationBrowserTestBase::GetOutOfScopeURL(
-    const std::string& action_param) {
+    const std::string& action_mode) {
   return embedded_test_server()->GetURL("/out_of_scope/index.html");
 }
 
 GURL WebAppIntegrationBrowserTestBase::GetURLForScope(
-    const std::string& action_param) {
+    const std::string& scope) {
+  DCHECK(scope_to_path.contains(scope));
+  auto scope_url_path = scope_to_path.find(scope)->second;
   return embedded_test_server()->GetURL(
-      base::StringPrintf("/web_apps/%s/", action_param.c_str()));
+      base::StringPrintf("/web_apps/%s/", scope_url_path.c_str()));
+}
+
+void WebAppIntegrationBrowserTestBase::InstallCreateShortcut(
+    bool open_in_window) {
+  chrome::SetAutoAcceptWebAppDialogForTesting(
+      /*auto_accept=*/true,
+      /*auto_open_in_window=*/open_in_window);
+  WebAppInstallObserver observer(profile());
+  CHECK(chrome::ExecuteCommand(browser(), IDC_CREATE_SHORTCUT));
+  active_app_id_ = observer.AwaitNextInstall();
+  chrome::SetAutoAcceptWebAppDialogForTesting(false, false);
 }
 
 bool WebAppIntegrationBrowserTestBase::AreNoAppWindowsOpen(
@@ -1163,6 +954,15 @@
   }
 }
 
+void WebAppIntegrationBrowserTestBase::MaybeNavigateTabbedBrowserInScope(
+    const std::string& scope) {
+  auto browser_url = GetCurrentTab(browser())->GetURL();
+  auto dest_url = GetInScopeURL(scope);
+  if (browser_url.is_empty() || browser_url != dest_url) {
+    NavigateTabbedBrowserToSite(dest_url);
+  }
+}
+
 Browser* WebAppIntegrationBrowserTestBase::browser() {
   Browser* browser = active_browser_
                          ? active_browser_
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.h b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.h
index 936d69f..b6f1ecc 100644
--- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.h
+++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_base.h
@@ -98,9 +98,8 @@
     virtual net::EmbeddedTestServer* EmbeddedTestServer() = 0;
     virtual std::vector<Profile*> GetAllProfiles() = 0;
     virtual bool IsSyncTest() = 0;
-    virtual bool UserSigninInternal() = 0;
-    virtual void TurnSyncOff() = 0;
-    virtual void TurnSyncOn() = 0;
+    virtual void SyncTurnOff() = 0;
+    virtual void SyncTurnOn() = 0;
   };
 
   explicit WebAppIntegrationBrowserTestBase(TestDelegate* delegate);
@@ -119,7 +118,7 @@
   //  * site_c
   absl::optional<AppState> GetAppByScope(StateSnapshot* state_snapshot,
                                          Profile* profile,
-                                         const std::string& scope);
+                                         const std::string& action_scope);
 
   static absl::optional<TabState> GetStateForActiveTab(
       BrowserState browser_state);
@@ -137,21 +136,19 @@
 
   void SetUp(base::FilePath test_data_dir);
   void SetUpOnMainThread();
+  void TearDownOnMainThread();
 
-  // Test Framework
-  static std::vector<std::string> BuildAllPlatformTestCaseSet(
-      base::FilePath test_data_dir,
-      const std::string& test_case_file_name);
-  void ExecuteAction(const std::string& action_string);
-  static std::vector<std::string> GetPlatformIgnoredTests(
-      base::FilePath test_data_dir,
-      const std::string& file_name);
-  static base::FilePath GetTestFilePath(base::FilePath test_data_dir,
-                                        const std::string& file_name);
-  void ParseParams(std::string action_strings);
-  static std::vector<std::string> ReadTestInputFile(
-      base::FilePath test_data_dir,
-      const std::string& file_name);
+  // Script-generated tests will call these methods right before/after calling
+  // each action. Useful for common code that should be executed by most or all
+  // actions, such as constructing state snapshots after state change actions.
+  // Adding a before/after call around each action call may look a bit messier,
+  // but this removes a burden of remembering to execute this test-framework
+  // related code for future authors of action imiplementations, allowing them
+  // to focus entirely on action-related code.
+  void BeforeStateChangeAction();
+  void AfterStateChangeAction();
+  void BeforeStateCheckAction();
+  void AfterStateCheckAction();
 
   // Automated Testing Actions
   //
@@ -164,32 +161,41 @@
   //
   // State change actions are declared (and implemented) above state check
   // actions.
-  void AddPolicyAppInternal(const std::string& action_param,
-                            base::Value default_launch_container,
-                            const bool create_shortcut);
-  void ClosePWA();
-  void InstallCreateShortcut(bool open_in_window);
+  void InstallPolicyAppInternal(const std::string& action_scope,
+                                base::Value default_launch_container,
+                                const bool create_shortcut);
+  void ClosePwa();
+  void InstallCreateShortcutTabbed(const std::string& action_scope = "SiteA");
+  void InstallCreateShortcutWindowed(const std::string& action_scope = "SiteA");
+  void InstallMenuOption(const std::string& action_scope = "SiteA");
   void InstallLocally();
-  web_app::AppId InstallOmnibox();
-  void LaunchInternal(const std::string& action_param);
+  void InstallOmniboxIcon(const std::string& action_scope = "SiteA");
+  void InstallPolicyAppTabbedNoShortcut(
+      const std::string& action_scope = "SiteA");
+  void InstallPolicyAppTabbedShortcut(
+      const std::string& action_scope = "SiteA");
+  void InstallPolicyAppWindowedNoShortcut(
+      const std::string& action_scope = "SiteA");
+  void InstallPolicyAppWindowedShortcut(
+      const std::string& action_scope = "SiteA");
+  void LaunchInternal(const std::string& action_scope = "SiteA");
   void ListAppsInternal();
   void NavigateTabbedBrowserToSite(const GURL& url);
-  void SetOpenInTabInternal(const std::string& action_param);
-  void SetOpenInWindowInternal(const std::string& action_param);
+  void NavigateBrowser(const std::string& action_scope = "SiteA");
+  void ManifestUpdateDisplayMinimal(const std::string& action_scope = "SiteA");
+  void SetOpenInTab(const std::string& action_scope = "SiteA");
+  void SetOpenInWindow(const std::string& action_scope = "SiteA");
   void SwitchProfileClients();
-  void TurnSyncOff();
-  void TurnSyncOn();
+  void SyncTurnOff();
+  void SyncTurnOn();
   void UninstallFromMenu();
-  void UninstallInternal(const std::string& action_param);
-  void UninstallPolicyApp(const std::string& action_param);
-  void ManifestUpdateDisplay(const std::string& action_scope,
-                             DisplayMode display_mode);
-  void UserSigninInternal();
+  void UninstallPolicyApp(const std::string& action_scope = "SiteA");
 
   // State Check Actions
   void CheckAppLocallyInstalledInternal();
-  void CheckAppNotLocallyInstalledInternal();
-  void CheckAppNotInList(const std::string& action_param);
+  void CheckAppInListNotLocallyInstalled(
+      const std::string& action_mode = "SiteA");
+  void CheckAppNotInList(const std::string& action_scope = "SiteA");
   void CheckInstallable();
   void CheckInstallIconShown();
   void CheckInstallIconNotShown();
@@ -214,7 +220,7 @@
   //  * site_a/bar
   //  * site_b
   //  * site_c
-  GURL GetInstallableAppURL(const std::string& action_param);
+  GURL GetInstallableAppURL(const std::string& scope);
   WebAppProvider* GetProviderForProfile(Profile* profile);
 
   // Allow test-driving classes to reset the ScopedObservation of the
@@ -235,14 +241,14 @@
   //  * site_a/bar
   //  * site_b
   //  * site_c
-  GURL GetAppURLForManifest(const std::string& action_scope,
-                            DisplayMode display_mode);
+  GURL GetAppURLForManifest(const std::string& scope, DisplayMode display_mode);
   content::WebContents* GetCurrentTab(Browser* browser);
-  GURL GetInScopeURL(const std::string& action_param);
+  GURL GetInScopeURL(const std::string& action_scope);
   GURL GetNonInstallableAppURL();
-  GURL GetOutOfScopeURL(const std::string& action_param);
+  GURL GetOutOfScopeURL(const std::string& action_scope);
   WebAppProvider* GetProvider() { return WebAppProvider::Get(profile()); }
-  GURL GetURLForScope(const std::string& action_param);
+  GURL GetURLForScope(const std::string& scope);
+  void InstallCreateShortcut(bool open_in_window);
 
   // This action only works if no navigations to the given app_url occur
   // between app installation and calls to this action.
@@ -250,6 +256,9 @@
   void ForceUpdateManifestContents(const std::string& app_scope,
                                    GURL app_url_with_manifest_param);
   void MaybeWaitForManifestUpdates(Profile* profile);
+  void MaybeNavigateTabbedBrowserInScope(const std::string& scope);
+  void SetOpenInTabInternal(const std::string& action_scope);
+  void SetOpenInWindowInternal(const std::string& action_scope);
 
   Browser* browser();
   const net::EmbeddedTestServer* embedded_test_server();
diff --git a/chrome/browser/ui/web_applications/app_browser_controller.cc b/chrome/browser/ui/web_applications/app_browser_controller.cc
index 3211e08..45bc007 100644
--- a/chrome/browser/ui/web_applications/app_browser_controller.cc
+++ b/chrome/browser/ui/web_applications/app_browser_controller.cc
@@ -154,9 +154,8 @@
   return theme_provider_.get();
 }
 
-AppBrowserController::AppBrowserController(
-    Browser* browser,
-    absl::optional<web_app::AppId> app_id)
+AppBrowserController::AppBrowserController(Browser* browser,
+                                           web_app::AppId app_id)
     : content::WebContentsObserver(nullptr),
       app_id_(std::move(app_id)),
       browser_(browser),
diff --git a/chrome/browser/ui/web_applications/app_browser_controller.h b/chrome/browser/ui/web_applications/app_browser_controller.h
index 9b45d26..9d1b129d 100644
--- a/chrome/browser/ui/web_applications/app_browser_controller.h
+++ b/chrome/browser/ui/web_applications/app_browser_controller.h
@@ -174,12 +174,11 @@
     return system_app_type_;
   }
 
-  // Returns true if AppId is non-null
-  bool HasAppId() const { return app_id_.has_value(); }
+  // TODO(crbug.com/1110678): Retire this method.
+  bool HasAppId() const { return true; }
 
-  // Returns AppId if it is defined, otherwise DCHECK.
-  // Should check HasAppId() before calling if unsure
-  const AppId& GetAppId() const { return app_id_.value(); }
+  // TODO(crbug.com/1110678): Rename to |app_id()|.
+  const AppId& GetAppId() const { return app_id_; }
 
   Browser* browser() const { return browser_; }
 
@@ -218,8 +217,7 @@
   void SetOnUpdateDraggableRegionForTesting(base::OnceClosure done);
 
  protected:
-  explicit AppBrowserController(Browser* browser,
-                                absl::optional<web_app::AppId> app_id);
+  explicit AppBrowserController(Browser* browser, web_app::AppId app_id);
 
   // Called once the app browser controller has determined its initial url.
   virtual void OnReceivedInitialURL();
@@ -237,7 +235,7 @@
 
   void UpdateThemePack();
 
-  const absl::optional<AppId> app_id_;
+  const AppId app_id_;
   Browser* const browser_;
   GURL initial_url_;
 
diff --git a/chrome/browser/ui/webui/download_internals/download_internals_ui.cc b/chrome/browser/ui/webui/download_internals/download_internals_ui.cc
index c7c656d..b6addd3 100644
--- a/chrome/browser/ui/webui/download_internals/download_internals_ui.cc
+++ b/chrome/browser/ui/webui/download_internals/download_internals_ui.cc
@@ -9,8 +9,8 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/webui/download_internals/download_internals_ui_message_handler.h"
 #include "chrome/common/url_constants.h"
-#include "chrome/grit/download_internals_resources.h"
-#include "chrome/grit/download_internals_resources_map.h"
+#include "components/grit/download_internals_resources.h"
+#include "components/grit/download_internals_resources_map.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_controller.h"
 #include "content/public/browser/web_ui_data_source.h"
diff --git a/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc b/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
index 00a6585..2f1d496 100644
--- a/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
+++ b/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
@@ -181,12 +181,10 @@
         base::flat_map<password_manager::InsecureType,
                        password_manager::InsecurityMetadata>();
     store_->AddLogin(form);
-    base::RunLoop().RunUntilIdle();
-
-    store_->AddInsecureCredential(password_manager::InsecureCredential(
-        form.signon_realm, form.username_value, base::Time(),
-        password_manager::InsecureType::kLeaked,
-        password_manager::IsMuted(false)));
+    form.password_issues = {
+        {password_manager::InsecureType::kLeaked,
+         password_manager::InsecurityMetadata(
+             base::Time(), password_manager::IsMuted(false))}};
     base::RunLoop().RunUntilIdle();
   }
 
diff --git a/chrome/browser/ui/webui/signin/signin_reauth_handler.cc b/chrome/browser/ui/webui/signin/signin_reauth_handler.cc
index 0d4d887..9a7160eb 100644
--- a/chrome/browser/ui/webui/signin/signin_reauth_handler.cc
+++ b/chrome/browser/ui/webui/signin/signin_reauth_handler.cc
@@ -58,10 +58,7 @@
   if (!IsJavascriptAllowed())
     return;
 
-  DCHECK_NE(reauth_type, SigninReauthViewController::GaiaReauthType::kUnknown);
-  bool is_reauth_required =
-      reauth_type != SigninReauthViewController::GaiaReauthType::kAutoApproved;
-  FireWebUIListener("reauth-type-received", base::Value(is_reauth_required));
+  FireWebUIListener("reauth-type-determined");
 }
 
 void SigninReauthHandler::HandleInitialize(const base::ListValue* args) {
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
index 90835de..6ff61a2 100644
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -242,7 +242,6 @@
 
   deps = [
     "//build:chromeos_buildflags",
-    "//components/crash/core/app",
     "//components/google/core/common",
     "//components/live_caption:constants",
     "//components/metrics:call_stack_profile_builder",
@@ -334,6 +333,12 @@
     ]
   }
 
+  if (!is_fuchsia) {
+    deps += [
+      "//components/crash/core/app",
+    ]
+  }
+
   if (is_mac) {
     assert(enable_extensions)
     sources += [
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 449ed7d..1ccfc54 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -353,7 +353,7 @@
 #endif
 
 #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
-    defined(OS_CHROMEOS)
+    defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kIncognitoBrandConsistencyForDesktop;
 
diff --git a/chrome/common/chrome_paths_unittest.cc b/chrome/common/chrome_paths_unittest.cc
index 36b277c..cf485a80 100644
--- a/chrome/common/chrome_paths_unittest.cc
+++ b/chrome/common/chrome_paths_unittest.cc
@@ -29,10 +29,9 @@
   base::FilePath expected_cache_dir;
   ASSERT_TRUE(base::PathService::Get(base::DIR_CACHE, &expected_cache_dir));
   expected_cache_dir = expected_cache_dir.Append("foobar");
-#elif(OS_ANDROID)
-  // No matter what the test_profile_dir is, Android always use the
-  // application's cache directory since multiple profiles are not
-  // supported.
+#elif (OS_ANDROID) || defined(OS_FUCHSIA)
+  // No matter what the test_profile_dir is, Android and Fuchsia always use the
+  // application's cache directory since multiple profiles are not supported.
   base::FilePath expected_cache_dir;
   ASSERT_TRUE(base::PathService::Get(base::DIR_CACHE, &expected_cache_dir));
 #elif(OS_POSIX)
diff --git a/chrome/common/extensions/api/accessibility_private.json b/chrome/common/extensions/api/accessibility_private.json
index d7976d51..2224f84 100644
--- a/chrome/common/extensions/api/accessibility_private.json
+++ b/chrome/common/extensions/api/accessibility_private.json
@@ -34,6 +34,15 @@
         }
       },
       {
+        "id": "ScreenPoint",
+        "type": "object",
+        "description": "Point in global screen coordinates.",
+        "properties": {
+          "x": {"type": "integer", "description": "X coordinate in global screen coordinates."},
+          "y": {"type": "integer", "description": "Y coordinate in global screen coordinates."}
+        }
+      },
+      {
         "id": "Gesture",
         "type": "string",
         "enum": [ "click", "swipeLeft1", "swipeUp1", "swipeRight1", "swipeDown1", "swipeLeft2", "swipeUp2", "swipeRight2", "swipeDown2", "swipeLeft3", "swipeUp3", "swipeRight3", "swipeDown3", "swipeLeft4", "swipeUp4", "swipeRight4", "swipeDown4", "tap2", "tap3", "tap4", "touchExplore" ],
@@ -490,6 +499,17 @@
         ]
       },
       {
+        "name": "magnifierCenterOnPoint",
+        "type": "function",
+        "description": "Called by the Accessibility Common extension to center magnifier at |point|.",
+        "parameters": [
+          {
+            "name": "point",
+            "$ref": "ScreenPoint"
+          }
+        ]
+      },
+      {
         "name": "toggleDictation",
         "type": "function",
         "description": "Toggles dictation between active and inactive states.",
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 27ae91c..bb47bea 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -440,7 +440,7 @@
     libs = [ "runtimeobject.lib" ]
   }
 
-  if (is_chromeos_ash || is_chromeos_lacros) {
+  if (is_chromeos) {
     deps += [ "//chromeos/dbus/constants" ]
   }
 
@@ -2587,7 +2587,7 @@
       if (!is_chromeos_lacros) {
         sources += [ "../browser/extensions/api/image_writer_private/image_writer_private_apitest.cc" ]
       }
-      if (is_chromeos_ash || is_chromeos_lacros) {
+      if (is_chromeos) {
         sources +=
             [ "../browser/extensions/clipboard_extension_apitest_chromeos.cc" ]
       }
@@ -2798,7 +2798,7 @@
           "../browser/ui/views/select_file_dialog_extension_browsertest.cc",
         ]
       }
-      if (!is_chromeos_ash && !is_chromeos_lacros) {
+      if (!is_chromeos) {
         sources += [
           "../browser/ui/views/bookmarks/bookmark_bubble_sign_in_delegate_browsertest.cc",
           "../browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc",
@@ -3757,7 +3757,7 @@
         "../browser/printing/pwg_raster_converter_browsertest.cc",
         "../browser/ui/webui/print_preview/print_preview_ui_browsertest.cc",
       ]
-      if (!is_mac && !is_chromeos_ash && !is_chromeos_lacros) {
+      if (!is_mac && !is_chromeos) {
         sources += [
           # This test depends on GetCommandLineForRelaunch, which is not
           # available on Mac. It is also not intended to run on ChromeOS.
@@ -4398,7 +4398,6 @@
     "../browser/page_load_metrics/observers/tab_restore_page_load_metrics_observer_unittest.cc",
     "../browser/page_load_metrics/observers/third_party_metrics_observer_unittest.cc",
     "../browser/page_load_metrics/observers/translate_page_load_metrics_observer_unittest.cc",
-    "../browser/paint_preview/services/paint_preview_tab_service_unittest.cc",
     "../browser/password_manager/chrome_password_manager_client_unittest.cc",
     "../browser/performance_hints/performance_hints_observer_unittest.cc",
     "../browser/performance_hints/rewrite_handler_unittest.cc",
@@ -4624,6 +4623,12 @@
     "../../base/path_service_unittest.cc",
   ]
 
+  if (enable_paint_preview) {
+    sources += [
+      "../browser/paint_preview/services/paint_preview_tab_service_unittest.cc",
+    ]
+  }
+
   if (is_android) {
     sources += [
       "../browser/android/bookmarks/partner_bookmarks_shim_unittest.cc",
@@ -4670,12 +4675,12 @@
       "../browser/android/webapk/webapk_installer_unittest.cc",
       "../browser/commerce/merchant_viewer/merchant_viewer_data_manager_unittest.cc",
       "../browser/data_reduction_proxy/data_reduction_proxy_settings_unittest_android.cc",
+      "../browser/device_reauth/android/biometric_authenticator_android_unittest.cc",
       "../browser/download/android/available_offline_content_provider_unittest.cc",
       "../browser/download/android/download_manager_service_unittest.cc",
       "../browser/metrics/thread_watcher_android_unittest.cc",
       "../browser/notifications/notification_channels_provider_android_unittest.cc",
       "../browser/optimization_guide/android/optimization_guide_tab_url_provider_android_unittest.cc",
-      "../browser/password_manager/android/biometric_authenticator_android_unittest.cc",
       "../browser/password_manager/android/password_ui_view_android_unittest.cc",
       "../browser/search/contextual_search_policy_handler_android_unittest.cc",
       "../browser/share/share_history_unittest.cc",
@@ -5419,6 +5424,8 @@
       "//chrome/services/media_gallery_util:unit_tests",
       "//components/back_forward_cache",
       "//components/crash/content/browser",
+      "//components/device_reauth",
+      "//components/device_reauth:test_support",
       "//components/download/internal/common:internal_java",
       "//components/embedder_support/android:browser_context",
       "//components/favicon/core/test:test_support",
@@ -6646,30 +6653,6 @@
       "../renderer/extensions/tabs_hooks_delegate_unittest.cc",
     ]
 
-    if (is_mac) {
-      sources += [
-        "../browser/apps/app_shim/app_shim_host_mac_unittest.cc",
-        "../browser/apps/app_shim/app_shim_manager_mac_unittest.cc",
-        "../browser/apps/app_shim/web_app_shim_manager_delegate_mac_unittest.cc",
-      ]
-    }
-
-    if (is_chromeos_ash) {
-      sources += [
-        "../browser/extensions/api/image_writer_private/removable_storage_provider_chromeos_unittest.cc",
-        "../browser/extensions/extension_garbage_collector_chromeos_unittest.cc",
-        "../browser/extensions/external_provider_impl_chromeos_unittest.cc",
-        "../browser/extensions/system_display/display_info_provider_chromeos_unittest.cc",
-        "../browser/extensions/system_display/system_display_serialization_unittest.cc",
-        "../common/chromeos/extensions/manifest_tests/extension_manifests_chromeos_system_extension_unittest.cc",
-        "../renderer/extensions/accessibility_private_hooks_delegate_unittest.cc",
-      ]
-      deps += [
-        "../common/chromeos/extensions",
-        "//chromeos/dbus/image_burner",
-      ]
-    }
-
     allow_circular_includes_from = [
       "//chrome/browser/web_applications:web_applications_unit_tests",
       "//chrome/browser/web_applications/extensions:unit_tests",
@@ -6709,9 +6692,19 @@
       "//third_party/blink/common/privacy_budget:test_support",
       "//tools/json_schema_compiler/test:unit_tests",
     ]
+
     if (enable_service_discovery) {
       sources += [ "../browser/extensions/api/mdns/mdns_api_unittest.cc" ]
     }
+
+    if (is_mac) {
+      sources += [
+        "../browser/apps/app_shim/app_shim_host_mac_unittest.cc",
+        "../browser/apps/app_shim/app_shim_manager_mac_unittest.cc",
+        "../browser/apps/app_shim/web_app_shim_manager_delegate_mac_unittest.cc",
+      ]
+    }
+
     if (is_win) {
       sources += [
         "../browser/extensions/external_registry_loader_win_unittest.cc",
@@ -6719,6 +6712,7 @@
         "../browser/media_galleries/win/mtp_device_object_enumerator_unittest.cc",
       ]
     }
+
     if (is_chromeos_ash) {
       sources += [
         "../browser/ash/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc",
@@ -6727,9 +6721,21 @@
         "../browser/ash/login/easy_unlock/smartlock_state_handler_unittest.cc",
         "../browser/chromeos/extensions/extensions_permissions_tracker_unittest.cc",
         "../browser/extensions/api/file_system/consent_provider_unittest.cc",
+        "../browser/extensions/api/image_writer_private/removable_storage_provider_chromeos_unittest.cc",
+        "../browser/extensions/extension_garbage_collector_chromeos_unittest.cc",
         "../browser/extensions/external_pref_loader_unittest.cc",
+        "../browser/extensions/external_provider_impl_chromeos_unittest.cc",
+        "../browser/extensions/system_display/display_info_provider_chromeos_unittest.cc",
+        "../browser/extensions/system_display/system_display_serialization_unittest.cc",
         "../browser/media_galleries/chromeos/mtp_device_object_enumerator_unittest.cc",
         "../browser/ui/webui/about_ui_unittest.cc",
+        "../common/chromeos/extensions/manifest_tests/extension_manifests_chromeos_system_extension_unittest.cc",
+        "../renderer/extensions/accessibility_private_hooks_delegate_unittest.cc",
+      ]
+
+      deps += [
+        "//chrome/common/chromeos/extensions",
+        "//chromeos/dbus/image_burner",
       ]
     } else {
       sources += [
@@ -6739,7 +6745,7 @@
 
       deps += [ "//components/enterprise:test_support" ]
     }
-    if (!is_chromeos_ash && !is_chromeos_lacros) {
+    if (!is_chromeos_ash && !is_chromeos_lacros && !is_fuchsia) {
       sources += [
         "../browser/extensions/api/messaging/native_message_process_host_unittest.cc",
         "../browser/extensions/api/messaging/native_messaging_launch_from_native_unittest.cc",
@@ -6788,14 +6794,7 @@
   }
 
   if (enable_service_discovery) {
-    sources += [
-      "../browser/devtools/device/cast_device_provider_unittest.cc",
-      "../browser/printing/cloud_print/cloud_print_printer_list_unittest.cc",
-      "../browser/printing/cloud_print/gcd_api_flow_unittest.cc",
-      "../browser/printing/cloud_print/privet_confirm_api_flow_unittest.cc",
-      "../browser/printing/cloud_print/privet_http_unittest.cc",
-      "../browser/printing/cloud_print/privet_url_loader_unittest.cc",
-    ]
+    sources += [ "../browser/devtools/device/cast_device_provider_unittest.cc" ]
 
     if (is_mac) {
       sources += [
@@ -6805,8 +6804,6 @@
       sources += [
         "../browser/local_discovery/local_domain_resolver_unittest.cc",
         "../browser/local_discovery/service_discovery_client_unittest.cc",
-        "../browser/printing/cloud_print/privet_device_lister_unittest.cc",
-        "../browser/printing/cloud_print/privet_local_printer_lister_unittest.cc",
       ]
     }
   }
@@ -7488,7 +7485,6 @@
     sources -= [
       "../browser/browsing_data/browsing_data_media_license_helper_unittest.cc",
       "../browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc",
-      "../browser/printing/cloud_print/privet_http_unittest.cc",
       "../browser/ui/tab_contents/chrome_web_contents_view_handle_drop_unittest.cc",
       "../browser/ui/webui/management/management_ui_handler_unittest.cc",
     ]
@@ -8165,7 +8161,7 @@
       ]
     }
 
-    if (is_chromeos_ash || is_chromeos_lacros) {
+    if (is_chromeos) {
       # These tests are not applicable on Chrome OS - Ash and Lacros.
       sources -=
           [ "../browser/ui/signin_view_controller_interactive_uitest.cc" ]
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 7b16321..a306c2bb 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -6,7 +6,8 @@
       "linux",
       "mac",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -53,7 +54,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -75,7 +77,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -96,7 +99,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -152,7 +156,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -177,7 +182,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -220,7 +226,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -241,7 +248,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -264,7 +272,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -287,7 +296,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -307,7 +317,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -359,7 +370,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -380,7 +392,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -401,7 +414,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -420,7 +434,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -459,7 +474,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -572,7 +588,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -591,7 +608,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -624,7 +642,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -658,7 +677,7 @@
   },
   "PrintingAllowedColorModes": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -675,7 +694,7 @@
   },
   "PrintingAllowedDuplexModes": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -692,7 +711,7 @@
   },
   "PrintingAllowedPinModes": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -712,7 +731,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -729,7 +749,7 @@
   },
   "PrintingColorDefault": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -746,7 +766,7 @@
   },
   "PrintingDuplexDefault": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -763,7 +783,7 @@
   },
   "PrintingPinDefault": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -783,7 +803,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -803,7 +824,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -824,7 +846,7 @@
   },
   "PrintingSendUsernameAndFilenameEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -839,7 +861,7 @@
   },
   "PrintingMaxSheetsAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -854,7 +876,7 @@
   },
   "PrintJobHistoryExpirationPeriod": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -869,7 +891,7 @@
   },
   "DeletePrintJobHistoryAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -884,7 +906,7 @@
   },
   "PrintingAPIExtensionsWhitelist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -904,7 +926,7 @@
   },
   "PrintingAPIExtensionsAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -950,7 +972,7 @@
   },
   "ExternalPrintServersWhitelist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -998,7 +1020,7 @@
   },
   "ExternalPrintServersAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1076,7 +1098,7 @@
   },
   "NativePrinters": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1104,7 +1126,7 @@
   },
   "Printers": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1138,7 +1160,7 @@
   },
   "NativePrintersBulkAccessMode": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1153,7 +1175,7 @@
   },
   "PrintersBulkAccessMode": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1168,7 +1190,7 @@
   },
   "NativePrintersBulkBlacklist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1187,7 +1209,7 @@
   },
   "PrintersBulkBlocklist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1206,7 +1228,7 @@
   },
   "NativePrintersBulkWhitelist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1225,7 +1247,7 @@
   },
   "PrintersBulkAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1244,7 +1266,7 @@
   },
   "UserNativePrintersAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1259,7 +1281,7 @@
   },
   "UserPrintersAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1280,7 +1302,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -1320,7 +1343,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -1409,7 +1433,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -1448,7 +1473,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -1517,7 +1543,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1562,7 +1589,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -1585,7 +1613,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -1611,7 +1640,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -1631,7 +1661,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -1651,7 +1682,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -1701,7 +1733,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -1741,7 +1774,8 @@
       "linux",
       "mac",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -1911,7 +1945,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -1966,7 +2001,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -1988,7 +2024,7 @@
   },
   "DownloadDirectory.1": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2008,7 +2044,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2035,7 +2072,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2059,7 +2097,7 @@
   },
   "CaptivePortalAuthenticationIgnoresProxy": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2078,7 +2116,8 @@
       "mac",
       "linux",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2101,7 +2140,8 @@
       "mac",
       "linux",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2124,7 +2164,8 @@
       "mac",
       "linux",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2149,7 +2190,8 @@
       "mac",
       "linux",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2175,7 +2217,8 @@
       "mac",
       "linux",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2201,7 +2244,8 @@
       "linux",
       "win",
       "android",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "mac"
     ],
     "policy_pref_mapping_tests": [
@@ -2229,7 +2273,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2248,7 +2293,8 @@
     "os": [
       "win",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2294,7 +2340,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2338,7 +2385,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2381,7 +2429,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2423,7 +2472,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2443,7 +2493,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2465,7 +2516,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2499,7 +2551,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2521,7 +2574,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2565,7 +2619,8 @@
     "os": [
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2630,7 +2685,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2673,7 +2729,8 @@
     "os": [
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2691,7 +2748,7 @@
   },
   "KerberosEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2708,7 +2765,7 @@
   },
   "KerberosRememberPasswordEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2725,7 +2782,7 @@
   },
   "KerberosAddAccountsAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2742,7 +2799,7 @@
   },
   "KerberosAccounts": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2779,7 +2836,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -2810,7 +2868,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2848,7 +2907,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2886,7 +2946,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_lacros",
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -2927,7 +2988,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -2952,7 +3014,8 @@
     "os": [
       "win",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3050,7 +3113,8 @@
     "os": [
       "win",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3112,7 +3176,8 @@
     "os": [
       "win",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3214,7 +3279,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3246,7 +3312,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3266,7 +3333,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3286,7 +3354,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3306,7 +3375,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3326,7 +3396,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3352,7 +3423,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3372,7 +3444,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3396,7 +3469,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3460,7 +3534,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -3499,7 +3574,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3537,7 +3613,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3597,7 +3674,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -3621,7 +3699,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -3682,7 +3761,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -3703,7 +3783,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -3786,7 +3867,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -3828,7 +3910,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -3859,7 +3942,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -3890,7 +3974,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -3922,7 +4007,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -3960,7 +4046,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -3981,7 +4068,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -4020,7 +4108,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -4050,7 +4139,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4080,7 +4170,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4121,7 +4212,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4163,7 +4255,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4194,7 +4287,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4236,7 +4330,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4279,7 +4374,8 @@
       "linux",
       "mac",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4310,7 +4406,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4348,7 +4445,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4380,7 +4478,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4418,7 +4517,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4450,7 +4550,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4488,7 +4589,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_lacros",
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4516,7 +4618,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_lacros",
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4544,7 +4647,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_lacros",
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4572,7 +4676,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_lacros",
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -4600,7 +4705,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -4619,7 +4725,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -4638,7 +4745,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4669,7 +4777,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4690,7 +4799,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4712,7 +4822,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4734,7 +4845,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4756,7 +4868,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4777,7 +4890,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4798,7 +4912,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4819,7 +4934,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -4840,7 +4956,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4862,7 +4979,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4884,7 +5002,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4906,7 +5025,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4940,7 +5060,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4962,7 +5083,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -4984,7 +5106,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -5005,7 +5128,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -5027,7 +5151,8 @@
       "linux",
       "mac",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -5061,7 +5186,8 @@
       "linux",
       "mac",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -5094,7 +5220,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5123,7 +5250,7 @@
   },
   "DeviceLoginScreenWebUsbAllowDevicesForUrls": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5156,7 +5283,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
@@ -5178,7 +5306,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5199,7 +5328,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5219,7 +5349,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -5240,7 +5371,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5274,7 +5406,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5316,7 +5449,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5355,7 +5489,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "can_be_recommended": true,
@@ -5372,7 +5507,7 @@
   },
   "AppRecommendationZeroStateEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5399,7 +5534,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -5418,7 +5554,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5474,7 +5611,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5636,7 +5774,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5669,7 +5808,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5720,7 +5860,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5753,7 +5894,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5859,7 +6001,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -5942,7 +6085,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -5984,7 +6128,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -6014,7 +6159,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6080,7 +6226,8 @@
     "os": [
       "mac",
       "android",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6111,7 +6258,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6143,7 +6291,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6166,7 +6315,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -6193,7 +6343,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6463,7 +6614,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6501,7 +6653,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6522,7 +6675,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6555,7 +6709,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6576,7 +6731,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6597,7 +6753,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6624,7 +6781,8 @@
   },
   "SuppressUnsupportedOSWarning": {
     "os": [
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "linux",
       "mac",
       "win"
@@ -6647,7 +6805,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6676,7 +6835,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6695,7 +6855,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6713,7 +6874,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6733,7 +6895,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6766,7 +6929,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6786,7 +6950,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -6805,7 +6970,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6826,7 +6992,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6934,7 +7101,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6954,7 +7122,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6971,7 +7140,7 @@
   },
   "RelaunchHeadsUpPeriod": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -6991,7 +7160,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7021,7 +7191,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7063,7 +7234,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -7157,7 +7329,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -7196,7 +7369,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -7215,7 +7389,7 @@
   },
   "FullscreenAlertEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7233,7 +7407,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7253,7 +7428,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -7271,7 +7447,8 @@
   },
   "DNSInterceptionChecksEnabled": {
     "os": [
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "linux",
       "mac",
       "win"
@@ -7292,7 +7469,8 @@
   },
   "IntranetRedirectBehavior": {
     "os": [
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "linux",
       "mac",
       "win"
@@ -7313,7 +7491,7 @@
   },
   "ChromeOsLockOnIdleSuspend": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -7329,7 +7507,8 @@
   },
   "PolicyRefreshRate": {
     "os": [
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "linux",
       "mac",
       "win"
@@ -7355,7 +7534,7 @@
   },
   "GaiaOfflineSigninTimeLimitDays": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7372,7 +7551,7 @@
   },
   "SAMLOfflineSigninTimeLimit": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7420,7 +7599,7 @@
   },
   "GaiaLockScreenOfflineSigninTimeLimitDays": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7437,7 +7616,7 @@
   },
   "SamlLockScreenOfflineSigninTimeLimitDays": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7507,7 +7686,7 @@
   },
   "DriveDisabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7542,7 +7721,7 @@
   },
   "DriveDisabledOverCellular": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7577,7 +7756,7 @@
   },
   "PinnedLauncherApps": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -7593,7 +7772,7 @@
   },
   "ExternalStorageDisabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7628,7 +7807,7 @@
   },
   "ExternalStorageReadOnly": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7663,7 +7842,7 @@
   },
   "AudioOutputAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7680,7 +7859,7 @@
   },
   "ShowLogoutButtonInTray": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7695,7 +7874,7 @@
   },
   "ShelfAutoHideBehavior": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7710,7 +7889,7 @@
   },
   "ShelfAlignment": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7728,7 +7907,7 @@
   },
   "ManagedGuestSessionPrivacyWarningsEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7751,7 +7930,7 @@
   },
   "SystemFeaturesDisableList": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7779,7 +7958,7 @@
   },
   "SystemFeaturesDisableMode": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7796,7 +7975,7 @@
   },
   "SessionLengthLimit": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7813,7 +7992,7 @@
   },
   "ScreenDimDelayAC": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7849,7 +8028,7 @@
   },
   "ScreenOffDelayAC": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7903,7 +8082,7 @@
   },
   "IdleWarningDelayAC": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7918,7 +8097,7 @@
   },
   "IdleDelayAC": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7933,7 +8112,7 @@
   },
   "ScreenDimDelayBattery": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7969,7 +8148,7 @@
   },
   "ScreenOffDelayBattery": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7984,7 +8163,7 @@
   },
   "IdleWarningDelayBattery": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -7999,7 +8178,7 @@
   },
   "IdleDelayBattery": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8014,7 +8193,7 @@
   },
   "IdleAction": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8030,7 +8209,7 @@
   },
   "IdleActionAC": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8045,7 +8224,7 @@
   },
   "IdleActionBattery": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8060,7 +8239,7 @@
   },
   "LidCloseAction": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8075,7 +8254,7 @@
   },
   "PowerManagementUsesAudioActivity": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8090,7 +8269,7 @@
   },
   "PowerManagementUsesVideoActivity": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8106,7 +8285,7 @@
   "PresentationIdleDelayScale": {},
   "PresentationScreenDimDelayScale": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8123,7 +8302,7 @@
   },
   "AllowWakeLocks": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8138,7 +8317,7 @@
   },
   "AllowScreenWakeLocks": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8153,7 +8332,7 @@
   },
   "UserActivityScreenDimDelayScale": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8170,7 +8349,7 @@
   },
   "WaitForInitialUserActivity": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8188,7 +8367,7 @@
   },
   "PowerManagementIdleSettings": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8245,7 +8424,7 @@
   },
   "ScreenLockDelayAC": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8272,7 +8451,7 @@
   },
   "ScreenLockDelayBattery": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8298,7 +8477,7 @@
   },
   "ScreenLockDelays": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8352,7 +8531,7 @@
   },
   "SecurityTokenSessionBehavior": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8377,7 +8556,7 @@
   },
   "SecurityTokenSessionNotificationSeconds": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8402,7 +8581,7 @@
   },
   "TermsOfServiceURL": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8417,7 +8596,7 @@
   },
   "ShowAccessibilityOptionsInSystemTrayMenu": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8432,7 +8611,7 @@
   },
   "LargeCursorEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8447,7 +8626,7 @@
   },
   "StickyKeysEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8462,7 +8641,7 @@
   },
   "SpokenFeedbackEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8477,7 +8656,7 @@
   },
   "DictationEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8492,7 +8671,7 @@
   },
   "PrimaryMouseButtonSwitch": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8507,7 +8686,7 @@
   },
   "KeyboardFocusHighlightEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8522,7 +8701,7 @@
   },
   "CursorHighlightEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8537,7 +8716,7 @@
   },
   "CaretHighlightEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8552,7 +8731,7 @@
   },
   "MonoAudioEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8567,7 +8746,7 @@
   },
   "AutoclickEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8582,7 +8761,7 @@
   },
   "HighContrastEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8597,7 +8776,7 @@
   },
   "AccessibilityShortcutsEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -8639,7 +8818,7 @@
   },
   "SelectToSpeakEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -8675,7 +8854,7 @@
   },
   "ScreenMagnifierType": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -8755,7 +8934,7 @@
   },
   "VirtualKeyboardEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8770,7 +8949,7 @@
   },
   "VirtualKeyboardFeatures": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8791,7 +8970,7 @@
   },
   "KeyboardDefaultToFunctionKeys": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8806,7 +8985,7 @@
   },
   "AttestationEnabledForUser": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8821,7 +9000,8 @@
   },
   "AttestationExtensionAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8839,7 +9019,8 @@
   },
   "AttestationExtensionWhitelist": {
     "os": [
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8862,7 +9043,8 @@
     "os": [
       "win",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8878,7 +9060,7 @@
   },
   "ChromeOsMultiProfileUserBehavior": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -8893,7 +9075,7 @@
   },
   "SecondaryGoogleAccountSigninAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9025,7 +9207,7 @@
   },
   "TouchVirtualKeyboardEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9040,7 +9222,7 @@
   },
   "EasyUnlockAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9058,7 +9240,7 @@
   },
   "ForceMaximizeOnFirstRun": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9076,7 +9258,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -9106,7 +9289,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -9139,7 +9323,7 @@
   },
   "DeviceAttributesAllowedForOrigins": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9163,7 +9347,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9191,7 +9376,8 @@
   "AllowDinosaurEasterEgg.CrOSDefault": {
     "note": "The default is changed by default_for_enterprise_users only on Chrome OS",
     "os": [
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9267,7 +9453,7 @@
   },
   "UnifiedDesktopEnabledByDefault": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9285,7 +9471,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9300,7 +9487,7 @@
   },
   "ArcEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9318,7 +9505,7 @@
   },
   "AllowScreenLock": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9333,7 +9520,7 @@
   },
   "QuickUnlockModeAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9354,7 +9541,7 @@
   },
   "QuickUnlockModeWhitelist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9375,7 +9562,7 @@
   },
   "QuickUnlockTimeout": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9390,7 +9577,7 @@
   },
   "PinUnlockMinimumLength": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9405,7 +9592,7 @@
   },
   "PinUnlockMaximumLength": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9420,7 +9607,7 @@
   },
   "PinUnlockWeakPinsAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9435,7 +9622,7 @@
   },
   "PinUnlockAutosubmitEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -9460,7 +9647,7 @@
   },
   "ReportArcStatusEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9495,7 +9682,7 @@
   },
   "ReportCrostiniUsageEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9530,7 +9717,7 @@
   },
   "SmsMessagesAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9565,7 +9752,7 @@
   },
   "WifiSyncAndroidAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9600,7 +9787,7 @@
   },
   "SmartLockSigninAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9635,7 +9822,7 @@
   },
   "InstantTetheringAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9670,7 +9857,7 @@
   },
   "PhoneHubAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9705,7 +9892,7 @@
   },
   "PhoneHubNotificationsAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9740,7 +9927,7 @@
   },
   "PhoneHubTaskContinuationAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9775,7 +9962,7 @@
   },
   "NearbyShareAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9813,7 +10000,7 @@
   },
   "SchedulerConfiguration": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -9871,7 +10058,7 @@
   },
   "AllowedLanguages": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9889,7 +10076,7 @@
   },
   "AllowedInputMethods": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9921,7 +10108,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -9957,7 +10145,7 @@
   },
   "NetworkFileSharesAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9975,7 +10163,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -9990,7 +10179,7 @@
   },
   "PowerSmartDimEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10008,7 +10197,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -10028,7 +10218,7 @@
   },
   "NetBiosShareDiscoveryEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10046,7 +10236,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -10062,7 +10253,7 @@
   },
   "NTLMShareAuthenticationEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10080,7 +10271,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10097,7 +10289,7 @@
   },
   "NetworkFileSharesPreconfiguredShares": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10129,7 +10321,7 @@
   },
   "ScreenBrightnessPercent": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10163,7 +10355,7 @@
   },
   "UserPluginVmAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10178,7 +10370,7 @@
   },
   "PluginVmImage": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10196,7 +10388,7 @@
   },
   "PluginVmUserId": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10213,7 +10405,7 @@
   },
   "PluginVmDataCollectionAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10228,7 +10420,7 @@
   },
   "PluginVmRequiredFreeDiskSpace": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10243,7 +10435,7 @@
   },
   "VoiceInteractionHotwordEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10281,7 +10473,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10316,7 +10509,7 @@
   },
   "SamlInSessionPasswordChangeEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10351,7 +10544,7 @@
   },
   "SamlPasswordExpirationAdvanceWarningDays": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10376,7 +10569,7 @@
   },
   "LockScreenReauthenticationEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10411,7 +10604,7 @@
   },
   "VmManagementCliAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10449,7 +10642,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10493,7 +10687,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10534,7 +10729,7 @@
   },
   "LoginDisplayPasswordButtonEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10569,7 +10764,7 @@
   },
   "SuggestedContentEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -10606,7 +10801,7 @@
   },
   "UserBorealisAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10642,7 +10837,7 @@
   "----- Chrome OS device policies ---------------------------------------": {},
   "DevicePolicyRefreshRate": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -10911,7 +11106,7 @@
   },
   "DeviceLoginScreenAccessibilityShortcutsEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -10974,7 +11169,7 @@
   },
   "DeviceLoginScreenCaretHighlightEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11033,7 +11228,7 @@
   },
   "DeviceChromeVariations": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11085,7 +11280,7 @@
   },
   "UptimeLimit": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11124,7 +11319,7 @@
   },
   "RebootAfterUpdate": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11162,7 +11357,7 @@
   },
   "DeviceScheduledReboot": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "reason_for_missing_test": "Maps into CrosSettings"
   },
@@ -11228,7 +11423,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11245,7 +11441,7 @@
   },
   "NetworkThrottlingEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11266,7 +11462,7 @@
   },
   "DeviceWiFiFastTransitionEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11286,7 +11482,7 @@
   },
   "DeviceLoginScreenExtensions": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11342,7 +11538,7 @@
   },
   "NoteTakingAppsLockScreenWhitelist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11357,7 +11553,7 @@
   },
   "NoteTakingAppsLockScreenAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11372,7 +11568,7 @@
   },
   "CastReceiverEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11405,7 +11601,7 @@
   },
   "DeviceExternalPrintServersAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11479,7 +11675,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11510,7 +11707,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11528,7 +11726,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11572,7 +11771,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -11641,7 +11841,7 @@
   },
   "CrostiniAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11679,7 +11879,7 @@
   },
   "CrostiniExportImportUIAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11714,7 +11914,7 @@
   },
   "CrostiniRootAccessAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11752,7 +11952,7 @@
   },
   "CrostiniArcAdbSideloadingAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11791,7 +11991,7 @@
   },
   "CrostiniPortForwardingAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11870,7 +12070,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11894,7 +12095,8 @@
       "win",
       "mac",
       "linux",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11950,7 +12152,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11968,7 +12171,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -11994,7 +12198,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12020,7 +12225,7 @@
   },
   "ArcAppInstallEventLoggingEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12035,7 +12240,7 @@
   },
   "ExtensionInstallEventLoggingEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12050,7 +12255,7 @@
   },
   "UsageTimeLimit": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12117,7 +12322,7 @@
   },
   "EnableSyncConsent": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12144,7 +12349,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12165,7 +12371,7 @@
   },
   "DeviceAllowMGSToStoreDisplayProperties": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12185,7 +12391,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12227,7 +12434,7 @@
   },
   "ParentAccessCodeConfig": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12260,7 +12467,7 @@
   },
   "ClientCertificateManagementAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12275,7 +12482,7 @@
   },
   "CACertificateManagementAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12290,7 +12497,7 @@
   },
   "AssistantOnboardingMode": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12307,7 +12514,7 @@
   },
   "VoiceInteractionContextEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12357,7 +12564,7 @@
   },
   "DevicePowerPeakShiftEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12374,7 +12581,7 @@
   },
   "DevicePowerPeakShiftBatteryThreshold": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12391,7 +12598,7 @@
   },
   "DevicePowerPeakShiftDayConfig": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12441,7 +12648,7 @@
   },
   "DeviceBootOnAcEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12461,7 +12668,7 @@
   },
   "DeviceAdvancedBatteryChargeModeEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12478,7 +12685,7 @@
   },
   "DeviceAdvancedBatteryChargeModeDayConfig": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12520,7 +12727,7 @@
   },
   "DeviceBatteryChargeMode": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12537,7 +12744,7 @@
   },
   "DeviceBatteryChargeCustomStartCharging": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12554,7 +12761,7 @@
   },
   "DeviceBatteryChargeCustomStopCharging": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12571,7 +12778,7 @@
   },
   "DeviceUsbPowerShareEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12594,7 +12801,7 @@
   },
   "EmojiSuggestionEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12609,7 +12816,7 @@
   },
   "PerAppTimeLimits": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12658,7 +12865,7 @@
   },
   "PerAppTimeLimitsWhitelist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12692,7 +12899,7 @@
   },
   "PerAppTimeLimitsAllowlist": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12726,7 +12933,7 @@
   },
   "DeviceLoginScreenPrivacyScreenEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12744,7 +12951,7 @@
   },
   "PrivacyScreenEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12759,7 +12966,7 @@
   },
   "RequiredClientCertificateForUser": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12803,7 +13010,7 @@
   },
   "RequiredClientCertificateForDevice": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12849,7 +13056,7 @@
   },
   "DeviceArcDataSnapshotHours": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12923,7 +13130,7 @@
   },
   "ArcBackupRestoreServiceEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12940,7 +13147,7 @@
   },
   "ArcGoogleLocationServicesEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -12960,7 +13167,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13018,7 +13226,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "Policy uses default value if CloudReportingEnabled is false or unset.",
     "policy_pref_mapping_tests": [
@@ -13154,7 +13363,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13177,7 +13387,7 @@
   },
   "VpnConfigAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13418,7 +13628,7 @@
   },
   "StartupBrowserWindowLaunchSuppressed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13433,7 +13643,7 @@
   },
   "LockScreenMediaPlaybackEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13451,7 +13661,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13550,7 +13761,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13604,7 +13816,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13658,7 +13871,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13710,7 +13924,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13732,7 +13947,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13769,7 +13985,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -13839,7 +14056,7 @@
   },
   "ForceLogoutUnauthenticatedUserEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13880,7 +14097,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13964,7 +14182,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -13996,7 +14215,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -14017,7 +14237,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -14042,7 +14263,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": true,
     "policy_pref_mapping_tests": [
@@ -14061,7 +14283,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -14097,7 +14320,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -14116,7 +14340,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -14181,7 +14406,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14211,7 +14437,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -14232,7 +14459,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -14270,7 +14498,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14288,7 +14517,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14306,7 +14536,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -14327,7 +14558,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -14348,7 +14580,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -14369,7 +14602,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "note": "TODO(http://crbug.com/106682): Flag this with can_be_recommended when bug is fixed.",
     "policy_pref_mapping_tests": [
@@ -14387,7 +14621,7 @@
   },
   "DataLeakPreventionClipboardCheckSizeLimit": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": false,
     "policy_pref_mapping_tests": [
@@ -14405,7 +14639,7 @@
   },
   "DataLeakPreventionReportingEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": false,
     "policy_pref_mapping_tests": [
@@ -14423,7 +14657,7 @@
   },
   "DataLeakPreventionRulesList": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14489,7 +14723,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14507,7 +14742,7 @@
   },
   "EduCoexistenceToSVersion": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14525,7 +14760,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14563,7 +14799,7 @@
   },
   "LacrosAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14586,7 +14822,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14657,7 +14894,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14694,7 +14932,7 @@
   },
   "DeviceSystemWideTracingEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14765,7 +15003,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14817,7 +15056,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -14833,7 +15073,8 @@
   },
   "LacrosSecondaryProfilesAllowed": {
     "os": [
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14922,7 +15163,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos"
+      "chromeos_ash",
+      "chromeos_lacros"
     ],
     "can_be_recommended": false,
     "policy_pref_mapping_tests": [
@@ -14941,7 +15183,7 @@
   },
   "PdfAnnotationsEnabled": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -14959,7 +15201,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -14984,7 +15227,7 @@
   },
   "SuggestLogoutAfterClosingLastWindow": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -15009,7 +15252,7 @@
   },
   "LacrosAvailability": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "can_be_recommended": false,
     "policy_pref_mapping_tests": [
@@ -15180,7 +15423,7 @@
   },
   "ManagedAccountsSigninRestriction.CrOS": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "reason_for_missing_test": "TODO(crbug.com/1213429) future policy"
   },
@@ -15189,7 +15432,8 @@
       "win",
       "linux",
       "mac",
-      "chromeos",
+      "chromeos_ash",
+      "chromeos_lacros",
       "android"
     ],
     "policy_pref_mapping_tests": [
@@ -15230,7 +15474,7 @@
   },
   "RestrictedManagedGuestSessionExtensionCleanupExemptList": {
     "os": [
-      "chromeos"
+      "chromeos_ash"
     ],
     "policy_pref_mapping_tests": [
       {
@@ -15259,4 +15503,4 @@
       }
     ]
   }
-}
\ No newline at end of file
+}
diff --git a/chrome/test/data/webui/chromeos/ash_common/navigation_view_panel_test.js b/chrome/test/data/webui/chromeos/ash_common/navigation_view_panel_test.js
index 00291e3d..9a4b4c6 100644
--- a/chrome/test/data/webui/chromeos/ash_common/navigation_view_panel_test.js
+++ b/chrome/test/data/webui/chromeos/ash_common/navigation_view_panel_test.js
@@ -60,14 +60,26 @@
     return navElements;
   }
 
-  test('oneEntry', async () => {
+  /**
+   * Adds a section to the navigation element.
+   * @param {string} name
+   * @param {string} pageType
+   * @param {string} icon
+   * @param {?string} id
+   * @param {!Array<SelectorItem>} subItems
+   * @return {!Promise}
+   */
+  function addNavigationSection(
+      name, pageType, icon = '', id = null, subItems = []) {
+    viewElement.addSelector(name, pageType, icon, id, subItems);
+    return flushTasks();
+  }
+
+  test('twoEntries', async () => {
     const dummyPage1 = 'dummy-page1';
     const dummyPage2 = 'dummy-page2';
-
-    viewElement.addSelector('dummyPage1', dummyPage1);
-    viewElement.addSelector('dummyPage2', dummyPage2);
-
-    await flushTasks();
+    await addNavigationSection('dummyPage1', dummyPage1);
+    await addNavigationSection('dummyPage2', dummyPage2);
 
     // Click the first menu item. Expect that the dummyPage1 to be created and
     // not hidden.
@@ -105,10 +117,7 @@
 
   test('notifyEvent', async () => {
     const dummyPage1 = 'dummy-page1';
-
-    viewElement.addSelector('dummyPage1', dummyPage1);
-
-    await flushTasks();
+    await addNavigationSection('dummyPage1', dummyPage1);
 
     // Create the element.
     const navElements = getNavElements();
@@ -131,9 +140,8 @@
     const dummyPage1 = 'dummy-page1';
     const dummyPage2 = 'dummy-page2';
 
-    viewElement.addSelector('dummyPage1', dummyPage1);
-    viewElement.addSelector('dummyPage2', dummyPage2);
-    await flushTasks();
+    await addNavigationSection('dummyPage1', dummyPage1);
+    await addNavigationSection('dummyPage2', dummyPage2);
 
     assertFalse(viewElement.shadowRoot.querySelector(`#${dummyPage1}`).hidden);
     assertFalse(!!viewElement.shadowRoot.querySelector(`#${dummyPage2}`));
@@ -145,9 +153,8 @@
     const id2 = 'id2';
 
     // Add two pages of the the same type with different ids.
-    viewElement.addSelector('Page 1', pageType, /*icon=*/ '', 'id1');
-    viewElement.addSelector('Page 2', pageType, /*icon=*/ '', 'id2');
-    await flushTasks();
+    await addNavigationSection('Page 1', pageType, /*icon=*/ '', 'id1');
+    await addNavigationSection('Page 2', pageType, /*icon=*/ '', 'id2');
 
     // First page should be created by default.
     assertTrue(!!viewElement.shadowRoot.querySelector(`#${id1}`));
@@ -176,15 +183,11 @@
         /** @type {SelectorItem} */ (
             {'name': 'subItem', 'pageIs': subPage, 'id': subid});
 
-    viewElement.addSelector('dummyPage1', dummyPage1, '', id1, [subItem]);
-    viewElement.addSelector('dummyPage2', dummyPage2);
-    await flushTasks();
+    await addNavigationSection('dummyPage1', dummyPage1, '', id1, [subItem]);
+    await addNavigationSection('dummyPage2', dummyPage2);
 
-    // Sub page of selected item will be created but hidden.
-    assertTrue(!!viewElement.shadowRoot.querySelector(`#${subid}`));
-    assertFalse(viewElement.shadowRoot.querySelector(`#${subid}`).hidden);
-
-    // Second page won't be created yet.
+    // The pages are not created yet.
+    assertFalse(!!viewElement.shadowRoot.querySelector(`#${id1}`));
     assertFalse(!!viewElement.shadowRoot.querySelector(`#${dummyPage2}`));
   });
 }
diff --git a/chrome/test/data/webui/settings/test_reset_browser_proxy.js b/chrome/test/data/webui/settings/test_reset_browser_proxy.js
index 4e5459c..d9870e6 100644
--- a/chrome/test/data/webui/settings/test_reset_browser_proxy.js
+++ b/chrome/test/data/webui/settings/test_reset_browser_proxy.js
@@ -14,7 +14,6 @@
       'onShowResetProfileDialog',
       'showReportedSettings',
       'getTriggeredResetToolName',
-      'onPowerwashDialogShow',
     ]);
   }
 
@@ -49,9 +48,4 @@
     this.methodCalled('getTriggeredResetToolName');
     return Promise.resolve('WonderfulAV');
   }
-
-  /** @override */
-  onPowerwashDialogShow() {
-    this.methodCalled('onPowerwashDialogShow');
-  }
 }
diff --git a/chrome/test/data/webui/signin/signin_reauth_test.js b/chrome/test/data/webui/signin/signin_reauth_test.js
index 46415c1..11f42d2 100644
--- a/chrome/test/data/webui/signin/signin_reauth_test.js
+++ b/chrome/test/data/webui/signin/signin_reauth_test.js
@@ -52,33 +52,22 @@
     return browserProxy.whenCalled('cancel');
   });
 
-  const requires_reauth_test_params = [
-    {
-      requires_reauth: true,
-    },
-    {
-      requires_reauth: false,
-    },
-  ];
+  test('ButtonsVisibilityAndFocus', async () => {
+    await browserProxy.whenCalled('initialize');
+    assertFalse(isVisible(app.$.confirmButton));
+    assertFalse(isVisible(app.$.cancelButton));
+    assertTrue(isVisible(app.$$('paper-spinner-lite')));
 
-  requires_reauth_test_params.forEach(function(params) {
-    test('ButtonsVisibilityAndFocus', async () => {
-      await browserProxy.whenCalled('initialize');
-      assertFalse(isVisible(app.$.confirmButton));
-      assertFalse(isVisible(app.$.cancelButton));
-      assertTrue(isVisible(app.$$('paper-spinner-lite')));
+    webUIListenerCallback('reauth-type-determined');
+    flush();
 
-      webUIListenerCallback('reauth-type-received', params.requires_reauth);
-      flush();
+    assertTrue(isVisible(app.$.confirmButton));
+    assertTrue(isVisible(app.$.cancelButton));
+    assertFalse(isVisible(app.$$('paper-spinner-lite')));
 
-      assertTrue(isVisible(app.$.confirmButton));
-      assertTrue(isVisible(app.$.cancelButton));
-      assertFalse(isVisible(app.$$('paper-spinner-lite')));
+    assertEquals(getDeepActiveElement(), app.$.confirmButton);
 
-      assertEquals(getDeepActiveElement(), app.$.confirmButton);
-
-      assertDefaultLocale();
-      assertEquals('Yes', app.$.confirmButton.textContent.trim());
-    });
+    assertDefaultLocale();
+    assertEquals('Yes', app.$.confirmButton.textContent.trim());
   });
 });
diff --git a/chrome/test/webapps/coverage/coverage_cros.tsv b/chrome/test/webapps/coverage/coverage_cros.tsv
index f609e67..f4778b2 100644
--- a/chrome/test/webapps/coverage/coverage_cros.tsv
+++ b/chrome/test/webapps/coverage/coverage_cros.tsv
@@ -1,774 +1,774 @@
-# This is a generated file.

-# Full coverage: 13%, with partial coverage: 23%

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_menu_option_SiteA🌓	check_window_created🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteB🌑	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑

-install_omnibox_icon_SiteB🌕	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑

-install_menu_option_SiteB🌓	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑

-install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑

-navigate_crashed_url🌑	check_create_shortcut_not_shown🌑

-navigate_crashed_url🌑	check_install_icon_not_shown🌑

-navigate_notfound_url🌑	check_create_shortcut_not_shown🌑

-navigate_notfound_url🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

+# This is a generated file.
+# Full coverage: 13%, with partial coverage: 23%
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_menu_option_SiteA🌓	check_window_created🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteB🌑	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑
+install_omnibox_icon_SiteB🌕	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑
+install_menu_option_SiteB🌓	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑
+install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑
+navigate_crashed_url🌑	check_create_shortcut_not_shown🌑
+navigate_crashed_url🌑	check_install_icon_not_shown🌑
+navigate_notfound_url🌑	check_create_shortcut_not_shown🌑
+navigate_notfound_url🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
diff --git a/chrome/test/webapps/coverage/coverage_linux.tsv b/chrome/test/webapps/coverage/coverage_linux.tsv
index 21fa94ba8..d083c8b 100644
--- a/chrome/test/webapps/coverage/coverage_linux.tsv
+++ b/chrome/test/webapps/coverage/coverage_linux.tsv
@@ -1,841 +1,841 @@
-# This is a generated file.

-# Full coverage: 14%, with partial coverage: 24%

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_menu_option_SiteA🌓	check_window_created🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑

-navigate_crashed_url🌑	check_create_shortcut_not_shown🌑

-navigate_crashed_url🌑	check_install_icon_not_shown🌑

-navigate_notfound_url🌑	check_create_shortcut_not_shown🌑

-navigate_notfound_url🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑

-sync_turn_off🌕	install_create_shortcut_windowed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-sync_turn_off🌕	install_omnibox_icon_SiteA🌕	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-sync_turn_off🌕	install_menu_option_SiteA🌓	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-sync_turn_off🌕	install_create_shortcut_tabbed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-sync_turn_off🌕	install_create_shortcut_windowed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-sync_turn_off🌕	install_create_shortcut_tabbed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

+# This is a generated file.
+# Full coverage: 14%, with partial coverage: 24%
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_menu_option_SiteA🌓	check_window_created🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑
+navigate_crashed_url🌑	check_create_shortcut_not_shown🌑
+navigate_crashed_url🌑	check_install_icon_not_shown🌑
+navigate_notfound_url🌑	check_create_shortcut_not_shown🌑
+navigate_notfound_url🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑
+sync_turn_off🌕	install_create_shortcut_windowed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+sync_turn_off🌕	install_omnibox_icon_SiteA🌕	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+sync_turn_off🌕	install_menu_option_SiteA🌓	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+sync_turn_off🌕	install_create_shortcut_tabbed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+sync_turn_off🌕	install_create_shortcut_windowed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+sync_turn_off🌕	install_create_shortcut_tabbed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
diff --git a/chrome/test/webapps/coverage/coverage_mac.tsv b/chrome/test/webapps/coverage/coverage_mac.tsv
index 21fa94ba8..d083c8b 100644
--- a/chrome/test/webapps/coverage/coverage_mac.tsv
+++ b/chrome/test/webapps/coverage/coverage_mac.tsv
@@ -1,841 +1,841 @@
-# This is a generated file.

-# Full coverage: 14%, with partial coverage: 24%

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_menu_option_SiteA🌓	check_window_created🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑

-navigate_crashed_url🌑	check_create_shortcut_not_shown🌑

-navigate_crashed_url🌑	check_install_icon_not_shown🌑

-navigate_notfound_url🌑	check_create_shortcut_not_shown🌑

-navigate_notfound_url🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑

-sync_turn_off🌕	install_create_shortcut_windowed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-sync_turn_off🌕	install_omnibox_icon_SiteA🌕	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-sync_turn_off🌕	install_menu_option_SiteA🌓	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-sync_turn_off🌕	install_create_shortcut_tabbed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-sync_turn_off🌕	install_create_shortcut_windowed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-sync_turn_off🌕	install_create_shortcut_tabbed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

+# This is a generated file.
+# Full coverage: 14%, with partial coverage: 24%
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_menu_option_SiteA🌓	check_window_created🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑
+navigate_crashed_url🌑	check_create_shortcut_not_shown🌑
+navigate_crashed_url🌑	check_install_icon_not_shown🌑
+navigate_notfound_url🌑	check_create_shortcut_not_shown🌑
+navigate_notfound_url🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑
+sync_turn_off🌕	install_create_shortcut_windowed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+sync_turn_off🌕	install_omnibox_icon_SiteA🌕	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+sync_turn_off🌕	install_menu_option_SiteA🌓	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+sync_turn_off🌕	install_create_shortcut_tabbed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+sync_turn_off🌕	install_create_shortcut_windowed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+sync_turn_off🌕	install_create_shortcut_tabbed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
diff --git a/chrome/test/webapps/coverage/coverage_win.tsv b/chrome/test/webapps/coverage/coverage_win.tsv
index e71c6b4..0da8a774 100644
--- a/chrome/test/webapps/coverage/coverage_win.tsv
+++ b/chrome/test/webapps/coverage/coverage_win.tsv
@@ -1,844 +1,844 @@
-# This is a generated file.

-# Full coverage: 14%, with partial coverage: 24%

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	check_window_created🌕

-install_menu_option_SiteA🌓	check_window_created🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕

-install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕

-install_create_shortcut_windowed_SiteB🌑	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑

-install_omnibox_icon_SiteB🌕	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑

-install_menu_option_SiteB🌓	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑

-install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑

-install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑

-install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑

-install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑

-install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑

-install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑

-install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑

-install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕

-navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteA🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕

-switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑

-navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕

-navigate_browser_SiteC🌕	check_create_shortcut_shown🌑

-navigate_browser_SiteC🌕	check_install_icon_not_shown🌕

-navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑

-navigate_crashed_url🌑	check_create_shortcut_not_shown🌑

-navigate_crashed_url🌑	check_install_icon_not_shown🌑

-navigate_notfound_url🌑	check_create_shortcut_not_shown🌑

-navigate_notfound_url🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑

-navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑

-sync_turn_off🌕	install_create_shortcut_windowed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-sync_turn_off🌕	install_omnibox_icon_SiteA🌕	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-sync_turn_off🌕	install_menu_option_SiteA🌓	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓

-sync_turn_off🌕	install_create_shortcut_tabbed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑

-sync_turn_off🌕	install_create_shortcut_windowed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-sync_turn_off🌕	install_create_shortcut_tabbed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

-install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑

+# This is a generated file.
+# Full coverage: 14%, with partial coverage: 24%
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	chrome_update🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	chrome_update🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	chrome_update🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	clear_app_badge_SiteA🌑	check_app_badge_empty_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	close_custom_toolbar🌑	check_navigation_start_url🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_list_empty🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_list_empty🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_profile🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_profile🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	check_window_created🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	check_window_created🌕
+install_menu_option_SiteA🌓	check_window_created🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	check_app_in_list_tabbed_SiteC🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	check_app_in_list_tabbed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_not_shown🌕
+install_policy_app_tabbed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteA🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteB🌕	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteB🌑	navigate_browser_SiteB🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_menu_option_SiteB🌓	navigate_browser_SiteB🌕	check_launch_icon_shown🌕
+install_create_shortcut_windowed_SiteB🌑	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑
+install_omnibox_icon_SiteB🌕	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑
+install_menu_option_SiteB🌓	check_platform_shortcut_right_click_menu_has_actions_SiteB🌑
+install_create_shortcut_windowed_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	check_app_in_list_windowed_SiteC🌑
+install_policy_app_windowed_shortcut_SiteC🌓	check_app_in_list_windowed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_create_shortcut_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteC🌓	navigate_browser_SiteC🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	check_platform_shortcut_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_color_correct🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_colors_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_color_correct🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_browser_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_display_minimal_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_minimal🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_display_minimal_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	install_locally_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	install_locally_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	set_open_in_window_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	set_open_in_window_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_omnibox_icon_SiteA🌕	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_policy_app_windowed_shortcut_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_menu_option_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_window_display_standalone🌑
+install_menu_option_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_window_display_standalone🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_omnibox_icon_SiteA🌕	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_menu_option_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_window_created🌑
+install_menu_option_SiteA🌓	delete_platform_shortcut_SiteA🌑	create_shortcuts_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	set_open_in_tab_SiteA🌑	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_policy_app_windowed_shortcut_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_menu_option_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_launch_icon_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_chrome_apps_SiteA🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	launch_from_platform_shortcut_SiteA🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_windowed_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_omnibox_icon_SiteB🌕	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_no_shortcut_SiteB🌑	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_policy_app_windowed_shortcut_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_menu_option_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_launch_icon_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_chrome_apps_SiteB🌑	check_window_display_minimal🌑
+install_menu_option_SiteB🌓	launch_from_platform_shortcut_SiteB🌑	check_window_display_minimal🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_tab_created🌑
+install_policy_app_tabbed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_no_shortcut_SiteC🌑	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_menu_option_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_launch_icon_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_chrome_apps_SiteC🌑	check_window_created🌑
+install_policy_app_windowed_shortcut_SiteC🌓	launch_from_platform_shortcut_SiteC🌑	check_window_created🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_app_in_list_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	close_pwa🌑	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_omnibox_icon_SiteA🌕	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_menu_option_SiteA🌓	close_pwa🌕	manifest_update_icons_SiteA🌑	check_platform_shortcut_icon_correct_SiteA🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	manifest_update_scope_site_a_foo_to_SiteA🌑	close_pwa🌑	launch_from_platform_shortcut_SiteAFoo🌑	close_pwa🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteABar🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_install_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteAFoo🌑	navigate_browser_SiteABar🌑	check_launch_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteAFoo🌓	navigate_browser_SiteABar🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_install_icon_not_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_install_icon_not_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	navigate_browser_SiteAFoo🌑	check_launch_icon_shown🌑
+install_policy_app_windowed_shortcut_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteAFoo🌕	check_launch_icon_shown🌕
+navigate_browser_SiteAFoo🌕	check_install_icon_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteA🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteA🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	navigate_browser_SiteB🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	navigate_browser_SiteB🌕	check_launch_icon_not_shown🌕
+switch_incognito_profile🌑	navigate_browser_SiteC🌑	check_create_shortcut_not_shown🌑
+navigate_browser_SiteC🌕	check_app_not_in_list_SiteA🌕
+navigate_browser_SiteC🌕	check_create_shortcut_shown🌑
+navigate_browser_SiteC🌕	check_install_icon_not_shown🌕
+navigate_browser_SiteC🌕	check_platform_shortcut_not_exists_SiteA🌑
+navigate_crashed_url🌑	check_create_shortcut_not_shown🌑
+navigate_crashed_url🌑	check_install_icon_not_shown🌑
+navigate_notfound_url🌑	check_create_shortcut_not_shown🌑
+navigate_notfound_url🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteAFoo🌑	close_pwa🌑	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_omnibox_icon_SiteAFoo🌕	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_menu_option_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_launch_icon_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_chrome_apps_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_menu_option_SiteAFoo🌓	close_pwa🌕	manifest_update_scope_site_a_foo_to_SiteA🌑	launch_from_platform_shortcut_SiteAFoo🌑	navigate_pwa_site_a_foo_to_SiteABar🌑	check_no_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_toolbar🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	check_window_title_is_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_windowed_SiteA🌑	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_omnibox_icon_SiteA🌕	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_menu_option_SiteA🌓	navigate_pwa_site_a_to_SiteB🌑	open_in_chrome🌑	check_tab_created🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_windowed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	install_policy_app_tabbed_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_menu_option_SiteA🌓	install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_policy_app_windowed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_windowed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_omnibox_icon_SiteA🌕	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_shortcut_SiteA🌓	install_menu_option_SiteA🌓	uninstall_policy_app_SiteA🌕	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_create_shortcut_windowed_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_omnibox_icon_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_policy_app_tabbed_no_shortcut_SiteA🌑	install_menu_option_SiteA🌑	uninstall_policy_app_SiteA🌑	check_platform_shortcut_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+install_menu_option_SiteA🌓	set_app_badge_SiteA🌑	check_app_badge_has_value_SiteA🌑
+navigate_browser_SiteA🌕	set_app_badge_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	check_app_in_list_tabbed_SiteA🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	check_app_in_list_tabbed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	set_open_in_tab_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	set_open_in_tab_SiteA🌓	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	check_app_in_list_windowed_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	set_open_in_window_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+switch_incognito_profile🌑	navigate_browser_SiteA🌑	check_install_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	switch_profile_clients_UserAClient2🌑	check_platform_shortcut_not_exists_SiteC🌑
+sync_turn_off🌕	install_create_shortcut_windowed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+sync_turn_off🌕	install_omnibox_icon_SiteA🌕	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+sync_turn_off🌕	install_menu_option_SiteA🌓	sync_turn_on🌕	switch_profile_clients_UserAClient2🌕	check_app_in_list_not_locally_installed_SiteA🌓
+sync_turn_off🌕	install_create_shortcut_tabbed_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteA🌑
+sync_turn_off🌕	install_create_shortcut_windowed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+sync_turn_off🌕	install_create_shortcut_tabbed_SiteC🌑	sync_turn_on🌑	switch_profile_clients_UserAClient2🌑	check_app_in_list_not_locally_installed_SiteC🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	sync_turn_off🌕	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	sync_turn_off🌑	uninstall_from_app_list_SiteA🌑	sync_turn_on🌑	switch_profile_clients_UserAClient1🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_app_not_in_list_SiteA🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_install_icon_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_install_icon_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	navigate_browser_SiteA🌕	check_launch_icon_not_shown🌕
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	navigate_browser_SiteA🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_omnibox_icon_SiteA🌕	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_menu_option_SiteA🌓	uninstall_from_menu_SiteA🌕	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_app_list_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	uninstall_from_menu_SiteA🌑	check_platform_shortcut_not_exists_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	navigate_browser_SiteC🌑	check_launch_icon_not_shown🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_app_list_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_tabbed_SiteC🌑	uninstall_from_menu_SiteC🌑	check_platform_shortcut_not_exists_SiteC🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_windowed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_omnibox_icon_SiteA🌕	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_menu_option_SiteA🌓	switch_profile_clients_UserAClient2🌕	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
+install_create_shortcut_tabbed_SiteA🌑	switch_profile_clients_UserAClient2🌑	uninstall_from_app_list_SiteA🌑	switch_profile_clients_UserAClient1🌑	check_app_not_in_list_SiteA🌑
diff --git a/chrome/test/webapps/models.py b/chrome/test/webapps/models.py
index 1e31df00..51e76feb7 100755
--- a/chrome/test/webapps/models.py
+++ b/chrome/test/webapps/models.py
@@ -216,14 +216,34 @@
 
     def generate_browsertest(self, test_partition: "TestPartitionDescription"
                              ) -> str:
+        def create_before_action_method(action: Action):
+            method = "BeforeState"
+            if action.type == ActionType.STATE_CHECK:
+                method += "CheckAction();"
+            else:
+                method += "ChangeAction();"
+            return method
+
+        def create_after_action_method(action: Action):
+            method = "AfterState"
+            if action.type == ActionType.STATE_CHECK:
+                method += "CheckAction()"
+            else:
+                method += "ChangeAction()"
+            return method
+
         comments = [
             "Test contents are generated by script. Please do not modify!",
             "See `chrome/test/webapps/README.md` for more info.",
             "Sheriffs: Disabling this test is supported."
         ]
         body = ''.join(["  // " + comment + "\n" for comment in comments])
-        body += '\n'.join(
-            ["  " + action.cpp_method + ";" for action in self.actions])
+        body += '\n\n'.join([
+            (f"  helper_.{create_before_action_method(action)}\n"
+             f"  helper_.{action.cpp_method};\n"
+             f"  helper_.{create_after_action_method(action)};")
+            for action in self.actions
+        ])
         return (f"IN_PROC_BROWSERTEST_F("
                 f"{test_partition.test_fixture}, "
                 f"{CoverageTest.TEST_ID_PREFIX}{self.id}){{\n"
diff --git a/chrome/updater/test/integration_tests_impl.cc b/chrome/updater/test/integration_tests_impl.cc
index f6080ff..43ab3af 100644
--- a/chrome/updater/test/integration_tests_impl.cc
+++ b/chrome/updater/test/integration_tests_impl.cc
@@ -65,11 +65,15 @@
 }
 
 void ExpectVersionActive(const std::string& version) {
-  EXPECT_EQ(CreateGlobalPrefs(GetUpdaterScope())->GetActiveVersion(), version);
+  scoped_refptr<GlobalPrefs> prefs = CreateGlobalPrefs(GetUpdaterScope());
+  ASSERT_NE(prefs, nullptr) << "Failed to acquire GlobalPrefs.";
+  EXPECT_EQ(prefs->GetActiveVersion(), version);
 }
 
 void ExpectVersionNotActive(const std::string& version) {
-  EXPECT_NE(CreateGlobalPrefs(GetUpdaterScope())->GetActiveVersion(), version);
+  scoped_refptr<GlobalPrefs> prefs = CreateGlobalPrefs(GetUpdaterScope());
+  ASSERT_NE(prefs, nullptr) << "Failed to acquire GlobalPrefs.";
+  EXPECT_NE(prefs->GetActiveVersion(), version);
 }
 
 void PrintLog(UpdaterScope scope) {
diff --git a/chromecast/browser/test/cast_features_browsertest.cc b/chromecast/browser/test/cast_features_browsertest.cc
index f9cba27c..1b6a21e 100644
--- a/chromecast/browser/test/cast_features_browsertest.cc
+++ b/chromecast/browser/test/cast_features_browsertest.cc
@@ -133,7 +133,7 @@
     ScopedUserPrefUpdate<base::DictionaryValue, base::Value::Type::DICTIONARY>
         dict(pref_service(), prefs::kLatestDCSFeatures);
     for (auto f : features)
-      dict->Remove(f.name, nullptr);
+      dict->RemoveKey(f.name);
     pref_service()->CommitPendingWrite();
   }
 
diff --git a/chromecast/cast_core/BUILD.gn b/chromecast/cast_core/BUILD.gn
index 1d0e071..1a506006 100644
--- a/chromecast/cast_core/BUILD.gn
+++ b/chromecast/cast_core/BUILD.gn
@@ -221,10 +221,6 @@
     "cast_runtime_service.h",
   ]
 
-  if (chromecast_branding == "public") {
-    sources += [ "cast_runtime_service_simple.cc" ]
-  }
-
   deps = [
     "//base",
     "//chromecast:chromecast_buildflags",
@@ -232,6 +228,26 @@
   ]
 
   public_deps = [ "//chromecast/media/cma/backend/proxy:headers" ]
+
+  if (!enable_cast_media_runtime) {
+    sources += [ "cast_runtime_service_simple.cc" ]
+  } else {
+    sources += [
+      "cast_runtime_service_impl.cc",
+      "cast_runtime_service_impl.h",
+    ]
+
+    public_deps += [
+      ":core_runtime",
+      ":metrics_recorder",
+    ]
+
+    deps += [ "//chromecast/metrics:cast_event_builder_simple" ]
+
+    if (chromecast_branding == "public") {
+      sources += [ "cast_runtime_service_impl_factory.cc" ]
+    }
+  }
 }
 
 cast_source_set("cast_core") {
diff --git a/chromecast/cast_core/cast_runtime_service.cc b/chromecast/cast_core/cast_runtime_service.cc
index 9fd7c865..cec7bba 100644
--- a/chromecast/cast_core/cast_runtime_service.cc
+++ b/chromecast/cast_core/cast_runtime_service.cc
@@ -3,14 +3,6 @@
 // found in the LICENSE file.
 
 #include "chromecast/cast_core/cast_runtime_service.h"
-#include "chromecast/chromecast_buildflags.h"
-
-#if BUILDFLAG(ENABLE_CAST_MEDIA_RUNTIME)
-#include "chromecast/browser/cast_browser_process.h"  // nogncheck
-#else  // BUILDFLAG(ENABLE_CAST_MEDIA_RUNTIME)
-#include "base/bind.h"
-#include "base/no_destructor.h"
-#endif  // BUILDFLAG(ENABLE_CAST_MEDIA_RUNTIME)
 
 namespace chromecast {
 namespace {
@@ -19,25 +11,7 @@
 
 }  // namespace
 
-// static
-CastRuntimeService* CastRuntimeService::GetInstance() {
-#if BUILDFLAG(ENABLE_CAST_MEDIA_RUNTIME)
-  DCHECK(shell::CastBrowserProcess::GetInstance());
-  auto* cast_service = shell::CastBrowserProcess::GetInstance()->cast_service();
-  DCHECK(cast_service);
-  return static_cast<CastRuntimeService*>(cast_service);
-#else
-  // TODO(b/186668532): Instead use the CastService singleton instead of
-  // creating a new one with NoDestructor.
-  static base::NoDestructor<CastRuntimeService> g_instance(base::BindRepeating(
-      []() -> network::mojom::NetworkContext* { return nullptr; }));
-  return g_instance.get();
-#endif  // BUILDFLAG(ENABLE_CAST_MEDIA_RUNTIME)
-}
-
-CastRuntimeService::CastRuntimeService(
-    NetworkContextGetter network_context_getter)
-    : network_context_getter_(std::move(network_context_getter)) {}
+CastRuntimeService::CastRuntimeService() = default;
 
 CastRuntimeService::~CastRuntimeService() = default;
 
diff --git a/chromecast/cast_core/cast_runtime_service.h b/chromecast/cast_core/cast_runtime_service.h
index ff168e8..4fee2b9 100644
--- a/chromecast/cast_core/cast_runtime_service.h
+++ b/chromecast/cast_core/cast_runtime_service.h
@@ -61,7 +61,7 @@
   // Returns current instance of CastRuntimeService in the browser process.
   static CastRuntimeService* GetInstance();
 
-  explicit CastRuntimeService(NetworkContextGetter network_context_getter);
+  CastRuntimeService();
   ~CastRuntimeService() override;
 
   virtual WebCryptoServer* GetWebCryptoServer();
@@ -75,14 +75,6 @@
 
   // CastRuntimeAudioChannelEndpointManager overrides.
   const std::string& GetAudioChannelEndpoint() override;
-
- protected:
-  NetworkContextGetter network_context_getter() {
-    return network_context_getter_;
-  }
-
- private:
-  NetworkContextGetter network_context_getter_;
 };
 
 }  // namespace chromecast
diff --git a/chromecast/cast_core/cast_runtime_service_impl.cc b/chromecast/cast_core/cast_runtime_service_impl.cc
new file mode 100644
index 0000000..5583324c
--- /dev/null
+++ b/chromecast/cast_core/cast_runtime_service_impl.cc
@@ -0,0 +1,64 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromecast/cast_core/cast_runtime_service_impl.h"
+
+#include "base/command_line.h"
+#include "base/process/process.h"
+#include "chromecast/browser/cast_browser_process.h"
+#include "chromecast/metrics/cast_event_builder_simple.h"
+
+namespace chromecast {
+namespace {
+
+const char kCastCoreRuntimeIdSwitch[] = "cast-core-runtime-id";
+const char kRuntimeServicePathSwitch[] = "runtime-service-path";
+
+}  // namespace
+
+// static
+CastRuntimeService* CastRuntimeService::GetInstance() {
+  DCHECK(shell::CastBrowserProcess::GetInstance());
+  auto* cast_service = shell::CastBrowserProcess::GetInstance()->cast_service();
+  DCHECK(cast_service);
+  return static_cast<CastRuntimeService*>(cast_service);
+}
+
+CastRuntimeServiceImpl::CastRuntimeServiceImpl(
+    content::BrowserContext* browser_context,
+    CastWindowManager* window_manager,
+    NetworkContextGetter network_context_getter)
+    : network_context_getter_(std::move(network_context_getter)),
+      runtime_service_(browser_context, window_manager, this) {}
+
+CastRuntimeServiceImpl::~CastRuntimeServiceImpl() = default;
+
+void CastRuntimeServiceImpl::StartInternal() {
+  CastRuntimeService::StartInternal();
+
+  auto* command_line = base::CommandLine::ForCurrentProcess();
+  std::string runtime_id =
+      command_line->GetSwitchValueASCII(kCastCoreRuntimeIdSwitch);
+  std::string runtime_service_path =
+      command_line->GetSwitchValueASCII(kRuntimeServicePathSwitch);
+  if (!runtime_service_.Start(runtime_id, runtime_service_path)) {
+    base::Process::TerminateCurrentProcessImmediately(1);
+  }
+}
+
+void CastRuntimeServiceImpl::StopInternal() {
+  CastRuntimeService::StopInternal();
+
+  runtime_service_.Stop();
+}
+
+std::unique_ptr<CastEventBuilder> CastRuntimeServiceImpl::CreateEventBuilder() {
+  return std::make_unique<CastEventBuilderSimple>();
+}
+
+const std::string& CastRuntimeServiceImpl::GetAudioChannelEndpoint() {
+  return runtime_service_.GetCastMediaServiceGrpcEndpoint();
+}
+
+}  // namespace chromecast
diff --git a/chromecast/cast_core/cast_runtime_service_impl.h b/chromecast/cast_core/cast_runtime_service_impl.h
new file mode 100644
index 0000000..a7fff01e
--- /dev/null
+++ b/chromecast/cast_core/cast_runtime_service_impl.h
@@ -0,0 +1,57 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMECAST_CAST_CORE_CAST_RUNTIME_SERVICE_IMPL_H_
+#define CHROMECAST_CAST_CORE_CAST_RUNTIME_SERVICE_IMPL_H_
+
+#include <memory>
+
+#include "chromecast/cast_core/cast_runtime_metrics_recorder.h"
+#include "chromecast/cast_core/cast_runtime_service.h"
+#include "chromecast/cast_core/runtime_service.h"
+
+namespace content {
+class BrowserContext;
+}  // namespace content
+
+namespace chromecast {
+
+class CastWindowManager;
+
+class CastEventBuilder;
+
+// This interface is to be used for building the Cast Runtime Service and act as
+// the border between shared Chromium code and the specifics of that
+// implementation.
+class CastRuntimeServiceImpl
+    : public CastRuntimeService,
+      public CastRuntimeMetricsRecorder::EventBuilderFactory {
+ public:
+  CastRuntimeServiceImpl(content::BrowserContext* browser_context,
+                         CastWindowManager* window_manager,
+                         NetworkContextGetter network_context_getter);
+  ~CastRuntimeServiceImpl() override;
+
+  // CastService overrides.
+  void StartInternal() override;
+  void StopInternal() override;
+  const std::string& GetAudioChannelEndpoint() override;
+
+ protected:
+  // CastRuntimeMetricsRecorder::EventBuilderFactory overrides.
+  std::unique_ptr<CastEventBuilder> CreateEventBuilder() override;
+
+  NetworkContextGetter network_context_getter() {
+    return network_context_getter_;
+  }
+
+ private:
+  NetworkContextGetter network_context_getter_;
+
+  RuntimeService runtime_service_;
+};
+
+}  // namespace chromecast
+
+#endif  // CHROMECAST_CAST_CORE_CAST_RUNTIME_SERVICE_IMPL_H_
diff --git a/chromecast/cast_core/cast_runtime_service_impl_factory.cc b/chromecast/cast_core/cast_runtime_service_impl_factory.cc
new file mode 100644
index 0000000..b3094df
--- /dev/null
+++ b/chromecast/cast_core/cast_runtime_service_impl_factory.cc
@@ -0,0 +1,22 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/single_thread_task_runner.h"
+#include "chromecast/cast_core/cast_runtime_service.h"
+#include "chromecast/cast_core/cast_runtime_service_impl.h"
+
+namespace chromecast {
+
+std::unique_ptr<CastRuntimeService> CastRuntimeService::Create(
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+    content::BrowserContext* browser_context,
+    CastWindowManager* window_manager,
+    media::MediaPipelineBackendManager* media_pipeline_backend_manager,
+    CastRuntimeService::NetworkContextGetter network_context_getter,
+    PrefService* pref_service) {
+  return std::make_unique<CastRuntimeServiceImpl>(
+      browser_context, window_manager, std::move(network_context_getter));
+}
+
+}  // namespace chromecast
diff --git a/chromecast/cast_core/cast_runtime_service_simple.cc b/chromecast/cast_core/cast_runtime_service_simple.cc
index f9698da..754bc0e 100644
--- a/chromecast/cast_core/cast_runtime_service_simple.cc
+++ b/chromecast/cast_core/cast_runtime_service_simple.cc
@@ -4,6 +4,7 @@
 
 #include "chromecast/cast_core/cast_runtime_service.h"
 
+#include "base/no_destructor.h"
 #include "base/single_thread_task_runner.h"
 
 namespace chromecast {
@@ -16,8 +17,14 @@
     media::MediaPipelineBackendManager* media_pipeline_backend_manager,
     CastRuntimeService::NetworkContextGetter network_context_getter,
     PrefService* pref_service) {
-  return std::make_unique<CastRuntimeService>(
-      std::move(network_context_getter));
+  return std::make_unique<CastRuntimeService>();
+}
+
+CastRuntimeService* CastRuntimeService::GetInstance() {
+  // TODO(b/186668532): Instead use the CastService singleton instead of
+  // creating a new one with NoDestructor.
+  static base::NoDestructor<CastRuntimeService> g_instance;
+  return g_instance.get();
 }
 
 }  // namespace chromecast
diff --git a/chromecast/cast_core/runtime_service.cc b/chromecast/cast_core/runtime_service.cc
index 9a869a25..e34b1f3 100644
--- a/chromecast/cast_core/runtime_service.cc
+++ b/chromecast/cast_core/runtime_service.cc
@@ -46,13 +46,16 @@
   delete this;
 }
 
-RuntimeService::RuntimeService(content::BrowserContext* browser_context,
-                               CastWindowManager* window_manager)
+RuntimeService::RuntimeService(
+    content::BrowserContext* browser_context,
+    CastWindowManager* window_manager,
+    CastRuntimeMetricsRecorder::EventBuilderFactory* event_builder_factory)
     : GrpcServer(base::SequencedTaskRunnerHandle::Get()),
       web_view_factory_(std::make_unique<CastWebViewFactory>(browser_context)),
       web_service_(std::make_unique<CastWebService>(browser_context,
                                                     web_view_factory_.get(),
-                                                    window_manager)) {
+                                                    window_manager)),
+      metrics_recorder_(event_builder_factory) {
   shell::CastBrowserProcess::GetInstance()->SetWebViewFactory(
       web_view_factory_.get());
 }
@@ -205,7 +208,7 @@
       std::move(metrics_channel));
   metrics_recorder_service_ =
       std::make_unique<CastRuntimeMetricsRecorderService>(
-          metrics_recorder_.get(), &action_recorder_, this,
+          &metrics_recorder_, &action_recorder_, this,
           kDefaultMetricsReportInterval);
   DVLOG(2) << "MetricsRecorderService started";
   callback->StepGRPC(grpc::Status::OK);
diff --git a/chromecast/cast_core/runtime_service.h b/chromecast/cast_core/runtime_service.h
index 9dd3677..9f58230 100644
--- a/chromecast/cast_core/runtime_service.h
+++ b/chromecast/cast_core/runtime_service.h
@@ -33,8 +33,10 @@
                              public RuntimeServiceDelegate,
                              public MetricsRecorderGrpc {
  public:
-  RuntimeService(content::BrowserContext* browser_context,
-                 CastWindowManager* window_manager);
+  RuntimeService(
+      content::BrowserContext* browser_context,
+      CastWindowManager* window_manager,
+      CastRuntimeMetricsRecorder::EventBuilderFactory* event_builder_factory);
   ~RuntimeService() override;
 
   // Starts and stops the runtime service, including the gRPC completion queue.
@@ -109,8 +111,7 @@
 
   // Allows histogram and action recording, which can be reported by
   // CastRuntimeMetricsRecorderService if Cast Core starts it.
-  // TODO: Initialize this variable.
-  std::unique_ptr<CastRuntimeMetricsRecorder> metrics_recorder_;
+  CastRuntimeMetricsRecorder metrics_recorder_;
   CastRuntimeActionRecorder action_recorder_;
 
   std::string runtime_id_;
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index ba6655a..aea4165f 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-14123.0.0
\ No newline at end of file
+14128.0.0
\ No newline at end of file
diff --git a/chromeos/components/camera_app_ui/resources/js/main.js b/chromeos/components/camera_app_ui/resources/js/main.js
index cffb9220b..a974def 100644
--- a/chromeos/components/camera_app_ui/resources/js/main.js
+++ b/chromeos/components/camera_app_ui/resources/js/main.js
@@ -315,11 +315,13 @@
       });
       const results = await Promise.allSettled(
           preloadImagesList.map((name) => loadImage(`/images/${name}`)));
-      const failure = results.find(({status}) => status === 'rejected');
-      if (failure !== undefined) {
-        reportError(
-            ErrorType.PRELOAD_IMAGE_FAILURE, ErrorLevel.ERROR,
-            assertInstanceof(failure.reason, Error));
+      for (const result of results) {
+        if (result.status === 'rejected') {
+          reportError(
+              ErrorType.PRELOAD_IMAGE_FAILURE, ErrorLevel.ERROR,
+              assertInstanceof(result.reason, Error));
+          break;
+        }
       }
     })();
 
diff --git a/chromeos/components/camera_app_ui/resources/js/preload_images.d.ts b/chromeos/components/camera_app_ui/resources/js/preload_images.d.ts
new file mode 100644
index 0000000..1febe68c
--- /dev/null
+++ b/chromeos/components/camera_app_ui/resources/js/preload_images.d.ts
@@ -0,0 +1,8 @@
+// Copyright 2021 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.
+
+// TODO(pihsun): Remove this file once we have generated preload_images.js
+// checked into the source tree.
+
+export const preloadImagesList: string[];
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt
index d94ebf9f8..59a9fb037 100644
--- a/chromeos/profiles/bigcore.afdo.newest.txt
+++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-bigcore-93-4577.5-1627292532-benchmark-93.0.4577.21-r1-redacted.afdo.xz
+chromeos-chrome-amd64-bigcore-93-4577.5-1627292532-benchmark-93.0.4577.22-r1-redacted.afdo.xz
diff --git a/chromeos/services/cros_healthd/OWNERS b/chromeos/services/cros_healthd/OWNERS
index 5dbf751..be1eb14 100644
--- a/chromeos/services/cros_healthd/OWNERS
+++ b/chromeos/services/cros_healthd/OWNERS
@@ -1 +1,5 @@
 pmoy@chromium.org
+
+menghuan@chromium.org
+kerker@chromium.org
+chungsheng@chromium.org
diff --git a/components/accuracy_tips/accuracy_service.cc b/components/accuracy_tips/accuracy_service.cc
index 9f07d08..4bc8bda5c 100644
--- a/components/accuracy_tips/accuracy_service.cc
+++ b/components/accuracy_tips/accuracy_service.cc
@@ -25,6 +25,24 @@
 
 namespace accuracy_tips {
 
+// Returns a suffix for accuracy tips histograms.
+// Needs to match AccuracyTipInteractions from histogram_suffixes_list.xml.
+const std::string GetHistogramSuffix(AccuracyTipUI::Interaction interaction) {
+  switch (interaction) {
+    case AccuracyTipUI::Interaction::kNoAction:
+      return "NoAction";
+    case AccuracyTipUI::Interaction::kLearnMore:
+      return "LearnMore";
+    case AccuracyTipUI::Interaction::kOptOut:
+      return "OptOut";
+    case AccuracyTipUI::Interaction::kClosed:
+      return "Closed";
+    case AccuracyTipUI::Interaction::kDisabledByExperiment:
+      NOTREACHED();  // We don't need specific histograms for this.
+      return "";
+  }
+}
+
 // Returns the preference to store feature state in. Uses a different pref if
 // the UI is disabled to avoid dark-launch experiments affecting real usage.
 const char* GetLastShownPrefName(bool disable_ui) {
@@ -84,7 +102,7 @@
   const base::Value* last_interactions =
       pref_service_->Get(GetPreviousInteractionsPrefName(disable_ui_));
   const base::Value opt_out_value(
-      static_cast<int>(AccuracyTipUI::Interaction::kOptOutPressed));
+      static_cast<int>(AccuracyTipUI::Interaction::kOptOut));
   if (base::Contains(last_interactions->GetList(), opt_out_value)) {
     return std::move(callback).Run(AccuracyTipStatus::kOptOut);
   }
@@ -134,13 +152,22 @@
   base::Value* interaction_list = update.Get();
   interaction_list->Append(static_cast<int>(interaction));
 
+  // Record metrics.
   base::UmaHistogramEnumeration("Privacy.AccuracyTip.AccuracyTipInteraction",
                                 interaction);
   base::UmaHistogramCounts100("Privacy.AccuracyTip.NumDialogsShown",
                               interaction_list->GetList().size());
-  if (!time_opened.is_null()) {
+
+  if (interaction != AccuracyTipUI::Interaction::kDisabledByExperiment) {
+    const base::TimeDelta time_open = base::TimeTicks::Now() - time_opened;
     base::UmaHistogramMediumTimes("Privacy.AccuracyTip.AccuracyTipTimeOpen",
-                                  base::TimeTicks::Now() - time_opened);
+                                  time_open);
+
+    const std::string suffix = GetHistogramSuffix(interaction);
+    base::UmaHistogramCounts100("Privacy.AccuracyTip.NumDialogsShown." + suffix,
+                                interaction_list->GetList().size());
+    base::UmaHistogramMediumTimes(
+        "Privacy.AccuracyTip.AccuracyTipTimeOpen." + suffix, time_open);
   }
 }
 
diff --git a/components/accuracy_tips/accuracy_service_unittest.cc b/components/accuracy_tips/accuracy_service_unittest.cc
index c779f47..9327c57 100644
--- a/components/accuracy_tips/accuracy_service_unittest.cc
+++ b/components/accuracy_tips/accuracy_service_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
 #include "base/test/bind.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "base/test/mock_callback.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
@@ -73,7 +74,15 @@
     content::WebContents*,
     AccuracyTipStatus,
     base::OnceCallback<void(AccuracyTipUI::Interaction)> callback) {
-  std::move(callback).Run(AccuracyTipUI::Interaction::kOptOutPressed);
+  std::move(callback).Run(AccuracyTipUI::Interaction::kOptOut);
+}
+
+// Handler that simulates a click on the learn more button.
+void LearnMoreClicked(
+    content::WebContents*,
+    AccuracyTipStatus,
+    base::OnceCallback<void(AccuracyTipUI::Interaction)> callback) {
+  std::move(callback).Run(AccuracyTipUI::Interaction::kLearnMore);
 }
 
 class AccuracyServiceTest : public ::testing::Test {
@@ -202,6 +211,34 @@
   EXPECT_EQ(CheckAccuracyStatusSync(url), AccuracyTipStatus::kOptOut);
 }
 
+TEST_F(AccuracyServiceTest, Histograms) {
+  {
+    base::HistogramTester t;
+    EXPECT_CALL(*ui(), ShowAccuracyTip(_, _, _))
+        .WillOnce(Invoke(&LearnMoreClicked));
+    service()->MaybeShowAccuracyTip(nullptr);
+    t.ExpectUniqueSample("Privacy.AccuracyTip.AccuracyTipInteraction",
+                         AccuracyTipUI::Interaction::kLearnMore, 1);
+    t.ExpectBucketCount("Privacy.AccuracyTip.NumDialogsShown", 1, 1);
+    t.ExpectTotalCount("Privacy.AccuracyTip.AccuracyTipTimeOpen", 1);
+    t.ExpectBucketCount("Privacy.AccuracyTip.NumDialogsShown.LearnMore", 1, 1);
+    t.ExpectTotalCount("Privacy.AccuracyTip.AccuracyTipTimeOpen.LearnMore", 1);
+  }
+
+  {
+    base::HistogramTester t;
+    EXPECT_CALL(*ui(), ShowAccuracyTip(_, _, _))
+        .WillOnce(Invoke(&OptOutClicked));
+    service()->MaybeShowAccuracyTip(nullptr);
+    t.ExpectUniqueSample("Privacy.AccuracyTip.AccuracyTipInteraction",
+                         AccuracyTipUI::Interaction::kOptOut, 1);
+    t.ExpectBucketCount("Privacy.AccuracyTip.NumDialogsShown", 2, 1);
+    t.ExpectTotalCount("Privacy.AccuracyTip.AccuracyTipTimeOpen", 1);
+    t.ExpectBucketCount("Privacy.AccuracyTip.NumDialogsShown.OptOut", 2, 1);
+    t.ExpectTotalCount("Privacy.AccuracyTip.AccuracyTipTimeOpen.OptOut", 1);
+  }
+}
+
 class AccuracyServiceDisabledUiTest : public AccuracyServiceTest {
  private:
   void SetUpFeatureList(base::test::ScopedFeatureList& feature_list) override {
diff --git a/components/accuracy_tips/accuracy_tip_ui.h b/components/accuracy_tips/accuracy_tip_ui.h
index fa31876..2652d7f 100644
--- a/components/accuracy_tips/accuracy_tip_ui.h
+++ b/components/accuracy_tips/accuracy_tip_ui.h
@@ -27,14 +27,17 @@
   // These values are persisted to logs. Entries should not be renumbered and
   // numeric values should never be reused.
   enum class Interaction {
+    // The UI was closed without interaction. E.g. because the tab navigated
+    // to a different site.
     kNoAction = 0,
     // Learn more button pressed.
-    kLearnMorePressed = 1,
+    kLearnMore = 1,
     // Opt out button pressed.
-    kOptOutPressed = 2,
+    kOptOut = 2,
     // Pressed ESC or close button.
     kClosed = 3,
-    // Logged when the UI was not actually shown.
+    // Logged when the UI was not actually shown due to experiment
+    // configuration.
     kDisabledByExperiment = 4,
 
     kMaxValue = kDisabledByExperiment,
diff --git a/components/autofill/content/renderer/BUILD.gn b/components/autofill/content/renderer/BUILD.gn
index e30930b..1eb0974 100644
--- a/components/autofill/content/renderer/BUILD.gn
+++ b/components/autofill/content/renderer/BUILD.gn
@@ -61,6 +61,7 @@
   sources = [
     "focus_test_utils.cc",
     "focus_test_utils.h",
+    "form_cache_test_api.h",
     "test_password_autofill_agent.cc",
     "test_password_autofill_agent.h",
   ]
diff --git a/components/autofill/content/renderer/form_cache.cc b/components/autofill/content/renderer/form_cache.cc
index d201f15..4ad1f79 100644
--- a/components/autofill/content/renderer/form_cache.cc
+++ b/components/autofill/content/renderer/form_cache.cc
@@ -120,8 +120,117 @@
 FormCache::FormCache(WebLocalFrame* frame) : frame_(frame) {}
 FormCache::~FormCache() = default;
 
+std::vector<FormData> FormCache::ModifiedExtractNewForms(
+    const FieldDataManager* field_data_manager) {
+  std::vector<FormData> forms;
+  WebDocument document = frame_->GetDocument();
+  if (document.IsNull())
+    return forms;
+
+  initial_checked_state_.clear();
+  initial_select_values_.clear();
+
+  std::set<FieldRendererId> observed_unique_renderer_ids;
+
+  // Log an error message for deprecated attributes, but only the first time
+  // the form is parsed.
+  bool log_deprecation_messages = parsed_forms_rendererid_.empty();
+
+  std::map<FormRendererId, FormData> old_parsed_forms =
+      std::move(parsed_forms_rendererid_);
+  parsed_forms_rendererid_.clear();
+
+  size_t num_fields_seen = 0;
+  size_t num_frames_seen = 0;
+  std::vector<WebFormControlElement> control_elements;
+
+  // Helper function that stores new autofillable forms. Returns false if the
+  // number of fields or frames would be too much if we extracted the new form.
+  auto ProcessForm = [&](FormData form) {
+    for (const auto& field : form.fields)
+      observed_unique_renderer_ids.insert(field.unique_renderer_id);
+
+    num_fields_seen += form.fields.size();
+    num_frames_seen += form.child_frames.size();
+    if (num_fields_seen > kMaxParseableFields ||
+        num_frames_seen > kMaxParseableFrames) {
+      // Restore |parsed_forms_rendererid_|.
+      parsed_forms_rendererid_.insert(
+          std::make_move_iterator(old_parsed_forms.begin()),
+          std::make_move_iterator(old_parsed_forms.end()));
+      PruneInitialValueCaches(observed_unique_renderer_ids);
+      return false;
+    }
+
+    size_t num_editable_elements =
+        ScanFormControlElements(control_elements, log_deprecation_messages);
+
+    // Store only "interesting" forms.
+    if (IsFormInteresting(form, num_editable_elements)) {
+      DCHECK(parsed_forms_rendererid_.find(form.unique_renderer_id) ==
+             parsed_forms_rendererid_.end());
+      parsed_forms_rendererid_.insert({form.unique_renderer_id, form});
+
+      // If it is a new form or an input field of the form changed,
+      // re-extract the form.
+      auto it = old_parsed_forms.find(form.unique_renderer_id);
+      if (it == old_parsed_forms.end() ||
+          form.child_frames != it->second.child_frames ||
+          !base::ranges::equal(form.fields, it->second.fields, {},
+                               &FormFieldData::unique_renderer_id,
+                               &FormFieldData::unique_renderer_id)) {
+        SaveInitialValues(control_elements);
+        forms.push_back(std::move(form));
+      }
+    }
+    return true;
+  };
+
+  constexpr form_util::ExtractMask extract_mask =
+      static_cast<form_util::ExtractMask>(form_util::EXTRACT_VALUE |
+                                          form_util::EXTRACT_OPTIONS);
+
+  for (const WebFormElement& form_element : document.Forms()) {
+    control_elements =
+        form_util::ExtractAutofillableElementsInForm(form_element);
+
+    FormData form;
+    if (!WebFormElementToFormData(form_element, WebFormControlElement(),
+                                  field_data_manager, extract_mask, &form,
+                                  nullptr)) {
+      continue;
+    }
+    if (!ProcessForm(std::move(form)))
+      return forms;
+  }
+
+  // Look for more parseable fields outside of forms. Create a synthetic form
+  // from them.
+  std::vector<WebElement> fieldsets;
+  control_elements = form_util::GetUnownedAutofillableFormFieldElements(
+      document.All(), &fieldsets);
+  std::vector<WebElement> iframe_elements =
+      form_util::GetUnownedIframeElements(document);
+
+  FormData synthetic_form;
+  if (!UnownedFormElementsAndFieldSetsToFormData(
+          fieldsets, control_elements, iframe_elements, nullptr, document,
+          field_data_manager, extract_mask, &synthetic_form, nullptr)) {
+    PruneInitialValueCaches(observed_unique_renderer_ids);
+    return forms;
+  }
+  if (!ProcessForm(std::move(synthetic_form)))
+    return forms;
+
+  PruneInitialValueCaches(observed_unique_renderer_ids);
+  return forms;
+}
+
 std::vector<FormData> FormCache::ExtractNewForms(
     const FieldDataManager* field_data_manager) {
+  if (base::FeatureList::IsEnabled(features::kAutofillUseNewFormExtraction)) {
+    return ModifiedExtractNewForms(field_data_manager);
+  }
   std::vector<FormData> forms;
   WebDocument document = frame_->GetDocument();
   if (document.IsNull())
@@ -243,6 +352,8 @@
 
   synthetic_form_ = FormData();
   parsed_forms_.clear();
+  // Remove after the `AutofillUseNewFormExtraction` feature is deleted.
+  parsed_forms_rendererid_.clear();
   initial_select_values_.clear();
   initial_checked_state_.clear();
   fields_eligible_for_manual_filling_.clear();
@@ -445,13 +556,6 @@
   return true;
 }
 
-bool FormCache::IsFormElementEligibleForManualFilling(
-    const blink::WebFormControlElement& control_element) {
-  return fields_eligible_for_manual_filling_.find(
-             FieldRendererId(control_element.UniqueRendererFormControlId())) !=
-         fields_eligible_for_manual_filling_.end();
-}
-
 void FormCache::SetFieldsEligibleForManualFilling(
     const std::vector<FieldRendererId>& fields_eligible_for_manual_filling) {
   fields_eligible_for_manual_filling_ = base::flat_set<FieldRendererId>(
diff --git a/components/autofill/content/renderer/form_cache.h b/components/autofill/content/renderer/form_cache.h
index 22afde1..16f22d6 100644
--- a/components/autofill/content/renderer/form_cache.h
+++ b/components/autofill/content/renderer/form_cache.h
@@ -41,6 +41,12 @@
   std::vector<FormData> ExtractNewForms(
       const FieldDataManager* field_data_manager);
 
+  // Modified version of ExtractNewForms(). It is used only if
+  // `AutofillUseNewFormExtraction` feature is enabled. Remove after the feature
+  // is deleted.
+  std::vector<FormData> ModifiedExtractNewForms(
+      const FieldDataManager* field_data_manager);
+
   // Resets the forms.
   void Reset();
 
@@ -56,24 +62,13 @@
   bool ShowPredictions(const FormDataPredictions& form,
                        bool attach_predictions_to_dom);
 
-  // For a given |control_element| check whether it is eligible for manual
-  // filling on form interaction.
-  bool IsFormElementEligibleForManualFilling(
-      const blink::WebFormControlElement& control_element);
-
   // Stores the FieldRendererId of the fields that are eligible for manual
   // filling in a set.
   void SetFieldsEligibleForManualFilling(
       const std::vector<FieldRendererId>& fields_eligible_for_manual_filling);
 
  private:
-  FRIEND_TEST_ALL_PREFIXES(FormCacheBrowserTest, FreeDataOnElementRemoval);
-  FRIEND_TEST_ALL_PREFIXES(
-      FormCacheBrowserTest,
-      RemoveReextractedModifiedNonSyntheticFormsWithSameRendererID);
-  FRIEND_TEST_ALL_PREFIXES(
-      FormCacheBrowserTest,
-      RemoveReextractedModifiedSyntheticFormsWithSameRendererID);
+  friend class FormCacheTestApi;
 
   // Scans |control_elements| and returns the number of editable elements.
   // Also logs warning messages for deprecated attribute if
@@ -101,6 +96,11 @@
   // TODO(crbug/896689) Move to std::map<unique_rederer_id, FormData>.
   std::set<FormData, FormData::IdentityComparator> parsed_forms_;
 
+  // Same as |parsed_forms_|, but moved to a different type. It is used only if
+  // `AutofillUseNewFormExtraction` feature is enabled. Remove after the feature
+  // is deleted.
+  std::map<FormRendererId, FormData> parsed_forms_rendererid_;
+
   // The synthetic FormData is for all the fieldsets in the document without a
   // form owner.
   FormData synthetic_form_;
diff --git a/components/autofill/content/renderer/form_cache_browsertest.cc b/components/autofill/content/renderer/form_cache_browsertest.cc
index 00e4b6e..09cdbf7 100644
--- a/components/autofill/content/renderer/form_cache_browsertest.cc
+++ b/components/autofill/content/renderer/form_cache_browsertest.cc
@@ -8,6 +8,7 @@
 #include "components/autofill/content/renderer/focus_test_utils.h"
 #include "components/autofill/content/renderer/form_autofill_util.h"
 #include "components/autofill/content/renderer/form_cache.h"
+#include "components/autofill/content/renderer/form_cache_test_api.h"
 #include "components/autofill/core/common/autofill_features.h"
 #include "components/autofill/core/common/form_field_data.h"
 #include "content/public/test/render_view_test.h"
@@ -73,7 +74,24 @@
   std::unique_ptr<test::FocusTestUtils> focus_test_utils_;
 };
 
-TEST_F(FormCacheBrowserTest, ExtractForms) {
+class ParameterizedFormCacheBrowserTest
+    : public FormCacheBrowserTest,
+      public testing::WithParamInterface<bool> {
+ public:
+  ParameterizedFormCacheBrowserTest() {
+    bool use_new_form_extraction = GetParam();
+    std::vector<base::Feature> enabled;
+    std::vector<base::Feature> disabled;
+    (use_new_form_extraction ? &enabled : &disabled)
+        ->push_back(features::kAutofillUseNewFormExtraction);
+    scoped_features_.InitWithFeatures(enabled, disabled);
+  }
+
+ private:
+  base::test::ScopedFeatureList scoped_features_;
+};
+
+TEST_P(ParameterizedFormCacheBrowserTest, ExtractForms) {
   LoadHTML(R"(
     <form id="form1">
       <input type="text" name="foo1">
@@ -99,7 +117,7 @@
   EXPECT_TRUE(unowned_form->child_frames.empty());
 }
 
-class FormCacheIframeBrowserTest : public FormCacheBrowserTest {
+class FormCacheIframeBrowserTest : public ParameterizedFormCacheBrowserTest {
  public:
   FormCacheIframeBrowserTest() {
     scoped_feature_list_.InitAndEnableFeature(features::kAutofillAcrossIframes);
@@ -110,7 +128,7 @@
   base::test::ScopedFeatureList scoped_feature_list_;
 };
 
-TEST_F(FormCacheIframeBrowserTest, ExtractFrames) {
+TEST_P(FormCacheIframeBrowserTest, ExtractFrames) {
   LoadHTML(R"(
     <form id="form1">
       <iframe id="frame1"></iframe>
@@ -145,7 +163,7 @@
                         Field(&FrameTokenWithPredecessor::predecessor, -1))));
 }
 
-TEST_F(FormCacheBrowserTest, ExtractFormsTwice) {
+TEST_P(ParameterizedFormCacheBrowserTest, ExtractFormsTwice) {
   LoadHTML(R"(
     <form id="form1">
       <input type="text" name="foo1">
@@ -164,7 +182,7 @@
   EXPECT_TRUE(forms.empty());
 }
 
-TEST_F(FormCacheIframeBrowserTest, ExtractFramesTwice) {
+TEST_P(FormCacheIframeBrowserTest, ExtractFramesTwice) {
   LoadHTML(R"(
     <form id="form1">
       <iframe></iframe>
@@ -181,7 +199,7 @@
   EXPECT_TRUE(forms.empty());
 }
 
-TEST_F(FormCacheIframeBrowserTest, ExtractFramesAfterVisibilityChange) {
+TEST_P(FormCacheIframeBrowserTest, ExtractFramesAfterVisibilityChange) {
   LoadHTML(R"(
     <form id="form1">
       <iframe id="frame1" style="display: none;"></iframe>
@@ -232,7 +250,7 @@
   EXPECT_EQ(forms.front().name, u"form1");
 }
 
-TEST_F(FormCacheBrowserTest, ExtractFormsAfterModification) {
+TEST_P(ParameterizedFormCacheBrowserTest, ExtractFormsAfterModification) {
   LoadHTML(R"(
     <form id="form1">
       <input type="text" name="foo1">
@@ -271,7 +289,7 @@
   EXPECT_EQ(2u, unowned_form->fields.size());
 }
 
-TEST_F(FormCacheBrowserTest, FillAndClear) {
+TEST_P(ParameterizedFormCacheBrowserTest, FillAndClear) {
   LoadHTML(R"(
     <input type="text" name="text" id="text">
     <input type="checkbox" checked name="checkbox" id="checkbox">
@@ -317,7 +335,7 @@
 
 // Tests that correct focus, change and blur events are emitted during the
 // autofilling and clearing of the form with an initially focused element.
-TEST_F(FormCacheBrowserTest,
+TEST_P(ParameterizedFormCacheBrowserTest,
        VerifyFocusAndBlurEventsAfterAutofillAndClearingWithFocusElement) {
   // Load a form.
   LoadHTML(
@@ -369,7 +387,7 @@
   EXPECT_EQ(GetFocusLog(), "c0b0f1c1b1f0c0b0f1c1b1f0");
 }
 
-TEST_F(FormCacheBrowserTest, FreeDataOnElementRemoval) {
+TEST_P(ParameterizedFormCacheBrowserTest, FreeDataOnElementRemoval) {
   LoadHTML(R"(
     <div id="container">
       <input type="text" name="text" id="text">
@@ -384,8 +402,8 @@
   FormCache form_cache(GetMainFrame());
   form_cache.ExtractNewForms(nullptr);
 
-  EXPECT_EQ(1u, form_cache.initial_select_values_.size());
-  EXPECT_EQ(1u, form_cache.initial_checked_state_.size());
+  EXPECT_EQ(1u, FormCacheTestApi(&form_cache).initial_select_values_size());
+  EXPECT_EQ(1u, FormCacheTestApi(&form_cache).initial_checked_state_size());
 
   ExecuteJavaScriptForTests(R"(
     const container = document.getElementById('container');
@@ -396,13 +414,14 @@
 
   std::vector<FormData> forms = form_cache.ExtractNewForms(nullptr);
   EXPECT_EQ(0u, forms.size());
-  EXPECT_EQ(0u, form_cache.initial_select_values_.size());
-  EXPECT_EQ(0u, form_cache.initial_checked_state_.size());
+  EXPECT_EQ(0u, FormCacheTestApi(&form_cache).initial_select_values_size());
+  EXPECT_EQ(0u, FormCacheTestApi(&form_cache).initial_checked_state_size());
 }
 
 // Test that the select element's user edited field state is set
 // to false after clearing the form.
-TEST_F(FormCacheBrowserTest, ClearFormSelectElementEditedStateReset) {
+TEST_P(ParameterizedFormCacheBrowserTest,
+       ClearFormSelectElementEditedStateReset) {
   LoadHTML(R"(
     <input type="text" name="text" id="text">
     <select name="date" id="date">
@@ -471,7 +490,8 @@
   EXPECT_TRUE(select_month.UserHasEditedTheField());
 }
 
-TEST_F(FormCacheBrowserTest, IsFormElementEligibleForManualFilling) {
+TEST_P(ParameterizedFormCacheBrowserTest,
+       IsFormElementEligibleForManualFilling) {
   // Load a form.
   LoadHTML(
       "<html><form id='myForm'>"
@@ -500,18 +520,18 @@
   form_cache.SetFieldsEligibleForManualFilling(
       fields_eligible_for_manual_filling);
 
-  EXPECT_TRUE(
-      form_cache.IsFormElementEligibleForManualFilling(first_name_element));
-  EXPECT_FALSE(
-      form_cache.IsFormElementEligibleForManualFilling(middle_name_element));
-  EXPECT_TRUE(
-      form_cache.IsFormElementEligibleForManualFilling(last_name_element));
+  EXPECT_TRUE(FormCacheTestApi(&form_cache)
+                  .IsFormElementEligibleForManualFilling(first_name_element));
+  EXPECT_FALSE(FormCacheTestApi(&form_cache)
+                   .IsFormElementEligibleForManualFilling(middle_name_element));
+  EXPECT_TRUE(FormCacheTestApi(&form_cache)
+                  .IsFormElementEligibleForManualFilling(last_name_element));
 }
 
 // Test that after adding an input element to an already extracted non-synthetic
-// form, the form (has the same renderer ID) is not added twice to the extracted
+// form, the form (has the same rendererId) is not added twice to the extracted
 // forms.
-TEST_F(FormCacheBrowserTest,
+TEST_P(ParameterizedFormCacheBrowserTest,
        RemoveReextractedModifiedNonSyntheticFormsWithSameRendererID) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeature(
@@ -539,14 +559,18 @@
   ASSERT_TRUE(form1);
   EXPECT_EQ(2u, form1->fields.size());
 
-  // Check if the modified form with the same rendererID was not added again.
-  EXPECT_EQ(1u, form_cache.parsed_forms_.size());
+  // Check if the modified form with the same rendererId was not added again.
+  if (base::FeatureList::IsEnabled(features::kAutofillUseNewFormExtraction)) {
+    EXPECT_EQ(1u, FormCacheTestApi(&form_cache).parsed_forms_rendererid_size());
+  } else {
+    EXPECT_EQ(1u, FormCacheTestApi(&form_cache).parsed_forms_size());
+  }
 }
 
 // Test that after adding an unowned input element to an already extracted
-// synthetic form, the form (has the same renderer ID) is not added twice to the
+// synthetic form, the form (has the same rendererId) is not added twice to the
 // extracted forms.
-TEST_F(FormCacheBrowserTest,
+TEST_P(ParameterizedFormCacheBrowserTest,
        RemoveReextractedModifiedSyntheticFormsWithSameRendererID) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeature(
@@ -572,9 +596,57 @@
   ASSERT_TRUE(unowned_form);
   EXPECT_EQ(2u, unowned_form->fields.size());
 
-  // Check if the modified form with the same rendererID was not added again.
-  // (We expect that all the unowned fields have the same rendererID.)
-  EXPECT_EQ(1u, form_cache.parsed_forms_.size());
+  // Check if the modified form with the same rendererId was not added again.
+  // (We expect that all the unowned fields have the same rendererId.)
+  if (base::FeatureList::IsEnabled(features::kAutofillUseNewFormExtraction)) {
+    EXPECT_EQ(1u, FormCacheTestApi(&form_cache).parsed_forms_rendererid_size());
+  } else {
+    EXPECT_EQ(1u, FormCacheTestApi(&form_cache).parsed_forms_size());
+  }
 }
 
+// Test that the FormCache does not contain empty forms.
+TEST_F(FormCacheBrowserTest, DoNotStoreEmptyForms) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      features::kAutofillUseNewFormExtraction);
+
+  LoadHTML(R"(<form></form>)");
+
+  FormCache form_cache(GetMainFrame());
+  form_cache.ExtractNewForms(nullptr);
+
+  EXPECT_EQ(1u, GetMainFrame()->GetDocument().Forms().size());
+  EXPECT_EQ(0u, FormCacheTestApi(&form_cache).parsed_forms_rendererid_size());
+}
+
+// Test that the FormCache never contains more than |kMaxParseableFields|
+// non-empty parsed forms.
+TEST_F(FormCacheBrowserTest, FormCacheSizeUpperBound) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      features::kAutofillUseNewFormExtraction);
+
+  // Create a HTML page that contains `kMaxParseableFields + 1` non-empty
+  // forms.
+  std::string html;
+  for (unsigned int i = 0; i < kMaxParseableFields + 1; i++) {
+    html += "<form><input></form>";
+  }
+  LoadHTML(html.c_str());
+
+  FormCache form_cache(GetMainFrame());
+  form_cache.ExtractNewForms(nullptr);
+
+  EXPECT_EQ(kMaxParseableFields + 1,
+            GetMainFrame()->GetDocument().Forms().size());
+  EXPECT_EQ(kMaxParseableFields,
+            FormCacheTestApi(&form_cache).parsed_forms_rendererid_size());
+}
+
+INSTANTIATE_TEST_SUITE_P(All,
+                         ParameterizedFormCacheBrowserTest,
+                         testing::Bool());
+INSTANTIATE_TEST_SUITE_P(All, FormCacheIframeBrowserTest, testing::Bool());
+
 }  // namespace autofill
diff --git a/components/autofill/content/renderer/form_cache_test_api.h b/components/autofill/content/renderer/form_cache_test_api.h
new file mode 100644
index 0000000..e4845db
--- /dev/null
+++ b/components/autofill/content/renderer/form_cache_test_api.h
@@ -0,0 +1,53 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_TEST_API_H_
+#define COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_TEST_API_H_
+
+#include <stddef.h>
+
+#include "components/autofill/content/renderer/form_cache.h"
+#include "third_party/blink/public/web/web_form_control_element.h"
+
+namespace autofill {
+
+// Exposes some testing operations for FormCache.
+class FormCacheTestApi {
+ public:
+  explicit FormCacheTestApi(FormCache* form_cache) : form_cache_(form_cache) {
+    DCHECK(form_cache_);
+  }
+
+  // For a given |control_element| check whether it is eligible for manual
+  // filling on form interaction.
+  bool IsFormElementEligibleForManualFilling(
+      const blink::WebFormControlElement& control_element) {
+    return base::Contains(
+        form_cache_->fields_eligible_for_manual_filling_,
+        FieldRendererId(control_element.UniqueRendererFormControlId()));
+  }
+
+  size_t initial_select_values_size() {
+    return form_cache_->initial_select_values_.size();
+  }
+
+  size_t initial_checked_state_size() {
+    return form_cache_->initial_checked_state_.size();
+  }
+
+  size_t parsed_forms_size() { return form_cache_->parsed_forms_.size(); }
+
+  // TODO(crbug/1215333): Remove once the `AutofillUseNewFormExtraction` feature
+  // is launched.
+  size_t parsed_forms_rendererid_size() {
+    return form_cache_->parsed_forms_rendererid_.size();
+  }
+
+ private:
+  FormCache* form_cache_;
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_TEST_API_H_
\ No newline at end of file
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc
index 2ca29b49..16547fd 100644
--- a/components/autofill/core/common/autofill_features.cc
+++ b/components/autofill/core/common/autofill_features.cc
@@ -384,6 +384,12 @@
     "AutofillUseImprovedLabelDisambiguation",
     base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Controls whether to use new form extraction function that does not leak
+// memory and uses comparison based on the FormRendererIds.
+// TODO(crbug.com/1215333): Remove the feature when the experiment is completed.
+const base::Feature kAutofillUseNewFormExtraction{
+    "AutofillUseNewFormExtraction", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Controls whether to use the combined heuristic and the autocomplete section
 // implementation for section splitting or not. See https://crbug.com/1076175.
 const base::Feature kAutofillUseNewSectioningMethod{
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h
index bad3b49..9b6eac41 100644
--- a/components/autofill/core/common/autofill_features.h
+++ b/components/autofill/core/common/autofill_features.h
@@ -148,6 +148,8 @@
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::Feature kAutofillUseNewSectioningMethod;
 COMPONENT_EXPORT(AUTOFILL)
+extern const base::Feature kAutofillUseNewFormExtraction;
+COMPONENT_EXPORT(AUTOFILL)
 extern const base::Feature
     kAutofillUseOnlyFormRendererIDForOldDuplicateFormRemoval;
 
diff --git a/components/autofill/core/common/form_data.h b/components/autofill/core/common/form_data.h
index 9a9febb..cafea92 100644
--- a/components/autofill/core/common/form_data.h
+++ b/components/autofill/core/common/form_data.h
@@ -54,6 +54,8 @@
 struct FormData {
   // Less-than relation for STL containers. Compares only members needed to
   // uniquely identify a form.
+  // TODO(crbug.com/1215333): Remove once `AutofillUseNewFormExtraction` is
+  // launched.
   struct IdentityComparator {
     bool operator()(const FormData& a, const FormData& b) const;
   };
diff --git a/components/browser_sync/profile_sync_components_factory_impl.cc b/components/browser_sync/profile_sync_components_factory_impl.cc
index 7a25f63..cd434aa6 100644
--- a/components/browser_sync/profile_sync_components_factory_impl.cc
+++ b/components/browser_sync/profile_sync_components_factory_impl.cc
@@ -26,7 +26,7 @@
 #include "components/history/core/browser/sync/history_delete_directives_model_type_controller.h"
 #include "components/history/core/browser/sync/typed_url_model_type_controller.h"
 #include "components/history/core/common/pref_names.h"
-#include "components/password_manager/core/browser/password_store.h"
+#include "components/password_manager/core/browser/password_store_interface.h"
 #include "components/password_manager/core/browser/sync/password_model_type_controller.h"
 #include "components/prefs/pref_service.h"
 #include "components/reading_list/features/reading_list_switches.h"
@@ -133,9 +133,9 @@
         web_data_service_on_disk,
     const scoped_refptr<autofill::AutofillWebDataService>&
         web_data_service_in_memory,
-    const scoped_refptr<password_manager::PasswordStore>&
+    const scoped_refptr<password_manager::PasswordStoreInterface>&
         profile_password_store,
-    const scoped_refptr<password_manager::PasswordStore>&
+    const scoped_refptr<password_manager::PasswordStoreInterface>&
         account_password_store,
     sync_bookmarks::BookmarkSyncService* bookmark_sync_service)
     : sync_client_(sync_client),
diff --git a/components/browser_sync/profile_sync_components_factory_impl.h b/components/browser_sync/profile_sync_components_factory_impl.h
index c3d9a909..baa27021 100644
--- a/components/browser_sync/profile_sync_components_factory_impl.h
+++ b/components/browser_sync/profile_sync_components_factory_impl.h
@@ -27,7 +27,7 @@
 }
 
 namespace password_manager {
-class PasswordStore;
+class PasswordStoreInterface;
 }
 
 namespace sync_bookmarks {
@@ -50,9 +50,9 @@
           web_data_service_on_disk,
       const scoped_refptr<autofill::AutofillWebDataService>&
           web_data_service_in_memory,
-      const scoped_refptr<password_manager::PasswordStore>&
+      const scoped_refptr<password_manager::PasswordStoreInterface>&
           profile_password_store,
-      const scoped_refptr<password_manager::PasswordStore>&
+      const scoped_refptr<password_manager::PasswordStoreInterface>&
           account_password_store,
       sync_bookmarks::BookmarkSyncService* bookmark_sync_service);
   ProfileSyncComponentsFactoryImpl(const ProfileSyncComponentsFactoryImpl&) =
@@ -123,8 +123,10 @@
       web_data_service_on_disk_;
   const scoped_refptr<autofill::AutofillWebDataService>
       web_data_service_in_memory_;
-  const scoped_refptr<password_manager::PasswordStore> profile_password_store_;
-  const scoped_refptr<password_manager::PasswordStore> account_password_store_;
+  const scoped_refptr<password_manager::PasswordStoreInterface>
+      profile_password_store_;
+  const scoped_refptr<password_manager::PasswordStoreInterface>
+      account_password_store_;
   sync_bookmarks::BookmarkSyncService* const bookmark_sync_service_;
 };
 
diff --git a/components/browser_ui/styles/android/java/res/values/styles.xml b/components/browser_ui/styles/android/java/res/values/styles.xml
index 8ae9cff582..341fc36 100644
--- a/components/browser_ui/styles/android/java/res/values/styles.xml
+++ b/components/browser_ui/styles/android/java/res/values/styles.xml
@@ -160,6 +160,7 @@
     <style name="AppMenuItem">
         <item name="android:paddingStart">16dp</item>
         <item name="android:paddingEnd">16dp</item>
+        <item name="android:foreground">?attr/listChoiceBackgroundIndicator</item>
         <item name="android:background">@color/menu_item_bg_color</item>
     </style>
 
diff --git a/components/continuous_search/browser/search_result_extractor_client.cc b/components/continuous_search/browser/search_result_extractor_client.cc
index 23265b2..d00d07d 100644
--- a/components/continuous_search/browser/search_result_extractor_client.cc
+++ b/components/continuous_search/browser/search_result_extractor_client.cc
@@ -31,6 +31,7 @@
 
 void SearchResultExtractorClient::RequestData(
     content::WebContents* web_contents,
+    const std::vector<mojom::ResultType>& result_types,
     RequestDataCallback callback) {
   if (!web_contents || !web_contents->GetMainFrame() ||
       !web_contents->GetMainFrame()->GetRemoteAssociatedInterfaces()) {
@@ -53,6 +54,7 @@
 
   mojom::SearchResultExtractor* extractor_ptr = extractor.get();
   extractor_ptr->ExtractCurrentSearchResults(
+      result_types,
       base::BindOnce(&SearchResultExtractorClient::RequestDataCallbackAdapter,
                      weak_ptr_factory_.GetWeakPtr(), std::move(extractor), url,
                      std::move(callback)));
diff --git a/components/continuous_search/browser/search_result_extractor_client.h b/components/continuous_search/browser/search_result_extractor_client.h
index a4459395..5988661d 100644
--- a/components/continuous_search/browser/search_result_extractor_client.h
+++ b/components/continuous_search/browser/search_result_extractor_client.h
@@ -5,6 +5,8 @@
 #ifndef COMPONENTS_CONTINUOUS_SEARCH_BROWSER_SEARCH_RESULT_EXTRACTOR_CLIENT_H_
 #define COMPONENTS_CONTINUOUS_SEARCH_BROWSER_SEARCH_RESULT_EXTRACTOR_CLIENT_H_
 
+#include <vector>
+
 #include "base/callback.h"
 #include "base/memory/weak_ptr.h"
 #include "components/continuous_search/browser/search_result_extractor_client_status.h"
@@ -33,8 +35,11 @@
                               mojom::CategoryResultsPtr)>;
 
   // Requests extraction of SRP data from the main frame of `web_contents`.
-  // Results are returned to `callback`.
+  // Results are returned to `callback`. `result_types` is list of result types
+  // to extract. The extraction will fail and no results will be generated if
+  // any of the types (except mojom::ResultType::kAds) cannot be extracted.
   void RequestData(content::WebContents* web_contents,
+                   const std::vector<mojom::ResultType>& result_types,
                    RequestDataCallback callback);
 
  private:
diff --git a/components/continuous_search/browser/search_result_extractor_client_unittest.cc b/components/continuous_search/browser/search_result_extractor_client_unittest.cc
index f8da1fa99..cb36b90 100644
--- a/components/continuous_search/browser/search_result_extractor_client_unittest.cc
+++ b/components/continuous_search/browser/search_result_extractor_client_unittest.cc
@@ -36,8 +36,7 @@
   expected_results->category_type = mojom::Category::kOrganic;
   {
     mojom::ResultGroupPtr result_group = mojom::ResultGroup::New();
-    result_group->label = "Group 1";
-    result_group->is_ad_group = false;
+    result_group->type = mojom::ResultType::kSearchResults;
     {
       mojom::SearchResultPtr result = mojom::SearchResult::New();
       result->link = GURL("https://www.bar.com/");
@@ -94,7 +93,7 @@
   SearchResultExtractorClient client;
   base::RunLoop loop;
   client.RequestData(
-      web_contents(),
+      web_contents(), {mojom::ResultType::kSearchResults},
       base::BindOnce(CheckResponse, SearchResultExtractorClientStatus::kSuccess,
                      std::move(expected_results), loop.QuitClosure()));
   loop.Run();
@@ -105,7 +104,7 @@
   SearchResultExtractorClient client;
   base::RunLoop loop;
   client.RequestData(
-      nullptr,
+      nullptr, {mojom::ResultType::kSearchResults},
       base::BindOnce(CheckResponse,
                      SearchResultExtractorClientStatus::kWebContentsGone,
                      mojom::CategoryResults::New(), loop.QuitClosure()));
@@ -122,7 +121,7 @@
   SearchResultExtractorClient client;
   base::RunLoop loop;
   client.RequestData(
-      web_contents(),
+      web_contents(), {mojom::ResultType::kSearchResults},
       base::BindOnce(CheckResponse,
                      SearchResultExtractorClientStatus::kNoResults,
                      mojom::CategoryResults::New(), loop.QuitClosure()));
@@ -140,7 +139,7 @@
   SearchResultExtractorClient client;
   base::RunLoop loop;
   client.RequestData(
-      web_contents(),
+      web_contents(), {mojom::ResultType::kSearchResults},
       base::BindOnce(CheckResponse,
                      SearchResultExtractorClientStatus::kUnexpectedUrl,
                      mojom::CategoryResults::New(), loop.QuitClosure()));
@@ -153,7 +152,7 @@
   SearchResultExtractorClient client;
   base::RunLoop loop;
   client.RequestData(
-      web_contents(),
+      web_contents(), {mojom::ResultType::kSearchResults},
       base::BindOnce(
           CheckResponse,
           SearchResultExtractorClientStatus::kWebContentsHasNonSrpUrl,
diff --git a/components/continuous_search/browser/test/fake_search_result_extractor.cc b/components/continuous_search/browser/test/fake_search_result_extractor.cc
index 2350bbdd..1ab43c12 100644
--- a/components/continuous_search/browser/test/fake_search_result_extractor.cc
+++ b/components/continuous_search/browser/test/fake_search_result_extractor.cc
@@ -12,6 +12,7 @@
 FakeSearchResultExtractor::~FakeSearchResultExtractor() = default;
 
 void FakeSearchResultExtractor::ExtractCurrentSearchResults(
+    const std::vector<mojom::ResultType>& result_types,
     ExtractCurrentSearchResultsCallback callback) {
   CHECK(response_set_);
   std::move(callback).Run(status_, std::move(results_));
diff --git a/components/continuous_search/browser/test/fake_search_result_extractor.h b/components/continuous_search/browser/test/fake_search_result_extractor.h
index f5951e0..b9ddba6 100644
--- a/components/continuous_search/browser/test/fake_search_result_extractor.h
+++ b/components/continuous_search/browser/test/fake_search_result_extractor.h
@@ -5,6 +5,8 @@
 #ifndef COMPONENTS_CONTINUOUS_SEARCH_BROWSER_TEST_FAKE_SEARCH_RESULT_EXTRACTOR_H_
 #define COMPONENTS_CONTINUOUS_SEARCH_BROWSER_TEST_FAKE_SEARCH_RESULT_EXTRACTOR_H_
 
+#include <vector>
+
 #include "components/continuous_search/common/public/mojom/continuous_search.mojom.h"
 #include "mojo/public/cpp/bindings/associated_receiver.h"
 
@@ -20,6 +22,7 @@
       delete;
 
   void ExtractCurrentSearchResults(
+      const std::vector<mojom::ResultType>& result_types,
       ExtractCurrentSearchResultsCallback callback) override;
 
   // Sets the `status` and `results` returned the next time
diff --git a/components/continuous_search/common/public/mojom/continuous_search.mojom b/components/continuous_search/common/public/mojom/continuous_search.mojom
index 670b514f..11c793cf 100644
--- a/components/continuous_search/common/public/mojom/continuous_search.mojom
+++ b/components/continuous_search/common/public/mojom/continuous_search.mojom
@@ -19,14 +19,21 @@
   mojo_base.mojom.String16 title;
 };
 
+// The types of logically related groups of search results. E.g., ads, organic
+// search results, etc.
+enum ResultType {
+  // Organic search results (regular "10 blue links").
+  kSearchResults,
+
+  // Ads.
+  kAds,
+};
+
 // A logically related group of search results with a label. E.g. ads, organic,
 // news, etc.
 struct ResultGroup {
-  // A label for the group of results.
-  string label;
-
-  // Whether the group is for ads.
-  bool is_ad_group;
+  // The type for this group.
+  ResultType type;
 
   // A list of results for this group.
   array<SearchResult> results;
@@ -64,7 +71,11 @@
     kNoResults,
   };
 
-  // Performs a structured search of the DOM to extract results for the current
-  // search result page (with the currently selected category).
-  ExtractCurrentSearchResults() => (Status status, CategoryResults results);
+  // Performs a structured search of the DOM to extract results of given types
+  // from the current search result page (with the currently selected category).
+  // `result_types` is list of result types to extract. The extraction will fail
+  // and no results will be generated if any of the types
+  // (except ResultType::kAds) cannot be extracted.
+  ExtractCurrentSearchResults(array<ResultType> result_types)
+      => (Status status, CategoryResults results);
 };
diff --git a/components/continuous_search/renderer/search_result_extractor_browsertest.cc b/components/continuous_search/renderer/search_result_extractor_browsertest.cc
index a8fd80f3..e71d475 100644
--- a/components/continuous_search/renderer/search_result_extractor_browsertest.cc
+++ b/components/continuous_search/renderer/search_result_extractor_browsertest.cc
@@ -26,6 +26,7 @@
   // once the provided `html` is loaded.
   void LoadHtmlAndExpectExtractedOutput(
       base::StringPiece html,
+      const std::vector<mojom::ResultType>& result_types,
       mojom::SearchResultExtractor::Status expected_status,
       mojom::CategoryResultsPtr expected_results) {
     LoadHTML(html.data());
@@ -37,18 +38,19 @@
     {
       auto* extractor = SearchResultExtractorImpl::Create(GetMainRenderFrame());
       EXPECT_NE(extractor, nullptr);
-      extractor->ExtractCurrentSearchResults(base::BindOnce(
-          [](base::OnceClosure quit,
-             mojom::SearchResultExtractor::Status* out_status,
-             mojom::CategoryResultsPtr* out_results,
-             mojom::SearchResultExtractor::Status status,
-             mojom::CategoryResultsPtr results) {
-            *out_status = status;
-            *out_results = std::move(results);
-            std::move(quit).Run();
-          },
-          loop.QuitClosure(), base::Unretained(&out_status),
-          base::Unretained(&out_results)));
+      extractor->ExtractCurrentSearchResults(
+          result_types, base::BindOnce(
+                            [](base::OnceClosure quit,
+                               mojom::SearchResultExtractor::Status* out_status,
+                               mojom::CategoryResultsPtr* out_results,
+                               mojom::SearchResultExtractor::Status status,
+                               mojom::CategoryResultsPtr results) {
+                              *out_status = status;
+                              *out_results = std::move(results);
+                              std::move(quit).Run();
+                            },
+                            loop.QuitClosure(), base::Unretained(&out_status),
+                            base::Unretained(&out_results)));
       loop.Run();
     }
     EXPECT_EQ(expected_status, out_status);
@@ -66,17 +68,13 @@
   result2->title = u"World";
 
   auto ad_group = mojom::ResultGroup::New();
-  ad_group->label = "Ads";
-  ad_group->is_ad_group = true;
+  ad_group->type = mojom::ResultType::kAds;
   ad_group->results.push_back(std::move(result1));
   ad_group->results.push_back(std::move(result2));
 
   auto expected_results = mojom::CategoryResults::New();
   expected_results->groups.push_back(std::move(ad_group));
 
-  // If only ads are present the status reports that there are no results as the
-  // organic search result extraction working is a requirement. However, the
-  // results for the ad group are still stored in the response.
   LoadHtmlAndExpectExtractedOutput(
       R"(<!doctype html>
          <body>
@@ -102,18 +100,30 @@
              </div>
            </div>
          </body>)",
-      mojom::SearchResultExtractor::Status::kNoResults,
+      {mojom::ResultType::kAds}, mojom::SearchResultExtractor::Status::kSuccess,
       std::move(expected_results));
 }
 
+TEST_F(SearchResultExtractorImplRenderViewTest, TestExtractNoAds) {
+  // If only ads are requested but ads are not present, the status still reports
+  // success because extracting ads is not a requirement.
+  LoadHtmlAndExpectExtractedOutput(
+      R"(<!doctype html>
+         <body>
+           <div>
+           </div>
+         </body>)",
+      {mojom::ResultType::kAds}, mojom::SearchResultExtractor::Status::kSuccess,
+      mojom::CategoryResults::New());
+}
+
 TEST_F(SearchResultExtractorImplRenderViewTest, TestExtractAdsAndResults) {
   auto ad_result = mojom::SearchResult::New();
   ad_result->link = GURL("https://www.example.com/");
   ad_result->title = u"Hello";
 
   auto ad_group = mojom::ResultGroup::New();
-  ad_group->label = "Ads";
-  ad_group->is_ad_group = true;
+  ad_group->type = mojom::ResultType::kAds;
   ad_group->results.push_back(std::move(ad_result));
 
   auto result1 = mojom::SearchResult::New();
@@ -125,8 +135,7 @@
   result2->title = u"Bar";
 
   auto result_group = mojom::ResultGroup::New();
-  result_group->label = "Search Results";
-  result_group->is_ad_group = false;
+  result_group->type = mojom::ResultType::kSearchResults;
   result_group->results.push_back(std::move(result1));
   result_group->results.push_back(std::move(result2));
 
@@ -180,11 +189,78 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kAds, mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kSuccess,
       std::move(expected_results));
 }
 
-TEST_F(SearchResultExtractorImplRenderViewTest, TestExtractResultsOnly) {}
+TEST_F(SearchResultExtractorImplRenderViewTest, TestExtractResultsOnly) {
+  auto result1 = mojom::SearchResult::New();
+  result1->link = GURL("https://www.foo.com/");
+  result1->title = u"Foo";
+
+  auto result2 = mojom::SearchResult::New();
+  result2->link = GURL("https://www.bar.com/");
+  result2->title = u"Bar";
+
+  auto result_group = mojom::ResultGroup::New();
+  result_group->type = mojom::ResultType::kSearchResults;
+  result_group->results.push_back(std::move(result1));
+  result_group->results.push_back(std::move(result2));
+
+  auto expected_results = mojom::CategoryResults::New();
+  expected_results->category_type = mojom::Category::kOrganic;
+  expected_results->groups.push_back(std::move(result_group));
+  LoadHtmlAndExpectExtractedOutput(
+      R"(<!doctype html>
+         <body>
+           <div>
+             <div></div>
+             <div id="tads">
+               <div>
+                 <div class="mnr-c foo">
+                   <a href="https://www.example.com/">
+                     <div></div>
+                     <div role="heading">
+                       <div>Hello</div>
+                     </div>
+                   </a>
+                 </div>
+               </div>
+             </div>
+             <div id="rso">
+               <div class="mnr-c">
+                 <div></div>
+                 <div>
+                   <a href="https://www.foo.com/">
+                     <div role="heading">Foo </div>
+                   </a>
+                 </div>
+               </div>
+               <div class="mnr-c">
+                 <div></div>
+                 <div>
+                   <a href="https://www.bar.com/">
+                     <div role="heading">Bar
+                     </div>
+                   </a>
+                 </div>
+               </div>
+               <div class="alpha">
+                 <div></div>
+                 <div>
+                   <a href="https://www.beta.com/">
+                     <div role="heading">Beta</div>
+                   </a>
+                 </div>
+               </div>
+             </div>
+           </div>
+         </body>)",
+      {mojom::ResultType::kSearchResults},
+      mojom::SearchResultExtractor::Status::kSuccess,
+      std::move(expected_results));
+}
 
 // The tests below this line are intended to test the branching of the
 // extractor. The goal is to ensure there are no scenarios where the extraction
@@ -203,6 +279,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -218,6 +295,7 @@
              </a>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -235,6 +313,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -253,6 +332,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -270,6 +350,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -287,6 +368,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -304,6 +386,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -321,6 +404,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -338,6 +422,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -355,6 +440,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -373,6 +459,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
@@ -390,6 +477,7 @@
              </div>
            </div>
          </body>)",
+      {mojom::ResultType::kSearchResults},
       mojom::SearchResultExtractor::Status::kNoResults,
       mojom::CategoryResults::New());
 }
diff --git a/components/continuous_search/renderer/search_result_extractor_impl.cc b/components/continuous_search/renderer/search_result_extractor_impl.cc
index 9909eb99..6328777 100644
--- a/components/continuous_search/renderer/search_result_extractor_impl.cc
+++ b/components/continuous_search/renderer/search_result_extractor_impl.cc
@@ -105,8 +105,7 @@
   }
 
   auto group = mojom::ResultGroup::New();
-  group->is_ad_group = true;
-  group->label = "Ads";
+  group->type = mojom::ResultType::kAds;
   if (!ExtractResultCards(ads, group)) {
     return false;
   }
@@ -123,8 +122,7 @@
   }
 
   auto group = mojom::ResultGroup::New();
-  group->is_ad_group = false;
-  group->label = "Search Results";
+  group->type = mojom::ResultType::kSearchResults;
   if (!ExtractResultCards(cards, group)) {
     return false;
   }
@@ -154,17 +152,28 @@
 SearchResultExtractorImpl::~SearchResultExtractorImpl() = default;
 
 void SearchResultExtractorImpl::ExtractCurrentSearchResults(
+    const std::vector<mojom::ResultType>& result_types,
     ExtractCurrentSearchResultsCallback callback) {
   auto category_result = mojom::CategoryResults::New();
 
   blink::WebDocument document = render_frame()->GetWebFrame()->GetDocument();
   category_result->document_url = GURL(document.Url());
 
-  ExtractAds(document, category_result);
-  if (!ExtractResults(document, category_result)) {
-    std::move(callback).Run(mojom::SearchResultExtractor::Status::kNoResults,
-                            std::move(category_result));
-    return;
+  for (const auto& result_type : result_types) {
+    switch (result_type) {
+      case mojom::ResultType::kAds:
+        ExtractAds(document, category_result);
+        break;
+      case mojom::ResultType::kSearchResults:
+        if (!ExtractResults(document, category_result)) {
+          // Extracting search results is a requirement, if requested.
+          std::move(callback).Run(
+              mojom::SearchResultExtractor::Status::kNoResults,
+              std::move(category_result));
+          return;
+        }
+        break;
+    }
   }
 
   std::move(callback).Run(mojom::SearchResultExtractor::Status::kSuccess,
diff --git a/components/continuous_search/renderer/search_result_extractor_impl.h b/components/continuous_search/renderer/search_result_extractor_impl.h
index 24805222..509c37c 100644
--- a/components/continuous_search/renderer/search_result_extractor_impl.h
+++ b/components/continuous_search/renderer/search_result_extractor_impl.h
@@ -5,6 +5,8 @@
 #ifndef COMPONENTS_CONTINUOUS_SEARCH_RENDERER_SEARCH_RESULT_EXTRACTOR_IMPL_H_
 #define COMPONENTS_CONTINUOUS_SEARCH_RENDERER_SEARCH_RESULT_EXTRACTOR_IMPL_H_
 
+#include <vector>
+
 #include "components/continuous_search/common/public/mojom/continuous_search.mojom.h"
 #include "content/public/renderer/render_frame.h"
 #include "content/public/renderer/render_frame_observer.h"
@@ -26,6 +28,7 @@
       delete;
 
   void ExtractCurrentSearchResults(
+      const std::vector<mojom::ResultType>& result_types,
       ExtractCurrentSearchResultsCallback callback) override;
 
  private:
diff --git a/components/device_reauth/BUILD.gn b/components/device_reauth/BUILD.gn
new file mode 100644
index 0000000..8e14a02
--- /dev/null
+++ b/components/device_reauth/BUILD.gn
@@ -0,0 +1,43 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+if (is_android) {
+  import("//build/config/android/config.gni")
+  import("//build/config/android/rules.gni")
+}
+
+static_library("device_reauth") {
+  sources = [
+    "biometric_authenticator.cc",
+    "biometric_authenticator.h",
+  ]
+
+  deps = [ "//base" ]
+}
+
+static_library("test_support") {
+  testonly = true
+  sources = [
+    "mock_biometric_authenticator.cc",
+    "mock_biometric_authenticator.h",
+  ]
+
+  deps = [
+    ":device_reauth",
+    "//base",
+    "//testing/gmock",
+  ]
+}
+
+if (is_android) {
+  android_library("device_reauth_java_enums") {
+    srcjar_deps = [ ":device_reauth_java_enums_srcjar" ]
+
+    deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ]
+  }
+
+  java_cpp_enum("device_reauth_java_enums_srcjar") {
+    sources = [ "biometric_authenticator.h" ]
+  }
+}
diff --git a/components/device_reauth/OWNERS b/components/device_reauth/OWNERS
new file mode 100644
index 0000000..275fae6
--- /dev/null
+++ b/components/device_reauth/OWNERS
@@ -0,0 +1,2 @@
+ioanap@chromium.org
+roagarwal@chromium.org
diff --git a/components/device_reauth/README.md b/components/device_reauth/README.md
new file mode 100644
index 0000000..d98843a
--- /dev/null
+++ b/components/device_reauth/README.md
@@ -0,0 +1,4 @@
+#Device reauth
+
+Provides stubs for device level re-authentication capabilities. Currently, covers only biometric reauthentication.
+The componenet is shared with iOS and hence dependencies on //content are not allowed.
diff --git a/components/device_reauth/biometric_authenticator.cc b/components/device_reauth/biometric_authenticator.cc
new file mode 100644
index 0000000..9fba9a4
--- /dev/null
+++ b/components/device_reauth/biometric_authenticator.cc
@@ -0,0 +1,11 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/device_reauth/biometric_authenticator.h"
+
+namespace device_reauth {
+
+BiometricAuthenticator::BiometricAuthenticator() = default;
+
+}  // namespace device_reauth
diff --git a/components/password_manager/core/browser/biometric_authenticator.h b/components/device_reauth/biometric_authenticator.h
similarity index 90%
rename from components/password_manager/core/browser/biometric_authenticator.h
rename to components/device_reauth/biometric_authenticator.h
index 9cdb611..f0862a4c 100644
--- a/components/password_manager/core/browser/biometric_authenticator.h
+++ b/components/device_reauth/biometric_authenticator.h
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_BIOMETRIC_AUTHENTICATOR_H_
-#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_BIOMETRIC_AUTHENTICATOR_H_
+#ifndef COMPONENTS_DEVICE_REAUTH_BIOMETRIC_AUTHENTICATOR_H_
+#define COMPONENTS_DEVICE_REAUTH_BIOMETRIC_AUTHENTICATOR_H_
 
 #include "base/callback_forward.h"
 #include "base/memory/ref_counted.h"
 
-namespace password_manager {
+namespace device_reauth {
 
 // Different states for biometric availability for a given device. Either no
 // biometric hardware is available, hardware is available but the user has no
@@ -17,7 +17,7 @@
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused.
 //
-// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.password_manager
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.device_reauth
 enum class BiometricsAvailability {
   kOtherError = 0,
   kAvailable = 1,
@@ -89,7 +89,7 @@
  public:
   using AuthenticateCallback = base::OnceCallback<void(bool)>;
 
-  BiometricAuthenticator() = default;
+  BiometricAuthenticator();
   BiometricAuthenticator(const BiometricAuthenticator&) = delete;
   BiometricAuthenticator& operator=(const BiometricAuthenticator&) = delete;
 
@@ -115,6 +115,6 @@
   friend class base::RefCounted<BiometricAuthenticator>;
 };
 
-}  // namespace password_manager
+}  // namespace device_reauth
 
-#endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_BIOMETRIC_AUTHENTICATOR_H_
+#endif  // COMPONENTS_DEVICE_REAUTH_BIOMETRIC_AUTHENTICATOR_H_
diff --git a/components/password_manager/core/browser/mock_biometric_authenticator.cc b/components/device_reauth/mock_biometric_authenticator.cc
similarity index 67%
rename from components/password_manager/core/browser/mock_biometric_authenticator.cc
rename to components/device_reauth/mock_biometric_authenticator.cc
index 50377d3..abdf2c9 100644
--- a/components/password_manager/core/browser/mock_biometric_authenticator.cc
+++ b/components/device_reauth/mock_biometric_authenticator.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 "components/password_manager/core/browser/mock_biometric_authenticator.h"
+#include "components/device_reauth/mock_biometric_authenticator.h"
 
-namespace password_manager {
+namespace device_reauth {
 
 MockBiometricAuthenticator::MockBiometricAuthenticator() = default;
 MockBiometricAuthenticator::~MockBiometricAuthenticator() = default;
 
-}  // namespace password_manager
+}  // namespace device_reauth
diff --git a/components/password_manager/core/browser/mock_biometric_authenticator.h b/components/device_reauth/mock_biometric_authenticator.h
similarity index 65%
rename from components/password_manager/core/browser/mock_biometric_authenticator.h
rename to components/device_reauth/mock_biometric_authenticator.h
index a5c34cf..2824035 100644
--- a/components/password_manager/core/browser/mock_biometric_authenticator.h
+++ b/components/device_reauth/mock_biometric_authenticator.h
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_MOCK_BIOMETRIC_AUTHENTICATOR_H_
-#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_MOCK_BIOMETRIC_AUTHENTICATOR_H_
+#ifndef COMPONENTS_DEVICE_REAUTH_MOCK_BIOMETRIC_AUTHENTICATOR_H_
+#define COMPONENTS_DEVICE_REAUTH_MOCK_BIOMETRIC_AUTHENTICATOR_H_
 
 #include "base/callback.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
-namespace password_manager {
+namespace device_reauth {
 
 // Mocked BiometricAuthenticator used by unit tests.
 class MockBiometricAuthenticator : public BiometricAuthenticator {
@@ -27,6 +27,6 @@
   ~MockBiometricAuthenticator() override;
 };
 
-}  // namespace password_manager
+}  // namespace device_reauth
 
-#endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_MOCK_BIOMETRIC_AUTHENTICATOR_H_
\ No newline at end of file
+#endif  // COMPONENTS_DEVICE_REAUTH_MOCK_BIOMETRIC_AUTHENTICATOR_H_
\ No newline at end of file
diff --git a/chrome/browser/resources/download_internals/BUILD.gn b/components/download/resources/download_internals/BUILD.gn
similarity index 95%
rename from chrome/browser/resources/download_internals/BUILD.gn
rename to components/download/resources/download_internals/BUILD.gn
index 0b90251..ce7668b 100644
--- a/chrome/browser/resources/download_internals/BUILD.gn
+++ b/components/download/resources/download_internals/BUILD.gn
@@ -21,8 +21,6 @@
 }
 
 grit("resources") {
-  defines = chrome_grit_defines
-
   # These arguments are needed since the grd is generated at build time.
   enable_input_discovery_for_gn_analyze = false
   source = "$target_gen_dir/resources.grd"
@@ -34,7 +32,7 @@
     "grit/download_internals_resources_map.h",
     "download_internals_resources.pak",
   ]
-  output_dir = "$root_gen_dir/chrome"
+  output_dir = "$root_gen_dir/components"
 }
 
 js_type_check("closure_compile") {
diff --git a/chrome/browser/resources/download_internals/download_internals.css b/components/download/resources/download_internals/download_internals.css
similarity index 100%
rename from chrome/browser/resources/download_internals/download_internals.css
rename to components/download/resources/download_internals/download_internals.css
diff --git a/chrome/browser/resources/download_internals/download_internals.html b/components/download/resources/download_internals/download_internals.html
similarity index 100%
rename from chrome/browser/resources/download_internals/download_internals.html
rename to components/download/resources/download_internals/download_internals.html
diff --git a/chrome/browser/resources/download_internals/download_internals.js b/components/download/resources/download_internals/download_internals.js
similarity index 100%
rename from chrome/browser/resources/download_internals/download_internals.js
rename to components/download/resources/download_internals/download_internals.js
diff --git a/chrome/browser/resources/download_internals/download_internals_browser_proxy.js b/components/download/resources/download_internals/download_internals_browser_proxy.js
similarity index 100%
rename from chrome/browser/resources/download_internals/download_internals_browser_proxy.js
rename to components/download/resources/download_internals/download_internals_browser_proxy.js
diff --git a/chrome/browser/resources/download_internals/download_internals_visuals.js b/components/download/resources/download_internals/download_internals_visuals.js
similarity index 100%
rename from chrome/browser/resources/download_internals/download_internals_visuals.js
rename to components/download/resources/download_internals/download_internals_visuals.js
diff --git a/components/gcm_driver/gcm_account_tracker.cc b/components/gcm_driver/gcm_account_tracker.cc
index fec1e8c..f1746f1d 100644
--- a/components/gcm_driver/gcm_account_tracker.cc
+++ b/components/gcm_driver/gcm_account_tracker.cc
@@ -276,6 +276,10 @@
   if (!driver_->IsConnected())
     return;
 
+  // Only start fetching access tokens if the user consented for sync.
+  if (!identity_manager_->HasPrimaryAccount(signin::ConsentLevel::kSync))
+    return;
+
   for (auto iter = account_infos_.begin(); iter != account_infos_.end();
        ++iter) {
     if (iter->second.state == TOKEN_NEEDED)
diff --git a/components/gcm_driver/gcm_account_tracker_unittest.cc b/components/gcm_driver/gcm_account_tracker_unittest.cc
index cbc0a28..a8dfbd4 100644
--- a/components/gcm_driver/gcm_account_tracker_unittest.cc
+++ b/components/gcm_driver/gcm_account_tracker_unittest.cc
@@ -11,6 +11,7 @@
 
 #include "base/macros.h"
 #include "base/test/task_environment.h"
+#include "build/chromeos_buildflags.h"
 #include "components/gcm_driver/fake_gcm_driver.h"
 #include "components/signin/public/identity_manager/identity_test_environment.h"
 #include "google_apis/gaia/google_service_auth_error.h"
@@ -162,6 +163,7 @@
   // Helpers to pass fake info to the tracker.
   CoreAccountInfo AddAccount(const std::string& email);
   CoreAccountInfo SetPrimaryAccount(const std::string& email);
+  void ClearPrimaryAccount();
   void RemoveAccount(const CoreAccountId& account_id);
 
   // Helpers for dealing with OAuth2 access token requests.
@@ -223,6 +225,10 @@
       email, signin::ConsentLevel::kSync);
 }
 
+void GCMAccountTrackerTest::ClearPrimaryAccount() {
+  identity_test_env_.ClearPrimaryAccount();
+}
+
 void GCMAccountTrackerTest::RemoveAccount(const CoreAccountId& account_id) {
   identity_test_env_.RemoveRefreshTokenForAccount(account_id);
 }
@@ -335,6 +341,29 @@
   VerifyAccountTokens(expected_accounts, driver()->accounts());
 }
 
+#if !BUILDFLAG(IS_CHROMEOS_ASH)
+// Tests that clearing the primary account when having multiple accounts
+// does not crash the application.
+// Regression test for crbug.com/1234406
+TEST_F(GCMAccountTrackerTest, AccountRemovedWithoutSyncConsentNoCrash) {
+  CoreAccountInfo account1 = SetPrimaryAccount(kEmail1);
+  CoreAccountInfo account2 = AddAccount(kEmail2);
+
+  // Set last fetch time to now so that access token fetch is not required
+  // but not started.
+  driver()->SetLastTokenFetchTime(base::Time::Now());
+  tracker()->Start();
+  EXPECT_FALSE(driver()->update_accounts_called());
+
+  // Reset the last fetch time to verify that clearing the primary account
+  // will not trigger a token fetch.
+  driver()->SetLastTokenFetchTime(base::Time());
+  EXPECT_EQ(base::TimeDelta(), GetTimeToNextTokenReporting());
+  ClearPrimaryAccount();
+  EXPECT_TRUE(driver()->update_accounts_called());
+}
+#endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
+
 TEST_F(GCMAccountTrackerTest, GetTokenFailed) {
   CoreAccountInfo account1 = SetPrimaryAccount(kEmail1);
   CoreAccountInfo account2 = AddAccount(kEmail2);
diff --git a/components/omnibox/browser/actions/omnibox_pedal_implementations.cc b/components/omnibox/browser/actions/omnibox_pedal_implementations.cc
index 9c696df..a30324c0 100644
--- a/components/omnibox/browser/actions/omnibox_pedal_implementations.cc
+++ b/components/omnibox/browser/actions/omnibox_pedal_implementations.cc
@@ -1085,7 +1085,7 @@
   bool IsReadyToTrigger(
       const AutocompleteInput& input,
       const AutocompleteProviderClient& client) const override {
-    return client.GetPrefs()->GetBoolean("AllowDinosaurEasterEgg");
+    return client.GetPrefs()->GetBoolean("allow_dinosaur_easter_egg");
   }
 
  protected:
diff --git a/components/password_manager/DEPS b/components/password_manager/DEPS
index 33b8431..68ccc86 100644
--- a/components/password_manager/DEPS
+++ b/components/password_manager/DEPS
@@ -1,7 +1,6 @@
 include_rules = [
   "+components/autofill/core/common",
   "+components/os_crypt",
-  "+components/password_manager/core",
   "+components/prefs",
   "+components/strings/grit",
   "+components/sync/model",
diff --git a/components/password_manager/core/browser/BUILD.gn b/components/password_manager/core/browser/BUILD.gn
index c94ba266..17de4d8 100644
--- a/components/password_manager/core/browser/BUILD.gn
+++ b/components/password_manager/core/browser/BUILD.gn
@@ -38,7 +38,6 @@
     "android_affiliation/facet_manager_host.h",
     "android_affiliation/lookup_affiliation_response_parser.cc",
     "android_affiliation/lookup_affiliation_response_parser.h",
-    "biometric_authenticator.h",
     "browser_save_password_progress_logger.cc",
     "browser_save_password_progress_logger.h",
     "bulk_leak_check_service.cc",
@@ -277,6 +276,7 @@
     "//components/autofill/core/browser/proto",
     "//components/autofill/core/common",
     "//components/autofill/core/common/mojom:mojo_types",
+    "//components/device_reauth",
     "//components/favicon/core",
     "//components/keyed_service/core",
     "//components/os_crypt",
@@ -440,7 +440,6 @@
 
   java_cpp_enum("password_manager_java_enums_srcjar") {
     sources = [
-      "biometric_authenticator.h",
       "manage_passwords_referrer.h",
       "password_manager_metrics_util.h",
     ]
@@ -496,8 +495,6 @@
     "fake_form_fetcher.h",
     "fake_password_store_backend.cc",
     "fake_password_store_backend.h",
-    "mock_biometric_authenticator.cc",
-    "mock_biometric_authenticator.h",
     "mock_bulk_leak_check_service.cc",
     "mock_bulk_leak_check_service.h",
     "mock_field_info_store.cc",
@@ -732,6 +729,8 @@
     "//components/autofill/core/browser:test_support",
     "//components/autofill/core/browser/proto",
     "//components/autofill/core/common",
+    "//components/device_reauth",
+    "//components/device_reauth:test_support",
     "//components/favicon/core/test:test_support",
     "//components/os_crypt",
     "//components/os_crypt:test_support",
diff --git a/components/password_manager/core/browser/DEPS b/components/password_manager/core/browser/DEPS
index 4b5b4fb5..62a2918 100644
--- a/components/password_manager/core/browser/DEPS
+++ b/components/password_manager/core/browser/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   "+components/autofill/core/browser",
+  "+components/device_reauth",
   "+components/favicon/core",
   "+components/keyed_service/core",
   "+components/profile_metrics",
diff --git a/components/password_manager/core/browser/form_parsing/form_parser.cc b/components/password_manager/core/browser/form_parsing/form_parser.cc
index 8b08c44..ac4cc7a 100644
--- a/components/password_manager/core/browser/form_parsing/form_parser.cc
+++ b/components/password_manager/core/browser/form_parsing/form_parser.cc
@@ -512,6 +512,7 @@
 // (1) Passwords with Interactability below |best_interactability| are removed.
 // (2) If |mode| == |kSaving|, passwords with empty values are removed.
 // (3) Passwords for which IsLikelyPassword returns false are removed.
+// (4) Field parsed as username is removed.
 // If applying rules (1)-(3) results in a non-empty vector of password fields,
 // that vector is returned. Otherwise, only rules (1) and (2) are applied and
 // the result returned (even if it is empty).
@@ -525,7 +526,8 @@
     FormDataParser::Mode mode,
     Interactability best_interactability,
     FormDataParser::ReadonlyPasswordFields* readonly_status,
-    bool* is_fallback) {
+    bool* is_fallback,
+    const FormFieldData* username) {
   DCHECK(readonly_status);
   DCHECK(is_fallback);
 
@@ -565,6 +567,15 @@
                [&ignored_readonly](const ProcessedField* processed_field) {
                  return IsLikelyPassword(*processed_field, &ignored_readonly);
                });
+
+  // Step 4: remove the field parsed as username, if needed.
+  if (username && username->IsPasswordInputElement()) {
+    base::EraseIf(filtered, [username](const ProcessedField* processed_field) {
+      return processed_field->field->unique_renderer_id ==
+             username->unique_renderer_id;
+    });
+  }
+
   // Compute the readonly statistic for metrics.
   DCHECK_LE(ignored_readonly, all_passwords_seen);
   if (ignored_readonly == 0)
@@ -743,9 +754,9 @@
 
     // Try to find password elements (current, new, confirmation) among those
     // with best interactability.
-    std::vector<const FormFieldData*> passwords =
-        GetRelevantPasswords(processed_fields, mode, password_max,
-                             readonly_status, &found_fields->is_fallback);
+    std::vector<const FormFieldData*> passwords = GetRelevantPasswords(
+        processed_fields, mode, password_max, readonly_status,
+        &found_fields->is_fallback, found_fields->username);
     if (passwords.empty())
       return;
     LocateSpecificPasswords(passwords, &found_fields->password,
diff --git a/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc b/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
index 0285015..09dfdc3 100644
--- a/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
+++ b/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
@@ -2829,6 +2829,29 @@
        }});
 }
 
+// Tests that if the field is parsed as username based on server predictions,
+// than it cannot be picked as password based on local heuristics.
+TEST(FormParserTest, UsernameWithTypePasswordAndServerPredictions) {
+  CheckTestData({
+      {
+          .description_for_logging =
+              "Username with server predictions and type 'password'",
+          .fields =
+              {
+                  {.role = ElementRole::USERNAME,
+                   .value = u"testusername",
+                   .name = u"field1",
+                   .form_control_type = "password",
+                   .prediction = {.type = autofill::USERNAME}},
+                  {.role = ElementRole::CURRENT_PASSWORD,
+                   .value = u"testpass",
+                   .name = u"field2",
+                   .form_control_type = "password"},
+              },
+      },
+  });
+}
+
 }  // namespace
 
 }  // namespace password_manager
diff --git a/components/password_manager/core/browser/mock_password_store.h b/components/password_manager/core/browser/mock_password_store.h
index b100e567..ee39a29 100644
--- a/components/password_manager/core/browser/mock_password_store.h
+++ b/components/password_manager/core/browser/mock_password_store.h
@@ -71,16 +71,6 @@
               ReportMetricsImpl,
               (const std::string&, bool, BulkCheckDone),
               (override));
-  MOCK_METHOD(PasswordStoreChangeList,
-              AddInsecureCredentialImpl,
-              (const InsecureCredential&),
-              (override));
-  MOCK_METHOD(PasswordStoreChangeList,
-              RemoveInsecureCredentialsImpl,
-              (const std::string&,
-               const std::u16string&,
-               RemoveInsecureCredentialsReason),
-              (override));
   MOCK_METHOD(std::vector<InsecureCredential>,
               GetAllInsecureCredentialsImpl,
               (),
diff --git a/components/password_manager/core/browser/password_autofill_manager.cc b/components/password_manager/core/browser/password_autofill_manager.cc
index 01bedd0..ab3c798 100644
--- a/components/password_manager/core/browser/password_autofill_manager.cc
+++ b/components/password_manager/core/browser/password_autofill_manager.cc
@@ -32,9 +32,9 @@
 #include "components/autofill/core/common/autofill_util.h"
 #include "components/autofill/core/common/password_form_fill_data.h"
 #include "components/autofill/core/common/password_generation_util.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/favicon/core/favicon_util.h"
 #include "components/password_manager/core/browser/android_affiliation/affiliation_utils.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
 #include "components/password_manager/core/browser/password_feature_manager.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
 #include "components/password_manager/core/browser/password_manager_driver.h"
@@ -433,7 +433,7 @@
         PasswordDropdownSelectedOption::kPassword,
         password_client_->IsIncognito());
 
-    scoped_refptr<BiometricAuthenticator> authenticator =
+    scoped_refptr<device_reauth::BiometricAuthenticator> authenticator =
         password_client_->GetBiometricAuthenticator();
     // Note: this is currently only implemented on Android. For desktop,
     // the `authenticator` will be null.
@@ -446,7 +446,7 @@
       // invalidates the callback, so using base::Unretained here is safe.
       authenticator_ = std::move(authenticator);
       authenticator_->Authenticate(
-          BiometricAuthRequester::kAutofillSuggestion,
+          device_reauth::BiometricAuthRequester::kAutofillSuggestion,
           base::BindOnce(&PasswordAutofillManager::OnBiometricReauthCompleted,
                          base::Unretained(this), value, frontend_id));
     }
@@ -816,7 +816,8 @@
 void PasswordAutofillManager::CancelBiometricReauthIfOngoing() {
   if (!authenticator_)
     return;
-  authenticator_->Cancel(BiometricAuthRequester::kAutofillSuggestion);
+  authenticator_->Cancel(
+      device_reauth::BiometricAuthRequester::kAutofillSuggestion);
   authenticator_.reset();
 }
 
diff --git a/components/password_manager/core/browser/password_autofill_manager.h b/components/password_manager/core/browser/password_autofill_manager.h
index e2bec94..62cec94 100644
--- a/components/password_manager/core/browser/password_autofill_manager.h
+++ b/components/password_manager/core/browser/password_autofill_manager.h
@@ -218,7 +218,7 @@
   // Used to trigger a reauthentication prompt based on biometrics that needs
   // to be cleared before the password is filled. Currently only used
   // on Android.
-  scoped_refptr<BiometricAuthenticator> authenticator_;
+  scoped_refptr<device_reauth::BiometricAuthenticator> authenticator_;
 
   base::WeakPtrFactory<PasswordAutofillManager> weak_ptr_factory_{this};
 
diff --git a/components/password_manager/core/browser/password_autofill_manager_unittest.cc b/components/password_manager/core/browser/password_autofill_manager_unittest.cc
index f21df6e..a992485 100644
--- a/components/password_manager/core/browser/password_autofill_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_autofill_manager_unittest.cc
@@ -29,9 +29,9 @@
 #include "components/autofill/core/common/form_field_data.h"
 #include "components/autofill/core/common/password_form_fill_data.h"
 #include "components/autofill/core/common/password_generation_util.h"
+#include "components/device_reauth/biometric_authenticator.h"
+#include "components/device_reauth/mock_biometric_authenticator.h"
 #include "components/favicon/core/test/mock_favicon_service.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
-#include "components/password_manager/core/browser/mock_biometric_authenticator.h"
 #include "components/password_manager/core/browser/mock_password_feature_manager.h"
 #include "components/password_manager/core/browser/password_manager.h"
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
@@ -71,6 +71,8 @@
 using autofill::SuggestionVectorValuesAre;
 using autofill::password_generation::PasswordGenerationType;
 using base::test::RunOnceCallback;
+using device_reauth::BiometricAuthRequester;
+using device_reauth::BiometricsAvailability;
 using favicon_base::FaviconImageCallback;
 using gfx::test::AreImagesEqual;
 using testing::_;
@@ -152,11 +154,13 @@
   }
 
   void SetBiometricAuthenticator(
-      scoped_refptr<MockBiometricAuthenticator> biometric_authenticator) {
+      scoped_refptr<device_reauth::MockBiometricAuthenticator>
+          biometric_authenticator) {
     biometric_authenticator_ = std::move(biometric_authenticator);
   }
 
-  scoped_refptr<BiometricAuthenticator> GetBiometricAuthenticator() override {
+  scoped_refptr<device_reauth::BiometricAuthenticator>
+  GetBiometricAuthenticator() override {
     return biometric_authenticator_;
   }
 
@@ -175,7 +179,8 @@
 
  private:
   MockPasswordManagerDriver driver_;
-  scoped_refptr<MockBiometricAuthenticator> biometric_authenticator_ = nullptr;
+  scoped_refptr<device_reauth::MockBiometricAuthenticator>
+      biometric_authenticator_ = nullptr;
   signin::IdentityTestEnvironment identity_test_env_;
   std::unique_ptr<MockPasswordFeatureManager> feature_manager_{
       new NiceMock<MockPasswordFeatureManager>};
@@ -330,8 +335,8 @@
 
   std::unique_ptr<PasswordAutofillManager> password_autofill_manager_;
 
-  scoped_refptr<MockBiometricAuthenticator> authenticator_ =
-      base::MakeRefCounted<MockBiometricAuthenticator>();
+  scoped_refptr<device_reauth::MockBiometricAuthenticator> authenticator_ =
+      base::MakeRefCounted<device_reauth::MockBiometricAuthenticator>();
 
   std::u16string test_username_;
   std::u16string test_password_;
@@ -1506,8 +1511,7 @@
 
     // The authenticator exists, but cannot be used for authentication.
     EXPECT_CALL(*authenticator_.get(), CanAuthenticate())
-        .WillOnce(
-            Return(password_manager::BiometricsAvailability::kNoHardware));
+        .WillOnce(Return(BiometricsAvailability::kNoHardware));
 
     // Accept the suggestion to start the filing process which tries to
     // reauthenticate the user if possible.
@@ -1559,7 +1563,7 @@
 
     // The authenticator exists and is available.
     EXPECT_CALL(*authenticator_.get(), CanAuthenticate())
-        .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
+        .WillOnce(Return(BiometricsAvailability::kAvailable));
     EXPECT_CALL(*authenticator_.get(),
                 Authenticate(BiometricAuthRequester::kAutofillSuggestion, _))
         .WillOnce(RunOnceCallback<1>(/*auth_succeeded=*/true));
@@ -1614,7 +1618,7 @@
 
     // The authenticator exists and is available.
     EXPECT_CALL(*authenticator_.get(), CanAuthenticate())
-        .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
+        .WillOnce(Return(BiometricsAvailability::kAvailable));
     EXPECT_CALL(*authenticator_.get(),
                 Authenticate(BiometricAuthRequester::kAutofillSuggestion, _))
         .WillOnce(RunOnceCallback<1>(/*auth_succeeded=*/false));
@@ -1656,7 +1660,7 @@
 
   // The authenticator exists and is available.
   EXPECT_CALL(*authenticator_.get(), CanAuthenticate())
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
   EXPECT_CALL(*authenticator_.get(),
               Authenticate(BiometricAuthRequester::kAutofillSuggestion, _));
 
@@ -1699,7 +1703,7 @@
 
   // The authenticator exists and is available.
   EXPECT_CALL(*authenticator_.get(), CanAuthenticate())
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
   EXPECT_CALL(*authenticator_.get(),
               Authenticate(BiometricAuthRequester::kAutofillSuggestion, _));
 
@@ -1743,7 +1747,7 @@
 
   // The authenticator exists and is available.
   EXPECT_CALL(*authenticator_.get(), CanAuthenticate())
-      .WillOnce(Return(password_manager::BiometricsAvailability::kAvailable));
+      .WillOnce(Return(BiometricsAvailability::kAvailable));
   EXPECT_CALL(*authenticator_.get(),
               Authenticate(BiometricAuthRequester::kAutofillSuggestion, _));
 
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
index bd6435e..c2a4533 100644
--- a/components/password_manager/core/browser/password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -2199,7 +2199,10 @@
 // flow both on password saving and updating.
 TEST_P(PasswordFormManagerTest, UsernameFirstFlow) {
   base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kUsernameFirstFlow);
+  feature_list.InitWithFeatures(
+      /*enabled_features=*/{features::kUsernameFirstFlow,
+                            features::kUsernameFirstFlowFallbackCrowdsourcing},
+      /*disabled_features=*/{});
 
   for (bool is_password_update : {false, true}) {
     CreateFormManager(observed_form_only_password_fields_);
@@ -2287,7 +2290,10 @@
       .WillByDefault(Return(&mock_field_manager));
 
   base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kUsernameFirstFlow);
+  feature_list.InitWithFeatures(
+      /*enabled_features=*/{features::kUsernameFirstFlow,
+                            features::kUsernameFirstFlowFallbackCrowdsourcing},
+      /*disabled_features=*/{});
 
   CreateFormManager(observed_form_only_password_fields_);
   fetcher_->NotifyFetchCompleted();
@@ -2338,7 +2344,10 @@
 // sent for a nameless field.
 TEST_P(PasswordFormManagerTest, UsernameFirstFlowVotesNamelessField) {
   base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kUsernameFirstFlow);
+  feature_list.InitWithFeatures(
+      /*enabled_features=*/{features::kUsernameFirstFlow,
+                            features::kUsernameFirstFlowFallbackCrowdsourcing},
+      /*disabled_features=*/{});
 
   CreateFormManager(observed_form_only_password_fields_);
   fetcher_->NotifyFetchCompleted();
diff --git a/components/password_manager/core/browser/password_manager_client.cc b/components/password_manager/core/browser/password_manager_client.cc
index 8e903b5..9797115 100644
--- a/components/password_manager/core/browser/password_manager_client.cc
+++ b/components/password_manager/core/browser/password_manager_client.cc
@@ -6,7 +6,7 @@
 
 #include "base/macros.h"
 #include "components/autofill/core/common/password_generation_util.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/core/browser/http_auth_manager.h"
 #include "components/password_manager/core/browser/password_form_manager_for_ui.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
@@ -31,7 +31,7 @@
 
 void PasswordManagerClient::OnPasswordSelected(const std::u16string& text) {}
 
-scoped_refptr<BiometricAuthenticator>
+scoped_refptr<device_reauth::BiometricAuthenticator>
 PasswordManagerClient::GetBiometricAuthenticator() {
   return nullptr;
 }
diff --git a/components/password_manager/core/browser/password_manager_client.h b/components/password_manager/core/browser/password_manager_client.h
index 240c3e4..0f59af27 100644
--- a/components/password_manager/core/browser/password_manager_client.h
+++ b/components/password_manager/core/browser/password_manager_client.h
@@ -66,11 +66,14 @@
 class PasswordProtectionService;
 }
 
+namespace device_reauth {
+class BiometricAuthenticator;
+}
+
 namespace password_manager {
 
 class FieldInfoManager;
 class PasswordFeatureManager;
-class BiometricAuthenticator;
 class PasswordFormManagerForUI;
 class PasswordManagerDriver;
 class PasswordManagerMetricsRecorder;
@@ -180,7 +183,8 @@
 
   // Returns a pointer to a BiometricAuthenticator. Might be null if
   // BiometricAuthentication is not available for a given platform.
-  virtual scoped_refptr<BiometricAuthenticator> GetBiometricAuthenticator();
+  virtual scoped_refptr<device_reauth::BiometricAuthenticator>
+  GetBiometricAuthenticator();
 
   // Informs the embedder that the user has requested to generate a
   // password in the focused password field.
diff --git a/components/password_manager/core/browser/password_manager_test_utils.h b/components/password_manager/core/browser/password_manager_test_utils.h
index 487b2869..0bfcc201 100644
--- a/components/password_manager/core/browser/password_manager_test_utils.h
+++ b/components/password_manager/core/browser/password_manager_test_utils.h
@@ -34,6 +34,13 @@
   return store;
 }
 
+template <class Context, class Store>
+scoped_refptr<RefcountedKeyedService> BuildPasswordStoreInterface(
+    Context* context) {
+  scoped_refptr<password_manager::PasswordStoreInterface> store(new Store);
+  return store;
+}
+
 // As above, but allows passing parameters to the to-be-created store. The
 // parameters are specified *before* context so that they can be bound (as in
 // base::BindRepeating(&BuildPasswordStoreWithArgs<...>, my_arg)), leaving
diff --git a/components/password_manager/core/browser/password_manager_util.cc b/components/password_manager/core/browser/password_manager_util.cc
index 717b835..bddec038 100644
--- a/components/password_manager/core/browser/password_manager_util.cc
+++ b/components/password_manager/core/browser/password_manager_util.cc
@@ -336,11 +336,10 @@
   return result;
 }
 
-bool CanUseBiometricAuth(
-    password_manager::BiometricAuthenticator* authenticator) {
+bool CanUseBiometricAuth(device_reauth::BiometricAuthenticator* authenticator) {
   return authenticator &&
          authenticator->CanAuthenticate() ==
-             password_manager::BiometricsAvailability::kAvailable &&
+             device_reauth::BiometricsAvailability::kAvailable &&
          base::FeatureList::IsEnabled(
              password_manager::features::kBiometricTouchToFill);
 }
diff --git a/components/password_manager/core/browser/password_manager_util.h b/components/password_manager/core/browser/password_manager_util.h
index c62c8ea..3d7c8bb 100644
--- a/components/password_manager/core/browser/password_manager_util.h
+++ b/components/password_manager/core/browser/password_manager_util.h
@@ -11,7 +11,7 @@
 
 #include "base/callback.h"
 #include "base/time/time.h"
-#include "components/password_manager/core/browser/biometric_authenticator.h"
+#include "components/device_reauth/biometric_authenticator.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
 #include "components/password_manager/core/browser/password_store.h"
@@ -143,8 +143,7 @@
     password_manager::PasswordFormDigest digest);
 
 // Helper which checks if biometric authentication is available.
-bool CanUseBiometricAuth(
-    password_manager::BiometricAuthenticator* authenticator);
+bool CanUseBiometricAuth(device_reauth::BiometricAuthenticator* authenticator);
 
 }  // namespace password_manager_util
 
diff --git a/components/password_manager/core/browser/password_store.cc b/components/password_manager/core/browser/password_store.cc
index 9f2cca3..e1e88b4 100644
--- a/components/password_manager/core/browser/password_store.cc
+++ b/components/password_manager/core/browser/password_store.cc
@@ -323,27 +323,6 @@
                                              base::TimeDelta::FromSeconds(30));
   }
 }
-void PasswordStore::AddInsecureCredential(
-    const InsecureCredential& insecure_credential) {
-  DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
-  auto callback = base::BindOnce(&PasswordStore::AddInsecureCredentialImpl,
-                                 this, insecure_credential);
-  ScheduleTask(base::BindOnce(
-      &PasswordStore::InvokeAndNotifyAboutInsecureCredentialsChange, this,
-      std::move(callback)));
-}
-
-void PasswordStore::RemoveInsecureCredentials(
-    const std::string& signon_realm,
-    const std::u16string& username,
-    RemoveInsecureCredentialsReason reason) {
-  DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
-  auto callback = base::BindOnce(&PasswordStore::RemoveInsecureCredentialsImpl,
-                                 this, signon_realm, username, reason);
-  ScheduleTask(base::BindOnce(
-      &PasswordStore::InvokeAndNotifyAboutInsecureCredentialsChange, this,
-      std::move(callback)));
-}
 
 void PasswordStore::GetAllInsecureCredentials(
     InsecureCredentialsConsumer* consumer) {
@@ -418,22 +397,6 @@
   LOG(ERROR) << "Called function without implementation: " << __func__;
 }
 
-PasswordStoreChangeList PasswordStore::AddInsecureCredentialImpl(
-    const InsecureCredential& insecure_credential) {
-  // TODO(crbug.com/1217070): Move as implementation detail into backend.
-  LOG(ERROR) << "Called function without implementation: " << __func__;
-  return PasswordStoreChangeList();
-}
-
-PasswordStoreChangeList PasswordStore::RemoveInsecureCredentialsImpl(
-    const std::string& signon_realm,
-    const std::u16string& username,
-    RemoveInsecureCredentialsReason reason) {
-  // TODO(crbug.com/1217070): Move as implementation detail into backend.
-  LOG(ERROR) << "Called function without implementation: " << __func__;
-  return PasswordStoreChangeList();
-}
-
 std::vector<InsecureCredential> PasswordStore::GetAllInsecureCredentialsImpl() {
   // TODO(crbug.com/1217070): Move as implementation detail into backend.
   LOG(ERROR) << "Called function without implementation: " << __func__;
diff --git a/components/password_manager/core/browser/password_store.h b/components/password_manager/core/browser/password_store.h
index be11bb3..5b854ff 100644
--- a/components/password_manager/core/browser/password_store.h
+++ b/components/password_manager/core/browser/password_store.h
@@ -133,18 +133,6 @@
                              bool custom_passphrase_sync_enabled,
                              bool is_under_advanced_protection);
 
-  // Adds information about credentials issue on
-  // |insecure_credential.url| for |insecure_credential.username|. The
-  // first |insecure_credential.create_time| is kept, so if the record for
-  // given url and username already exists, the new one will be ignored.
-  void AddInsecureCredential(const InsecureCredential& insecure_credential);
-
-  // Removes information about insecure credentials on |signon_realm| for
-  // |username|.
-  void RemoveInsecureCredentials(const std::string& signon_realm,
-                                 const std::u16string& username,
-                                 RemoveInsecureCredentialsReason reason);
-
   // Retrieves all insecure credentials and notifies |consumer| on
   // completion. The request will be cancelled if the consumer is destroyed.
   void GetAllInsecureCredentials(InsecureCredentialsConsumer* consumer);
@@ -195,12 +183,6 @@
   // Synchronous implementation for manipulating with information about
   // insecure credentials.
   // Returns PasswordStoreChangeList for the updated password forms.
-  virtual PasswordStoreChangeList AddInsecureCredentialImpl(
-      const InsecureCredential& insecure_credential);
-  virtual PasswordStoreChangeList RemoveInsecureCredentialsImpl(
-      const std::string& signon_realm,
-      const std::u16string& username,
-      RemoveInsecureCredentialsReason reason);
   virtual std::vector<InsecureCredential> GetAllInsecureCredentialsImpl();
   virtual std::vector<InsecureCredential> GetMatchingInsecureCredentialsImpl(
       const std::string& signon_realm);
diff --git a/components/password_manager/core/browser/password_store_impl.cc b/components/password_manager/core/browser/password_store_impl.cc
index 31bf797..f60e033 100644
--- a/components/password_manager/core/browser/password_store_impl.cc
+++ b/components/password_manager/core/browser/password_store_impl.cc
@@ -27,19 +27,6 @@
 
 constexpr base::TimeDelta kSyncTaskTimeout = base::TimeDelta::FromSeconds(30);
 
-// Generates PasswordStoreChangeList for affected forms during
-// InsecureCredentials update.
-PasswordStoreChangeList BuildPasswordChangeListForInsecureCredentialsUpdate(
-    PrimaryKeyToFormMap key_to_form_map) {
-  PasswordStoreChangeList changes;
-  changes.reserve(key_to_form_map.size());
-  for (auto& pair : key_to_form_map) {
-    changes.emplace_back(PasswordStoreChange::UPDATE, std::move(*pair.second),
-                         pair.first);
-  }
-  return changes;
-}
-
 }  // namespace
 
 // TODO(crbug.com/1217071): Definition would clash with factory implementation
@@ -150,56 +137,6 @@
   }
 }
 
-PasswordStoreChangeList PasswordStoreImpl::AddInsecureCredentialImpl(
-    const InsecureCredential& credential) {
-  DCHECK(background_task_runner()->RunsTasksInCurrentSequence());
-  if (!login_db_ ||
-      !login_db_->insecure_credentials_table().AddRow(credential)) {
-    return {};
-  }
-
-  PrimaryKeyToFormMap key_to_form_map;
-  if (login_db_->GetLoginsBySignonRealmAndUsername(
-          credential.signon_realm, credential.username, key_to_form_map) !=
-      FormRetrievalResult::kSuccess) {
-    return {};
-  }
-
-  PasswordStoreChangeList changes =
-      BuildPasswordChangeListForInsecureCredentialsUpdate(
-          std::move(key_to_form_map));
-  if (sync_bridge_ && !changes.empty())
-    sync_bridge_->ActOnPasswordStoreChanges(changes);
-
-  return changes;
-}
-
-PasswordStoreChangeList PasswordStoreImpl::RemoveInsecureCredentialsImpl(
-    const std::string& signon_realm,
-    const std::u16string& username,
-    RemoveInsecureCredentialsReason reason) {
-  DCHECK(background_task_runner()->RunsTasksInCurrentSequence());
-  if (!login_db_ || !login_db_->insecure_credentials_table().RemoveRows(
-                        signon_realm, username, reason)) {
-    return {};
-  }
-
-  PrimaryKeyToFormMap key_to_form_map;
-  if (login_db_->GetLoginsBySignonRealmAndUsername(signon_realm, username,
-                                                   key_to_form_map) !=
-      FormRetrievalResult::kSuccess) {
-    return {};
-  }
-
-  PasswordStoreChangeList changes =
-      BuildPasswordChangeListForInsecureCredentialsUpdate(
-          std::move(key_to_form_map));
-  if (sync_bridge_ && !changes.empty())
-    sync_bridge_->ActOnPasswordStoreChanges(changes);
-
-  return changes;
-}
-
 std::vector<InsecureCredential>
 PasswordStoreImpl::GetAllInsecureCredentialsImpl() {
   DCHECK(background_task_runner()->RunsTasksInCurrentSequence());
diff --git a/components/password_manager/core/browser/password_store_impl.h b/components/password_manager/core/browser/password_store_impl.h
index d1ed5e8..04f8510 100644
--- a/components/password_manager/core/browser/password_store_impl.h
+++ b/components/password_manager/core/browser/password_store_impl.h
@@ -52,12 +52,6 @@
   PasswordStoreChangeList DisableAutoSignInForOriginsImpl(
       const base::RepeatingCallback<bool(const GURL&)>& origin_filter);
   DatabaseCleanupResult DeleteUndecryptableLogins() override;
-  PasswordStoreChangeList AddInsecureCredentialImpl(
-      const InsecureCredential& insecure_credential) override;
-  PasswordStoreChangeList RemoveInsecureCredentialsImpl(
-      const std::string& signon_realm,
-      const std::u16string& username,
-      RemoveInsecureCredentialsReason reason) override;
   std::vector<InsecureCredential> GetAllInsecureCredentialsImpl() override;
   std::vector<InsecureCredential> GetMatchingInsecureCredentialsImpl(
       const std::string& signon_realm) override;
@@ -85,8 +79,6 @@
  private:
   FRIEND_TEST_ALL_PREFIXES(PasswordStoreTest,
                            UpdatePasswordsStoredForAffiliatedWebsites);
-  FRIEND_TEST_ALL_PREFIXES(PasswordStoreTest, AddInsecureCredentialsSync);
-  FRIEND_TEST_ALL_PREFIXES(PasswordStoreTest, UpdateInsecureCredentialsSync);
 
   // Implements PasswordStoreBackend interface.
   void InitBackend(RemoteChangesReceived remote_form_changes_received,
diff --git a/components/password_manager/core/browser/password_store_unittest.cc b/components/password_manager/core/browser/password_store_unittest.cc
index eca52b1..02dc94a96 100644
--- a/components/password_manager/core/browser/password_store_unittest.cc
+++ b/components/password_manager/core/browser/password_store_unittest.cc
@@ -426,10 +426,6 @@
 // Verify that when a login is removed that the corresponding row is also
 // removed from the insecure credentials table.
 TEST_F(PasswordStoreTest, InsecureCredentialsObserverOnRemoveLogin) {
-  InsecureCredential insecure_credential(kTestWebRealm1, u"username_value_1",
-                                         base::Time::FromTimeT(1),
-                                         InsecureType::kLeaked, IsMuted(false));
-
   scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore();
   store->Init(nullptr);
 
@@ -441,12 +437,14 @@
        "", u"", u"username_element_1",  u"password_element_1",
        u"username_value_1",
        u"", kTestLastUsageTime, 1};
-  /* clang-format on */
 
+  /* clang-format on */
   std::unique_ptr<PasswordForm> test_form(
       FillPasswordFormWithData(kTestCredential));
+  test_form->password_issues = {
+      {InsecureType::kLeaked,
+       InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}};
   store->AddLogin(*test_form);
-  store->AddInsecureCredential(insecure_credential);
   WaitForPasswordStore();
 
   MockInsecureCredentialsConsumer consumer;
@@ -466,9 +464,6 @@
 // Verify that when a login password is updated that the corresponding row is
 // removed from the insecure credentials table.
 TEST_F(PasswordStoreTest, InsecureCredentialsObserverOnLoginUpdated) {
-  InsecureCredential insecure_credential(kTestWebRealm1, u"username_value_1",
-                                         base::Time::FromTimeT(1),
-                                         InsecureType::kLeaked, IsMuted(false));
   scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore();
   store->Init(nullptr);
 
@@ -484,8 +479,10 @@
 
   std::unique_ptr<PasswordForm> test_form(
       FillPasswordFormWithData(kTestCredential));
+  test_form->password_issues = {
+      {InsecureType::kLeaked,
+       InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}};
   store->AddLogin(*test_form);
-  store->AddInsecureCredential(insecure_credential);
   WaitForPasswordStore();
 
   MockInsecureCredentialsConsumer consumer;
@@ -523,8 +520,10 @@
 
   std::unique_ptr<PasswordForm> test_form(
       FillPasswordFormWithData(kTestCredential));
+  test_form->password_issues = {
+      {InsecureType::kLeaked,
+       InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}};
   store->AddLogin(*test_form);
-  store->AddInsecureCredential(insecure_credential);
   WaitForPasswordStore();
 
   MockInsecureCredentialsConsumer consumer;
@@ -553,13 +552,11 @@
                                                  u"password",
                                                  kTestLastUsageTime,
                                                  1};
-  InsecureCredential insecure_credential(kTestWebRealm1, u"username_value_1",
-                                         base::Time::FromTimeT(1),
-                                         InsecureType::kLeaked, IsMuted(false));
-
   scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore();
   store->Init(nullptr);
-  store->AddLogin(*FillPasswordFormWithData(kTestCredentials));
+  std::unique_ptr<PasswordForm> test_form(
+      FillPasswordFormWithData(kTestCredentials));
+  store->AddLogin(*test_form);
   WaitForPasswordStore();
 
   MockPasswordStoreObserver mock_observer;
@@ -567,12 +564,11 @@
 
   // Expect a notification after adding a credential.
   EXPECT_CALL(mock_observer, OnLoginsChanged);
-  store->AddInsecureCredential(insecure_credential);
-  WaitForPasswordStore();
+  test_form->password_issues = {
+      {InsecureType::kLeaked,
+       InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}};
+  store->UpdateLogin(*test_form);
 
-  // Adding the same credential should not result in another notification.
-  EXPECT_CALL(mock_observer, OnLoginsChanged).Times(0);
-  store->AddInsecureCredential(insecure_credential);
   WaitForPasswordStore();
 
   store->RemoveObserver(&mock_observer);
@@ -598,8 +594,12 @@
 
   scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore();
   store->Init(nullptr);
-  store->AddLogin(*FillPasswordFormWithData(kTestCredentials));
-  store->AddInsecureCredential(insecure_credential);
+  std::unique_ptr<PasswordForm> test_form(
+      FillPasswordFormWithData(kTestCredentials));
+  test_form->password_issues = {
+      {InsecureType::kLeaked,
+       InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}};
+  store->AddLogin(*test_form);
   WaitForPasswordStore();
 
   MockPasswordStoreObserver mock_observer;
@@ -607,16 +607,9 @@
 
   // Expect a notification after removing a credential.
   EXPECT_CALL(mock_observer, OnLoginsChanged);
-  store->RemoveInsecureCredentials(insecure_credential.signon_realm,
-                                   insecure_credential.username,
-                                   RemoveInsecureCredentialsReason::kRemove);
-  WaitForPasswordStore();
+  test_form->password_issues->clear();
+  store->UpdateLogin(*test_form);
 
-  // Removing the same credential should not result in another notification.
-  EXPECT_CALL(mock_observer, OnLoginsChanged).Times(0);
-  store->RemoveInsecureCredentials(insecure_credential.signon_realm,
-                                   insecure_credential.username,
-                                   RemoveInsecureCredentialsReason::kRemove);
   WaitForPasswordStore();
 
   store->RemoveObserver(&mock_observer);
@@ -1030,32 +1023,40 @@
       {PasswordForm::Scheme::kHtml, "https://2.example.com/",
        "https://2.example.com/", "", u"", u"", u"", u"username2", u"topsecret",
        kTestLastUsageTime, 1}};
+
   scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore();
   store->Init(nullptr);
 
-  for (const auto& data : kTestCredentials)
-    store->AddLogin(*FillPasswordFormWithData(data));
-  InsecureCredential insecure_credential("https://example.com/", u"username",
-                                         base::Time::FromTimeT(1),
-                                         InsecureType::kLeaked, IsMuted(false));
-  InsecureCredential insecure_credential2(
-      "https://2.example.com/", u"username2", base::Time::FromTimeT(2),
-      InsecureType::kLeaked, IsMuted(false));
+  for (const auto& data : kTestCredentials) {
+    std::unique_ptr<PasswordForm> form = FillPasswordFormWithData(data);
+    form->password_issues = {
+        {InsecureType::kLeaked,
+         InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}};
+    store->AddLogin(*form);
+  }
 
-  store->AddInsecureCredential(insecure_credential);
-  store->AddInsecureCredential(insecure_credential2);
   MockInsecureCredentialsConsumer consumer;
+  InsecureCredential expected_insecure_credential(
+      "https://example.com/", u"username",
+
+      base::Time::FromTimeT(1), InsecureType::kLeaked, IsMuted(false));
+  InsecureCredential expected_insecure_credential2(
+      "https://2.example.com/", u"username2", base::Time::FromTimeT(1),
+      InsecureType::kLeaked, IsMuted(false));
   EXPECT_CALL(consumer, OnGetInsecureCredentials(UnorderedElementsAre(
-                            insecure_credential, insecure_credential2)));
+                            expected_insecure_credential,
+                            expected_insecure_credential2)));
   store->GetAllInsecureCredentials(&consumer);
   WaitForPasswordStore();
   testing::Mock::VerifyAndClearExpectations(&consumer);
 
-  store->RemoveInsecureCredentials(insecure_credential.signon_realm,
-                                   insecure_credential.username,
-                                   RemoveInsecureCredentialsReason::kRemove);
-  EXPECT_CALL(consumer, OnGetInsecureCredentials(
-                            UnorderedElementsAre(insecure_credential2)));
+  // Remove the leaked entry for the first form
+  std::unique_ptr<PasswordForm> form =
+      FillPasswordFormWithData(kTestCredentials[0]);
+  store->UpdateLogin(*form);
+
+  EXPECT_CALL(consumer, OnGetInsecureCredentials(UnorderedElementsAre(
+                            expected_insecure_credential2)));
   store->GetAllInsecureCredentials(&consumer);
   WaitForPasswordStore();
 
@@ -1073,21 +1074,20 @@
        u"", u"", u"username_value", u"password", kTestLastUsageTime, 1},
       {PasswordForm::Scheme::kHtml, kTestWebRealm2, kTestWebRealm2, "", u"",
        u"", u"", u"username_value", u"topsecret", kTestLastUsageTime, 1}};
-  for (const auto& data : kTestCredentials)
-    store->AddLogin(*FillPasswordFormWithData(data));
+  for (const auto& data : kTestCredentials) {
+    std::unique_ptr<PasswordForm> form = FillPasswordFormWithData(data);
+    form->password_issues = {
+        {InsecureType::kLeaked,
+         InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}};
+    store->AddLogin(*form);
+  };
 
-  InsecureCredential credential1(kTestWebRealm1, u"username_value",
-                                 base::Time::FromTimeT(1),
-                                 InsecureType::kLeaked, IsMuted(false));
-  InsecureCredential credential2(kTestWebRealm2, u"username_value",
-                                 base::Time::FromTimeT(2),
-                                 InsecureType::kLeaked, IsMuted(false));
-  for (const auto& credential : {credential1, credential2})
-    store->AddInsecureCredential(credential);
-
+  InsecureCredential expected_credential(kTestWebRealm1, u"username_value",
+                                         base::Time::FromTimeT(1),
+                                         InsecureType::kLeaked, IsMuted(false));
   MockInsecureCredentialsConsumer consumer;
-  EXPECT_CALL(consumer,
-              OnGetInsecureCredentials(UnorderedElementsAre(credential1)));
+  EXPECT_CALL(consumer, OnGetInsecureCredentials(
+                            UnorderedElementsAre(expected_credential)));
   store->GetMatchingInsecureCredentials(kTestWebRealm1, &consumer);
   WaitForPasswordStore();
 
@@ -1107,20 +1107,26 @@
        u"", u"", u"", u"username_value_1", u"topsecret", kTestLastUsageTime, 1},
       {PasswordForm::Scheme::kHtml, kTestWebRealm2, kTestWebRealm2, "", u"",
        u"", u"", u"username_value_2", u"topsecret2", kTestLastUsageTime, 1}};
-  for (const auto& data : kTestCredentials)
-    store->AddLogin(*FillPasswordFormWithData(data));
+  InsecureCredential kInsecureCredentials[] = {
+      InsecureCredential(kTestWebRealm1, u"username_value",
+                         base::Time::FromTimeT(1), InsecureType::kLeaked,
+                         IsMuted(false)),
+      InsecureCredential(kTestAndroidRealm1, u"username_value_1",
+                         base::Time::FromTimeT(1), InsecureType::kPhished,
+                         IsMuted(false)),
+      InsecureCredential(kTestWebRealm2, u"username_value_2",
+                         base::Time::FromTimeT(3), InsecureType::kLeaked,
+                         IsMuted(false))};
 
-  InsecureCredential credential1(kTestWebRealm1, u"username_value",
-                                 base::Time::FromTimeT(1),
-                                 InsecureType::kLeaked, IsMuted(false));
-  InsecureCredential credential2(kTestAndroidRealm1, u"username_value_1",
-                                 base::Time::FromTimeT(2),
-                                 InsecureType::kPhished, IsMuted(false));
-  InsecureCredential credential3(kTestWebRealm2, u"username_value_2",
-                                 base::Time::FromTimeT(3),
-                                 InsecureType::kLeaked, IsMuted(false));
-  for (const auto& credentials : {credential1, credential2, credential3})
-    store->AddInsecureCredential(credentials);
+  for (unsigned int i = 0; i < 3; ++i) {
+    std::unique_ptr<PasswordForm> form =
+        FillPasswordFormWithData(kTestCredentials[i]);
+    form->password_issues = {
+        {kInsecureCredentials[i].insecure_type,
+         InsecurityMetadata(kInsecureCredentials[i].create_time,
+                            kInsecureCredentials[i].is_muted)}};
+    store->AddLogin(*form);
+  }
 
   PasswordFormDigest observed_form = {PasswordForm::Scheme::kHtml,
                                       kTestWebRealm1, GURL(kTestWebRealm1)};
@@ -1131,8 +1137,8 @@
   store->SetAffiliatedMatchHelper(std::move(mock_helper));
 
   MockInsecureCredentialsConsumer consumer;
-  EXPECT_CALL(consumer, OnGetInsecureCredentials(
-                            UnorderedElementsAre(credential1, credential2)));
+  EXPECT_CALL(consumer, OnGetInsecureCredentials(UnorderedElementsAre(
+                            kInsecureCredentials[0], kInsecureCredentials[1])));
   store->GetMatchingInsecureCredentials(kTestWebRealm1, &consumer);
   WaitForPasswordStore();
 
@@ -1145,9 +1151,6 @@
   scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore();
   store->Init(nullptr);
 
-  InsecureCredential credential(kTestWebRealm1, u"username1",
-                                base::Time::FromTimeT(100),
-                                InsecureType::kLeaked, IsMuted(false));
   constexpr PasswordFormData kTestCredential = {PasswordForm::Scheme::kHtml,
                                                 kTestWebRealm1,
                                                 kTestWebOrigin1,
@@ -1160,8 +1163,11 @@
                                                 10,
                                                 5};
   std::unique_ptr<PasswordForm> form(FillPasswordFormWithData(kTestCredential));
+  form->password_issues = {
+      {InsecureType::kLeaked,
+       InsecurityMetadata(base::Time::FromTimeT(100), IsMuted(false))}};
   store->AddLogin(*form);
-  store->AddInsecureCredential(credential);
+
   WaitForPasswordStore();
 
   // Update the password value and immediately get the insecure passwords.
@@ -1196,8 +1202,11 @@
                                                 10,
                                                 5};
   std::unique_ptr<PasswordForm> form(FillPasswordFormWithData(kTestCredential));
+  form->password_issues = {
+      {InsecureType::kLeaked,
+       InsecurityMetadata(base::Time::FromTimeT(100), IsMuted(false))}};
   store->AddLogin(*form);
-  store->AddInsecureCredential(credential);
+
   WaitForPasswordStore();
 
   // Delete the password and immediately get the insecure passwords.
diff --git a/components/password_manager/core/browser/sync/password_model_type_controller.cc b/components/password_manager/core/browser/sync/password_model_type_controller.cc
index e953343..81c7b67 100644
--- a/components/password_manager/core/browser/sync/password_model_type_controller.cc
+++ b/components/password_manager/core/browser/sync/password_model_type_controller.cc
@@ -49,7 +49,7 @@
         delegate_for_full_sync_mode,
     std::unique_ptr<syncer::ModelTypeControllerDelegate>
         delegate_for_transport_mode,
-    scoped_refptr<PasswordStore> account_password_store_for_cleanup,
+    scoped_refptr<PasswordStoreInterface> account_password_store_for_cleanup,
     PrefService* pref_service,
     signin::IdentityManager* identity_manager,
     syncer::SyncService* sync_service,
@@ -205,7 +205,7 @@
 }
 
 void PasswordModelTypeController::MaybeClearStore(
-    scoped_refptr<PasswordStore> account_password_store_for_cleanup) {
+    scoped_refptr<PasswordStoreInterface> account_password_store_for_cleanup) {
   DCHECK(account_password_store_for_cleanup);
   if (features_util::IsOptedInForAccountStorage(pref_service_, sync_service_)) {
     RecordClearedOnStartup(ClearedOnStartup::kOptedInSoNoNeedToClear);
diff --git a/components/password_manager/core/browser/sync/password_model_type_controller.h b/components/password_manager/core/browser/sync/password_model_type_controller.h
index 4ed2ce8..b512ab4d 100644
--- a/components/password_manager/core/browser/sync/password_model_type_controller.h
+++ b/components/password_manager/core/browser/sync/password_model_type_controller.h
@@ -24,7 +24,7 @@
 
 namespace password_manager {
 
-class PasswordStore;
+class PasswordStoreInterface;
 
 // A class that manages the startup and shutdown of password sync.
 class PasswordModelTypeController : public syncer::ModelTypeController,
@@ -36,7 +36,7 @@
           delegate_for_full_sync_mode,
       std::unique_ptr<syncer::ModelTypeControllerDelegate>
           delegate_for_transport_mode,
-      scoped_refptr<PasswordStore> account_password_store_for_cleanup,
+      scoped_refptr<PasswordStoreInterface> account_password_store_for_cleanup,
       PrefService* pref_service,
       signin::IdentityManager* identity_manager,
       syncer::SyncService* sync_service,
@@ -66,7 +66,7 @@
   void OnOptInStateMaybeChanged();
 
   void MaybeClearStore(
-      scoped_refptr<PasswordStore> account_password_store_for_cleanup);
+      scoped_refptr<PasswordStoreInterface> account_password_store_for_cleanup);
 
   PrefService* const pref_service_;
   signin::IdentityManager* const identity_manager_;
diff --git a/components/password_manager/core/browser/test_password_store.cc b/components/password_manager/core/browser/test_password_store.cc
index ae14ab8..889a44d0 100644
--- a/components/password_manager/core/browser/test_password_store.cc
+++ b/components/password_manager/core/browser/test_password_store.cc
@@ -251,50 +251,6 @@
   NOTIMPLEMENTED();
 }
 
-PasswordStoreChangeList TestPasswordStore::AddInsecureCredentialImpl(
-    const InsecureCredential& insecure_credential) {
-  InsecureCredential cred = insecure_credential;
-  cred.in_store = IsAccountStore() ? PasswordForm::Store::kAccountStore
-                                   : PasswordForm::Store::kProfileStore;
-  if (!insecure_credentials_.insert(std::move(cred)).second)
-    return {};
-
-  PasswordStoreChangeList changes;
-  for (auto& form : stored_passwords_[insecure_credential.signon_realm]) {
-    if (form.username_value == insecure_credential.username) {
-      form.password_issues->insert(
-          {insecure_credential.insecure_type,
-           InsecurityMetadata(insecure_credential.create_time,
-                              insecure_credential.is_muted)});
-      changes.emplace_back(PasswordStoreChange::UPDATE, form);
-    }
-  }
-  return changes;
-}
-
-PasswordStoreChangeList TestPasswordStore::RemoveInsecureCredentialsImpl(
-    const std::string& signon_realm,
-    const std::u16string& username,
-    RemoveInsecureCredentialsReason reason) {
-  const size_t old_size = insecure_credentials_.size();
-  base::EraseIf(insecure_credentials_, [&](const auto& credential) {
-    return credential.signon_realm == signon_realm &&
-           credential.username == username;
-  });
-
-  if (old_size == insecure_credentials_.size())
-    return {};
-
-  PasswordStoreChangeList changes;
-  for (auto& form : stored_passwords_[signon_realm]) {
-    if (form.username_value == username) {
-      form.password_issues->clear();
-      changes.emplace_back(PasswordStoreChange::UPDATE, form);
-    }
-  }
-  return changes;
-}
-
 std::vector<InsecureCredential>
 TestPasswordStore::GetAllInsecureCredentialsImpl() {
   return std::vector<InsecureCredential>(insecure_credentials_.begin(),
diff --git a/components/password_manager/core/browser/test_password_store.h b/components/password_manager/core/browser/test_password_store.h
index 5dc5ccd..77b2a3c 100644
--- a/components/password_manager/core/browser/test_password_store.h
+++ b/components/password_manager/core/browser/test_password_store.h
@@ -118,12 +118,6 @@
   void ReportMetricsImpl(const std::string& sync_username,
                          bool custom_passphrase_sync_enabled,
                          BulkCheckDone bulk_check_done) override;
-  PasswordStoreChangeList AddInsecureCredentialImpl(
-      const InsecureCredential& insecure_credentials) override;
-  PasswordStoreChangeList RemoveInsecureCredentialsImpl(
-      const std::string& signon_realm,
-      const std::u16string& username,
-      RemoveInsecureCredentialsReason reason) override;
   std::vector<InsecureCredential> GetAllInsecureCredentialsImpl() override;
   std::vector<InsecureCredential> GetMatchingInsecureCredentialsImpl(
       const std::string& signon_realm) override;
diff --git a/components/password_manager/core/browser/ui/post_save_compromised_helper.cc b/components/password_manager/core/browser/ui/post_save_compromised_helper.cc
index 26a14ca..3e18e7d 100644
--- a/components/password_manager/core/browser/ui/post_save_compromised_helper.cc
+++ b/components/password_manager/core/browser/ui/post_save_compromised_helper.cc
@@ -7,7 +7,7 @@
 #include "base/barrier_closure.h"
 #include "base/containers/contains.h"
 #include "base/feature_list.h"
-#include "components/password_manager/core/browser/password_store.h"
+#include "components/password_manager/core/browser/password_store_interface.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
 #include "components/prefs/pref_service.h"
@@ -30,8 +30,8 @@
 PostSaveCompromisedHelper::~PostSaveCompromisedHelper() = default;
 
 void PostSaveCompromisedHelper::AnalyzeLeakedCredentials(
-    PasswordStore* profile_store,
-    PasswordStore* account_store,
+    PasswordStoreInterface* profile_store,
+    PasswordStoreInterface* account_store,
     PrefService* prefs,
     BubbleCallback callback) {
   DCHECK(profile_store);
diff --git a/components/password_manager/core/browser/ui/post_save_compromised_helper.h b/components/password_manager/core/browser/ui/post_save_compromised_helper.h
index ae083c6c..45f147e 100644
--- a/components/password_manager/core/browser/ui/post_save_compromised_helper.h
+++ b/components/password_manager/core/browser/ui/post_save_compromised_helper.h
@@ -17,7 +17,7 @@
 
 namespace password_manager {
 
-class PasswordStore;
+class PasswordStoreInterface;
 
 // Helps to choose a compromised credential bubble after a password was saved.
 class PostSaveCompromisedHelper
@@ -49,8 +49,8 @@
 
   // Asynchronously queries the password stores for the compromised credentials
   // and notifies |callback| with the result of analysis.
-  void AnalyzeLeakedCredentials(PasswordStore* profile_store,
-                                PasswordStore* account_store,
+  void AnalyzeLeakedCredentials(PasswordStoreInterface* profile_store,
+                                PasswordStoreInterface* account_store,
                                 PrefService* prefs,
                                 BubbleCallback callback);
 
diff --git a/components/password_manager/core/browser/ui/post_save_compromised_helper_unittest.cc b/components/password_manager/core/browser/ui/post_save_compromised_helper_unittest.cc
index dbcd700..60f48614 100644
--- a/components/password_manager/core/browser/ui/post_save_compromised_helper_unittest.cc
+++ b/components/password_manager/core/browser/ui/post_save_compromised_helper_unittest.cc
@@ -9,7 +9,7 @@
 #include "base/test/mock_callback.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
-#include "components/password_manager/core/browser/mock_password_store.h"
+#include "components/password_manager/core/browser/mock_password_store_interface.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
@@ -62,8 +62,7 @@
 class PostSaveCompromisedHelperTest : public testing::Test {
  public:
   PostSaveCompromisedHelperTest() {
-    mock_profile_store_ = new MockPasswordStore;
-    EXPECT_TRUE(mock_profile_store_->Init(/*prefs=*/nullptr));
+    mock_profile_store_ = new MockPasswordStoreInterface;
     prefs_.registry()->RegisterDoublePref(kLastTimePasswordCheckCompleted, 0.0);
   }
 
@@ -84,8 +83,10 @@
 
   void WaitForPasswordStore() { task_environment_.RunUntilIdle(); }
 
-  MockPasswordStore* profile_store() { return mock_profile_store_.get(); }
-  virtual MockPasswordStore* account_store() { return nullptr; }
+  MockPasswordStoreInterface* profile_store() {
+    return mock_profile_store_.get();
+  }
+  virtual MockPasswordStoreInterface* account_store() { return nullptr; }
   TestingPrefServiceSimple* prefs() { return &prefs_; }
 
  protected:
@@ -94,7 +95,7 @@
  private:
   base::test::SingleThreadTaskEnvironment task_environment_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
-  scoped_refptr<MockPasswordStore> mock_profile_store_;
+  scoped_refptr<MockPasswordStoreInterface> mock_profile_store_;
 };
 
 TEST_F(PostSaveCompromisedHelperTest, DefaultState) {
@@ -275,20 +276,17 @@
     : public PostSaveCompromisedHelperTest {
  public:
   PostSaveCompromisedHelperWithTwoStoreTest() {
-    mock_account_store_ = new MockPasswordStore;
-    EXPECT_TRUE(mock_account_store_->Init(/*prefs=*/nullptr));
+    mock_account_store_ = new MockPasswordStoreInterface;
   }
 
-  ~PostSaveCompromisedHelperWithTwoStoreTest() override {
-    mock_account_store_->ShutdownOnUIThread();
-  }
+  ~PostSaveCompromisedHelperWithTwoStoreTest() override = default;
 
-  MockPasswordStore* account_store() override {
+  MockPasswordStoreInterface* account_store() override {
     return mock_account_store_.get();
   }
 
  private:
-  scoped_refptr<MockPasswordStore> mock_account_store_;
+  scoped_refptr<MockPasswordStoreInterface> mock_account_store_;
 };
 
 }  // namespace
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc
index 1b861f6b..0a5343b 100644
--- a/components/password_manager/core/common/password_manager_features.cc
+++ b/components/password_manager/core/common/password_manager_features.cc
@@ -143,7 +143,9 @@
 const base::Feature kUnifiedPasswordManagerAndroid{
     "UnifiedPasswordManagerAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
 
-// Enables support of sending votes on username first flow.
+// Enables support of sending votes on username first flow. The votes are sent
+// on single username forms and are based on user interaction with the save
+// prompt.
 const base::Feature kUsernameFirstFlow = {"UsernameFirstFlow",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
 
@@ -151,6 +153,13 @@
 const base::Feature kUsernameFirstFlowFilling = {
     "UsernameFirstFlowFilling", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Enables support of sending additional votes on username first flow. The votes
+// are sent on single password forms and contain information about preceding
+// single username forms.
+const base::Feature kUsernameFirstFlowFallbackCrowdsourcing = {
+    "UsernameFirstFlowFallbackCrowdsourcing",
+    base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Field trial identifier for password generation requirements.
 const char kGenerationRequirementsFieldTrial[] =
     "PasswordGenerationRequirements";
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h
index e957455b5..0dd8722 100644
--- a/components/password_manager/core/common/password_manager_features.h
+++ b/components/password_manager/core/common/password_manager_features.h
@@ -43,6 +43,7 @@
 extern const base::Feature kUnifiedPasswordManagerAndroid;
 extern const base::Feature kUsernameFirstFlow;
 extern const base::Feature kUsernameFirstFlowFilling;
+extern const base::Feature kUsernameFirstFlowFallbackCrowdsourcing;
 
 // Field trial and corresponding parameters.
 // To manually override this, start Chrome with the following parameters:
diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java b/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java
index d0a5d90..6cc0296 100644
--- a/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java
+++ b/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java
@@ -74,6 +74,10 @@
     // not GC'ed.
     final Activity mActivity;
 
+    // Always equal to mWindowAndroid.getContext().get(), but stored separately to make sure it's
+    // not GC'ed.
+    final Context mContext;
+
     // The dialog to show to let the user pick a device.
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
     public ItemChooserDialog mItemChooserDialog;
@@ -147,6 +151,8 @@
         mWindowAndroid = windowAndroid;
         mActivity = windowAndroid.getActivity().get();
         assert mActivity != null;
+        mContext = windowAndroid.getContext().get();
+        assert mContext != null;
         mOrigin = origin;
         mSecurityLevel = securityLevel;
         mDelegate = delegate;
@@ -155,7 +161,7 @@
 
         // Initialize icons.
         mConnectedIcon = getIconWithRowIconColorStateList(R.drawable.ic_bluetooth_connected);
-        mConnectedIconDescription = mActivity.getString(R.string.bluetooth_device_connected);
+        mConnectedIconDescription = mContext.getString(R.string.bluetooth_device_connected);
 
         mSignalStrengthLevelIcon = new Drawable[] {
                 getIconWithRowIconColorStateList(R.drawable.ic_signal_cellular_0_bar),
@@ -168,17 +174,17 @@
             Log.i(TAG, "BluetoothChooserDialog: Default Bluetooth adapter not found.");
         }
         mAdapterOffStatus = SpanApplier.applySpans(
-                mActivity.getString(R.string.bluetooth_adapter_off_help),
+                mContext.getString(R.string.bluetooth_adapter_off_help),
                 new SpanInfo("<link>", "</link>", createLinkSpan(LinkType.ADAPTER_OFF_HELP)));
     }
 
     private Drawable getIconWithRowIconColorStateList(int icon) {
-        Resources res = mActivity.getResources();
+        Resources res = mContext.getResources();
 
-        Drawable drawable = VectorDrawableCompat.create(res, icon, mActivity.getTheme());
+        Drawable drawable = VectorDrawableCompat.create(res, icon, mContext.getTheme());
         DrawableCompat.setTintList(drawable,
                 AppCompatResources.getColorStateList(
-                        mActivity, R.color.item_chooser_row_icon_color));
+                        mContext, R.color.item_chooser_row_icon_color));
         return drawable;
     }
 
@@ -189,29 +195,29 @@
     public void show() {
         SpannableString origin = new SpannableString(mOrigin);
 
-        final boolean useDarkColors = !ColorUtils.inNightMode(mActivity);
+        final boolean useDarkColors = !ColorUtils.inNightMode(mContext);
         AutocompleteSchemeClassifier autocompleteSchemeClassifier =
                 mDelegate.createAutocompleteSchemeClassifier();
 
-        OmniboxUrlEmphasizer.emphasizeUrl(origin, mActivity.getResources(),
+        OmniboxUrlEmphasizer.emphasizeUrl(origin, mContext.getResources(),
                 autocompleteSchemeClassifier, mSecurityLevel, false, useDarkColors, true);
         autocompleteSchemeClassifier.destroy();
         // Construct a full string and replace the origin text with emphasized version.
         SpannableString title =
-                new SpannableString(mActivity.getString(R.string.bluetooth_dialog_title, mOrigin));
+                new SpannableString(mContext.getString(R.string.bluetooth_dialog_title, mOrigin));
         int start = title.toString().indexOf(mOrigin);
         TextUtils.copySpansFrom(origin, 0, origin.length(), Object.class, title, start);
 
-        String noneFound = mActivity.getString(R.string.bluetooth_not_found);
+        String noneFound = mContext.getString(R.string.bluetooth_not_found);
 
         SpannableString searching = SpanApplier.applySpans(
-                mActivity.getString(R.string.bluetooth_searching),
+                mContext.getString(R.string.bluetooth_searching),
                 new SpanInfo("<link>", "</link>", createLinkSpan(LinkType.EXPLAIN_BLUETOOTH)));
 
-        String positiveButton = mActivity.getString(R.string.bluetooth_confirm_button);
+        String positiveButton = mContext.getString(R.string.bluetooth_confirm_button);
 
         SpannableString statusIdleNoneFound = SpanApplier.applySpans(
-                mActivity.getString(R.string.bluetooth_not_seeing_it_idle),
+                mContext.getString(R.string.bluetooth_not_seeing_it_idle),
                 new SpanInfo("<link1>", "</link1>", createLinkSpan(LinkType.EXPLAIN_BLUETOOTH)),
                 new SpanInfo("<link2>", "</link2>", createLinkSpan(LinkType.RESTART_SEARCH)));
 
@@ -222,7 +228,7 @@
         ItemChooserDialog.ItemChooserLabels labels =
                 new ItemChooserDialog.ItemChooserLabels(title, searching, noneFound, statusActive,
                         statusIdleNoneFound, statusIdleSomeFound, positiveButton);
-        mItemChooserDialog = new ItemChooserDialog(mActivity, this, labels);
+        mItemChooserDialog = new ItemChooserDialog(mContext, mActivity.getWindow(), this, labels);
 
         mActivity.registerReceiver(mLocationModeBroadcastReceiver,
                 new IntentFilter(LocationManager.MODE_CHANGED_ACTION));
@@ -293,7 +299,7 @@
         if (havePermission) {
             if (needsLocationServices) {
                 needPermissionMessage = SpanApplier.applySpans(
-                        mActivity.getString(R.string.bluetooth_need_location_services_on),
+                        mContext.getString(R.string.bluetooth_need_location_services_on),
                         servicesSpan);
             } else {
                 // We don't need to request anything.
@@ -302,7 +308,7 @@
         } else {
             if (needsLocationServices) {
                 needPermissionMessage = SpanApplier.applySpans(
-                        mActivity.getString(
+                        mContext.getString(
                                 R.string.bluetooth_need_location_permission_and_services_on),
                         permissionSpan, servicesSpan);
             } else {
@@ -310,18 +316,18 @@
                 // compiling against the S SDK.
                 if (BuildInfo.targetsAtLeastS() && BuildInfo.isAtLeastS()) {
                     needPermissionMessage = SpanApplier.applySpans(
-                            mActivity.getString(R.string.bluetooth_need_nearby_devices_permission),
+                            mContext.getString(R.string.bluetooth_need_nearby_devices_permission),
                             permissionSpan);
                 } else {
                     needPermissionMessage = SpanApplier.applySpans(
-                            mActivity.getString(R.string.bluetooth_need_location_permission),
+                            mContext.getString(R.string.bluetooth_need_location_permission),
                             permissionSpan);
                 }
             }
         }
 
         SpannableString needPermissionStatus = SpanApplier.applySpans(
-                mActivity.getString(R.string.bluetooth_need_location_permission_help),
+                mContext.getString(R.string.bluetooth_need_location_permission_help),
                 new SpanInfo("<link>", "</link>",
                         createLinkSpan(LinkType.NEED_LOCATION_PERMISSION_HELP)));
 
@@ -331,7 +337,7 @@
 
     private NoUnderlineClickableSpan createLinkSpan(@LinkType int linkType) {
         return new NoUnderlineClickableSpan(
-                mActivity.getResources(), (view) -> onBluetoothLinkClick(view, linkType));
+                mContext.getResources(), (view) -> onBluetoothLinkClick(view, linkType));
     }
 
     private void onBluetoothLinkClick(View view, @LinkType int linkType) {
@@ -350,7 +356,7 @@
                     mItemChooserDialog.signalInitializingAdapter();
                 } else {
                     String unableToTurnOnAdapter =
-                            mActivity.getString(R.string.bluetooth_unable_to_turn_on_adapter);
+                            mContext.getString(R.string.bluetooth_unable_to_turn_on_adapter);
                     mItemChooserDialog.setErrorState(unableToTurnOnAdapter, mAdapterOffStatus);
                 }
                 break;
@@ -446,7 +452,7 @@
             iconDescription = mConnectedIconDescription;
         } else if (signalStrengthLevel != -1) {
             icon = mSignalStrengthLevelIcon[signalStrengthLevel].getConstantState().newDrawable();
-            iconDescription = mActivity.getResources().getQuantityString(
+            iconDescription = mContext.getResources().getQuantityString(
                     R.plurals.signal_strength_level_n_bars, signalStrengthLevel,
                     signalStrengthLevel);
         }
@@ -465,7 +471,7 @@
     @CalledByNative
     public void notifyAdapterTurnedOff() {
         SpannableString adapterOffMessage =
-                SpanApplier.applySpans(mActivity.getString(R.string.bluetooth_adapter_off),
+                SpanApplier.applySpans(mContext.getString(R.string.bluetooth_adapter_off),
                         new SpanInfo("<link>", "</link>", createLinkSpan(LinkType.ADAPTER_OFF)));
 
         mItemChooserDialog.setErrorState(adapterOffMessage, mAdapterOffStatus);
diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothScanningPermissionDialog.java b/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothScanningPermissionDialog.java
index de571e08..4348464a 100644
--- a/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothScanningPermissionDialog.java
+++ b/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothScanningPermissionDialog.java
@@ -6,6 +6,7 @@
 
 import android.app.Activity;
 import android.app.Dialog;
+import android.content.Context;
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
 import android.text.SpannableString;
@@ -61,6 +62,10 @@
     // not GC'ed.
     private final Activity mActivity;
 
+    // Always equal to mWindowAndroid.getContext().get(), but stored separately to make sure it's
+    // not GC'ed.
+    private final Context mContext;
+
     // The dialog this class encapsulates.
     private Dialog mDialog;
 
@@ -98,16 +103,18 @@
         mWindowAndroid = windowAndroid;
         mActivity = windowAndroid.getActivity().get();
         assert mActivity != null;
+        mContext = windowAndroid.getContext().get();
+        assert mContext != null;
         mDelegate = delegate;
         mNativeBluetoothScanningPermissionDialogPtr = nativeBluetoothScanningPermissionDialogPtr;
 
         // Emphasize the origin.
         SpannableString originSpannableString = new SpannableString(origin);
 
-        final boolean useDarkColors = !ColorUtils.inNightMode(mActivity);
+        final boolean useDarkColors = !ColorUtils.inNightMode(mContext);
         AutocompleteSchemeClassifier autocompleteSchemeClassifier =
                 mDelegate.createAutocompleteSchemeClassifier();
-        OmniboxUrlEmphasizer.emphasizeUrl(originSpannableString, mActivity.getResources(),
+        OmniboxUrlEmphasizer.emphasizeUrl(originSpannableString, mContext.getResources(),
                 autocompleteSchemeClassifier, securityLevel,
                 /*isInternalPage=*/false, useDarkColors,
                 /*emphasizeScheme=*/true);
@@ -116,19 +123,19 @@
         // Construct a full string and replace the |originSpannableString| text with emphasized
         // version.
         SpannableString title = new SpannableString(
-                mActivity.getString(R.string.bluetooth_scanning_prompt_origin, origin));
+                mContext.getString(R.string.bluetooth_scanning_prompt_origin, origin));
         int start = title.toString().indexOf(origin);
         TextUtils.copySpansFrom(originSpannableString, 0, originSpannableString.length(),
                 Object.class, title, start);
 
         String noneFound =
-                mActivity.getString(R.string.bluetooth_scanning_prompt_no_devices_found_prompt);
+                mContext.getString(R.string.bluetooth_scanning_prompt_no_devices_found_prompt);
         String blockButtonText =
-                mActivity.getString(R.string.bluetooth_scanning_prompt_block_button_text);
+                mContext.getString(R.string.bluetooth_scanning_prompt_block_button_text);
         String allowButtonText =
-                mActivity.getString(R.string.bluetooth_scanning_prompt_allow_button_text);
+                mContext.getString(R.string.bluetooth_scanning_prompt_allow_button_text);
 
-        LinearLayout dialogContainer = (LinearLayout) LayoutInflater.from(mActivity).inflate(
+        LinearLayout dialogContainer = (LinearLayout) LayoutInflater.from(mContext).inflate(
                 R.layout.bluetooth_scanning_permission_dialog, null);
 
         TextViewWithClickableSpans dialogTitle =
@@ -143,7 +150,7 @@
         emptyMessage.setVisibility(View.VISIBLE);
 
         mListView = (ListView) dialogContainer.findViewById(R.id.items);
-        mItemAdapter = new DeviceItemAdapter(mActivity, /*itemsSelectable=*/false,
+        mItemAdapter = new DeviceItemAdapter(mContext, /*itemsSelectable=*/false,
                 R.layout.bluetooth_scanning_permission_dialog_row);
         mItemAdapter.setNotifyOnChange(true);
         mListView.setAdapter(mItemAdapter);
@@ -184,7 +191,7 @@
                         listViewContainer.setLayoutParams(new LinearLayout.LayoutParams(
                                 LayoutParams.MATCH_PARENT,
                                 getListHeight(mActivity.getWindow().getDecorView().getHeight(),
-                                        mActivity.getResources().getDisplayMetrics().density)));
+                                        mContext.getResources().getDisplayMetrics().density)));
                     }
                 });
     }
@@ -203,7 +210,7 @@
     @CalledByNative
     public void addOrUpdateDevice(String deviceId, String deviceName) {
         if (TextUtils.isEmpty(deviceName)) {
-            deviceName = mActivity.getString(R.string.bluetooth_scanning_device_unknown, deviceId);
+            deviceName = mContext.getString(R.string.bluetooth_scanning_device_unknown, deviceId);
         }
         mItemAdapter.addOrUpdate(deviceId, deviceName, /*icon=*/null, /*iconDescription=*/null);
         mListView.setVisibility(View.VISIBLE);
@@ -226,7 +233,7 @@
     }
 
     private void showDialogForView(View view) {
-        mDialog = new Dialog(mActivity) {
+        mDialog = new Dialog(mContext) {
             @Override
             public void onWindowFocusChanged(boolean hasFocus) {
                 super.onWindowFocusChanged(hasFocus);
@@ -242,7 +249,7 @@
         mDialog.setOnCancelListener(dialog -> finishDialog(Event.CANCELED));
 
         Window window = mDialog.getWindow();
-        if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) {
+        if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) {
             // On smaller screens, make the dialog fill the width of the screen,
             // and appear at the top.
             window.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/DeviceItemAdapter.java b/components/permissions/android/java/src/org/chromium/components/permissions/DeviceItemAdapter.java
index 065a684..14411c9d 100644
--- a/components/permissions/android/java/src/org/chromium/components/permissions/DeviceItemAdapter.java
+++ b/components/permissions/android/java/src/org/chromium/components/permissions/DeviceItemAdapter.java
@@ -81,7 +81,7 @@
     /**
      * Creates a device item adapter which can show a list of items.
      *
-     * @param context The context of the application.
+     * @param context The context used for layout inflation and resource loading.
      * @param rowLayoutResource The resource identifier for the item row.
      */
     public DeviceItemAdapter(
diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/ItemChooserDialog.java b/components/permissions/android/java/src/org/chromium/components/permissions/ItemChooserDialog.java
index efb550e..f6b131e 100644
--- a/components/permissions/android/java/src/org/chromium/components/permissions/ItemChooserDialog.java
+++ b/components/permissions/android/java/src/org/chromium/components/permissions/ItemChooserDialog.java
@@ -4,8 +4,8 @@
 
 package org.chromium.components.permissions;
 
-import android.app.Activity;
 import android.app.Dialog;
+import android.content.Context;
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
@@ -102,7 +102,8 @@
         int DISCOVERY_IDLE = 3;
     }
 
-    private Activity mActivity;
+    private Context mContext;
+    private Window mWindow;
 
     // The dialog this class encapsulates.
     private Dialog mDialog;
@@ -138,19 +139,21 @@
     private boolean mIgnorePendingWindowFocusChangeForClose;
 
     /**
-     * Creates the ItemChooserPopup and displays it (and starts waiting for data).
+     * Creates the ItemChooserDialog and displays it (and starts waiting for data).
      *
-     * @param activity Activity which is used for launching a dialog.
+     * @param context The context used for layout inflation and resource loading.
+     * @param window The window used to determine the list height.
      * @param callback The callback used to communicate back what was selected.
      * @param labels The labels to show in the dialog.
      */
-    public ItemChooserDialog(
-            Activity activity, ItemSelectedCallback callback, ItemChooserLabels labels) {
-        mActivity = activity;
+    public ItemChooserDialog(Context context, Window window, ItemSelectedCallback callback,
+            ItemChooserLabels labels) {
+        mContext = context;
+        mWindow = window;
         mItemSelectedCallback = callback;
         mLabels = labels;
 
-        LinearLayout dialogContainer = (LinearLayout) LayoutInflater.from(mActivity).inflate(
+        LinearLayout dialogContainer = (LinearLayout) LayoutInflater.from(mContext).inflate(
                 R.layout.item_chooser_dialog, null);
 
         mListView = (ListView) dialogContainer.findViewById(R.id.items);
@@ -180,7 +183,7 @@
         };
 
         mItemAdapter = new DeviceItemAdapter(
-                mActivity, /*itemsSelectable=*/true, R.layout.item_chooser_dialog_row);
+                mContext, /*itemsSelectable=*/true, R.layout.item_chooser_dialog_row);
         mItemAdapter.setNotifyOnChange(true);
         mItemAdapter.setObserver(this);
 
@@ -205,8 +208,8 @@
                         View listViewContainer = dialogContainer.findViewById(R.id.container);
                         listViewContainer.setLayoutParams(new LinearLayout.LayoutParams(
                                 LayoutParams.MATCH_PARENT,
-                                getListHeight(mActivity.getWindow().getDecorView().getHeight(),
-                                        mActivity.getResources().getDisplayMetrics().density)));
+                                getListHeight(mWindow.getDecorView().getHeight(),
+                                        mContext.getResources().getDisplayMetrics().density)));
                     }
                 });
     }
@@ -240,7 +243,7 @@
     }
 
     private void showDialogForView(View view) {
-        mDialog = new Dialog(mActivity) {
+        mDialog = new Dialog(mContext) {
             @Override
             public void onWindowFocusChanged(boolean hasFocus) {
                 super.onWindowFocusChanged(hasFocus);
@@ -256,7 +259,7 @@
         mDialog.setOnCancelListener(dialog -> mItemSelectedCallback.onItemSelected(""));
 
         Window window = mDialog.getWindow();
-        if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) {
+        if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) {
             // On smaller screens, make the dialog fill the width of the screen,
             // and appear at the top.
             window.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
diff --git a/components/policy/core/browser/policy_pref_mapping_test.cc b/components/policy/core/browser/policy_pref_mapping_test.cc
index c928e90..f903a4e 100644
--- a/components/policy/core/browser/policy_pref_mapping_test.cc
+++ b/components/policy/core/browser/policy_pref_mapping_test.cc
@@ -74,9 +74,6 @@
   return policy_name_decorated;
 }
 
-// TODO(https://crbug.com/1192629): Revisit it after all chromeos policies
-// touching lacros will get their handlers in place.
-#if !BUILDFLAG(IS_CHROMEOS_LACROS)
 PrefService* GetPrefServiceForLocation(PrefLocation location,
                                        PrefService* local_state,
                                        PrefService* user_prefs,
@@ -141,8 +138,6 @@
   CheckPrefHasValue(pref, expected_value);
 }
 
-#endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
-
 // Contains the testing details for a single pref affected by one or multiple
 // policies. This is part of the data loaded from
 // chrome/test/data/policy/policy_test_cases.json.
@@ -332,8 +327,10 @@
   bool IsOsSupported() const {
 #if defined(OS_ANDROID)
     const std::string os("android");
-#elif defined(OS_CHROMEOS)
-    const std::string os("chromeos");
+#elif BUILDFLAG(IS_CHROMEOS_ASH)
+    const std::string os("chromeos_ash");
+#elif BUILDFLAG(IS_CHROMEOS_LACROS)
+    const std::string os("chromeos_lacros");
 #elif defined(OS_IOS)
     const std::string os("ios");
 #elif defined(OS_LINUX)
@@ -348,6 +345,15 @@
     return base::Contains(supported_os_, os);
   }
 
+  bool IsOsCovered() const {
+#if defined(OS_CHROMEOS)
+    return base::Contains(supported_os_, "chromeos_ash") ||
+           base::Contains(supported_os_, "chromeos_lacros");
+#else
+    return IsOsSupported();
+#endif
+  }
+
   bool IsSupported() const {
 #if !BUILDFLAG(GOOGLE_CHROME_BRANDING)
     if (is_official_only())
@@ -422,9 +428,6 @@
   PolicyTestCaseMap policy_test_cases_;
 };
 
-// TODO(https://crbug.com/1192629): Revisit it after all chromeos policies
-// touching lacros will get their handlers in place.
-#if !BUILDFLAG(IS_CHROMEOS_LACROS)
 struct PolicySettings {
   PolicySource source = PolicySource::POLICY_SOURCE_CLOUD;
   PolicyScope scope = PolicyScope::POLICY_SCOPE_USER;
@@ -491,7 +494,6 @@
   }
   provider->UpdateChromePolicy(policy_map);
 }
-#endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
 
 absl::optional<base::flat_set<std::string>> GetTestFilter() {
   if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
@@ -539,12 +541,11 @@
              "tests or use reason_for_missing_test.";
 
       if (test_case->HasSupportedOs()) {
-        has_test_case_or_reason_for_this_os |= test_case->IsOsSupported();
+        has_test_case_or_reason_for_this_os |= test_case->IsOsCovered();
       } else {
         has_reason_for_all_os |= test_case->has_reason_for_missing_test();
       }
     }
-
     EXPECT_TRUE(has_test_case_or_reason_for_this_os || has_reason_for_all_os)
         << "Policy " << policy->first
         << " should either provide a test case for all supported operating "
@@ -592,9 +593,6 @@
         continue;
       }
 
-// TODO(https://crbug.com/1192629): Revisit it after all chromeos policies
-// touching lacros will get their handlers in place.
-#if !BUILDFLAG(IS_CHROMEOS_LACROS)
       for (size_t i = 0; i < test_case->policy_pref_mapping_tests().size();
            ++i) {
         const auto& pref_mapping = test_case->policy_pref_mapping_tests()[i];
@@ -680,7 +678,6 @@
           }
         }
       }
-#endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
     }
   }
 }
diff --git a/components/policy/core/common/policy_loader_lacros.cc b/components/policy/core/common/policy_loader_lacros.cc
index 11ecb51..933f27f 100644
--- a/components/policy/core/common/policy_loader_lacros.cc
+++ b/components/policy/core/common/policy_loader_lacros.cc
@@ -88,7 +88,16 @@
   DecodeProtoFields(*(validator.payload()), external_data_manager,
                     PolicySource::POLICY_SOURCE_CLOUD_FROM_ASH,
                     PolicyScope::POLICY_SCOPE_USER, &policy_map, per_profile_);
-  SetEnterpriseUsersSystemWideDefaults(&policy_map);
+  switch (per_profile_) {
+    case PolicyPerProfileFilter::kTrue:
+      SetEnterpriseUsersProfileDefaults(&policy_map);
+      break;
+    case PolicyPerProfileFilter::kFalse:
+      SetEnterpriseUsersSystemWideDefaults(&policy_map);
+      break;
+    case PolicyPerProfileFilter::kAny:
+      NOTREACHED();
+  }
   bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
       .MergeFrom(policy_map);
   return bundle;
diff --git a/components/policy/core/common/policy_loader_lacros_unittest.cc b/components/policy/core/common/policy_loader_lacros_unittest.cc
index 8b31f1c..a12f860 100644
--- a/components/policy/core/common/policy_loader_lacros_unittest.cc
+++ b/components/policy/core/common/policy_loader_lacros_unittest.cc
@@ -43,25 +43,9 @@
   return data;
 }
 
-const PolicyMap* GetChromePolicyMap(PolicyBundle* bundle) {
+const PolicyMap& GetChromePolicyMap(PolicyBundle* bundle) {
   PolicyNamespace ns = PolicyNamespace(POLICY_DOMAIN_CHROME, std::string());
-  return &(bundle->Get(ns));
-}
-
-std::vector<uint8_t> GetValidPolicyFetchResponseWithPerProfilePolicy() {
-  em::CloudPolicySettings policy_proto;
-  // HomepageLocation is a per_profile:True policy. See policy_templates.json
-  // for details.
-  policy_proto.mutable_homepagelocation()->set_value("http://chromium.org");
-  return GetValidPolicyFetchResponse(policy_proto);
-}
-
-std::vector<uint8_t> GetValidPolicyFetchResponseWithSystemWidePolicy() {
-  em::CloudPolicySettings policy_proto;
-  // TaskManagerEndProcessEnabled is a per_profile:True policy. See
-  // policy_templates.json for details.
-  policy_proto.mutable_taskmanagerendprocessenabled()->set_value(false);
-  return GetValidPolicyFetchResponse(policy_proto);
+  return bundle->Get(ns);
 }
 
 std::vector<uint8_t> GetValidPolicyFetchResponseWithAllPolicy() {
@@ -83,103 +67,114 @@
   PolicyLoaderLacrosTest() = default;
   ~PolicyLoaderLacrosTest() override {}
 
-  void SetPolicy(std::vector<uint8_t> data) {
+  void SetPolicy() {
+    std::vector<uint8_t> data = GetValidPolicyFetchResponseWithAllPolicy();
     auto init_params = crosapi::mojom::BrowserInitParams::New();
     init_params->device_account_policy = data;
     chromeos::LacrosService::Get()->SetInitParamsForTests(
         std::move(init_params));
   }
 
-  void SetSystemWidePolicy() {
-    std::vector<uint8_t> data =
-        GetValidPolicyFetchResponseWithSystemWidePolicy();
-    system_wide_policies_set_ = true;
-    SetPolicy(data);
-  }
-
-  void SetProfilePolicy() {
-    std::vector<uint8_t> data =
-        GetValidPolicyFetchResponseWithPerProfilePolicy();
-    SetPolicy(data);
-  }
-
-  void SetAllPolicy() {
-    std::vector<uint8_t> data = GetValidPolicyFetchResponseWithAllPolicy();
-    system_wide_policies_set_ = true;
-    SetPolicy(data);
-  }
-
-  void CheckOnlySystemWidePoliciesAreSet(PolicyBundle* bundle) {
-    const PolicyMap* policy_map = GetChromePolicyMap(bundle);
-    // Profile policies.
-    EXPECT_EQ(nullptr, policy_map->GetValue(key::kHomepageLocation));
-    EXPECT_EQ(nullptr, policy_map->GetValue(key::kAllowDinosaurEasterEgg));
-
-    // System-wide policies.
-    if (system_wide_policies_set_) {
-      EXPECT_FALSE(
-          policy_map->GetValue(key::kTaskManagerEndProcessEnabled)->GetBool());
+  void CheckProfilePolicies(const PolicyMap& policy_map) const {
+    if (per_profile_ == PolicyPerProfileFilter::kFalse) {
+      EXPECT_EQ(nullptr, policy_map.GetValue(key::kHomepageLocation));
+      EXPECT_EQ(nullptr, policy_map.GetValue(key::kAllowDinosaurEasterEgg));
+    } else {
+      EXPECT_EQ("http://chromium.org",
+                policy_map.GetValue(key::kHomepageLocation)->GetString());
+      // Enterprise default.
+      EXPECT_EQ(false,
+                policy_map.GetValue(key::kAllowDinosaurEasterEgg)->GetBool());
     }
-    // Enterprise default.
-    EXPECT_FALSE(
-        policy_map->GetValue(key::kPinUnlockAutosubmitEnabled)->GetBool());
+  }
+
+  void CheckSystemWidePolicies(const PolicyMap& policy_map) const {
+    if (per_profile_ == PolicyPerProfileFilter::kTrue) {
+      EXPECT_EQ(nullptr,
+                policy_map.GetValue(key::kTaskManagerEndProcessEnabled));
+      EXPECT_EQ(nullptr, policy_map.GetValue(key::kPinUnlockAutosubmitEnabled));
+    } else {
+      EXPECT_FALSE(
+          policy_map.GetValue(key::kTaskManagerEndProcessEnabled)->GetBool());
+      // Enterprise default.
+      EXPECT_FALSE(
+          policy_map.GetValue(key::kPinUnlockAutosubmitEnabled)->GetBool());
+    }
+  }
+
+  void CheckCorrectPoliciesAreSet(PolicyBundle* bundle) const {
+    const PolicyMap& policy_map = GetChromePolicyMap(bundle);
+    CheckProfilePolicies(policy_map);
+    CheckSystemWidePolicies(policy_map);
   }
 
   SchemaRegistry schema_registry_;
-  bool system_wide_policies_set_ = false;
+  PolicyPerProfileFilter per_profile_ = PolicyPerProfileFilter::kFalse;
   chromeos::ScopedLacrosServiceTestHelper test_helper_;
 };
 
-TEST_F(PolicyLoaderLacrosTest, BasicTest) {
-  SetSystemWidePolicy();
+TEST_F(PolicyLoaderLacrosTest, BasicTestSystemWidePolicies) {
+  per_profile_ = PolicyPerProfileFilter::kFalse;
+  SetPolicy();
 
   PolicyLoaderLacros loader(task_environment_.GetMainThreadTaskRunner(),
-                            PolicyPerProfileFilter::kFalse);
+                            per_profile_);
   base::RunLoop().RunUntilIdle();
-  CheckOnlySystemWidePoliciesAreSet(loader.Load().get());
+  CheckCorrectPoliciesAreSet(loader.Load().get());
 }
 
-TEST_F(PolicyLoaderLacrosTest, BasicTestPerProfile) {
-  SetProfilePolicy();
+TEST_F(PolicyLoaderLacrosTest, BasicTestProfilePolicies) {
+  per_profile_ = PolicyPerProfileFilter::kTrue;
+  SetPolicy();
 
   PolicyLoaderLacros loader(task_environment_.GetMainThreadTaskRunner(),
-                            PolicyPerProfileFilter::kFalse);
+                            per_profile_);
   base::RunLoop().RunUntilIdle();
-  CheckOnlySystemWidePoliciesAreSet(loader.Load().get());
+  CheckCorrectPoliciesAreSet(loader.Load().get());
 }
 
-TEST_F(PolicyLoaderLacrosTest, UpdateTest) {
+TEST_F(PolicyLoaderLacrosTest, UpdateTestProfilePolicies) {
+  per_profile_ = PolicyPerProfileFilter::kTrue;
   auto init_params = crosapi::mojom::BrowserInitParams::New();
 
-  // chromeos::ScopedLacrosServiceTestHelper test_helper;
   chromeos::LacrosService::Get()->SetInitParamsForTests(std::move(init_params));
 
-  PolicyLoaderLacros* loader =
-      new PolicyLoaderLacros(task_environment_.GetMainThreadTaskRunner(),
-                             PolicyPerProfileFilter::kFalse);
+  PolicyLoaderLacros* loader = new PolicyLoaderLacros(
+      task_environment_.GetMainThreadTaskRunner(), per_profile_);
   AsyncPolicyProvider provider(&schema_registry_,
                                std::unique_ptr<AsyncPolicyLoader>(loader));
   provider.Init(&schema_registry_);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(GetChromePolicyMap(loader->Load().get())->size(), (unsigned int)0);
+  EXPECT_EQ(GetChromePolicyMap(loader->Load().get()).size(), (unsigned int)0);
 
-  std::vector<uint8_t> data = GetValidPolicyFetchResponseWithSystemWidePolicy();
-  system_wide_policies_set_ = true;
+  std::vector<uint8_t> data = GetValidPolicyFetchResponseWithAllPolicy();
   loader->OnPolicyUpdated(data);
   base::RunLoop().RunUntilIdle();
-  EXPECT_GT(GetChromePolicyMap(loader->Load().get())->size(),
+  EXPECT_GT(GetChromePolicyMap(loader->Load().get()).size(),
             static_cast<unsigned int>(0));
   provider.Shutdown();
 }
 
-TEST_F(PolicyLoaderLacrosTest, EnterpriseDefaultsTest) {
-  SetAllPolicy();
+TEST_F(PolicyLoaderLacrosTest, UpdateTestSystemWidePolicies) {
+  per_profile_ = PolicyPerProfileFilter::kFalse;
+  auto init_params = crosapi::mojom::BrowserInitParams::New();
 
-  PolicyLoaderLacros loader(task_environment_.GetMainThreadTaskRunner(),
-                            PolicyPerProfileFilter::kFalse);
+  chromeos::LacrosService::Get()->SetInitParamsForTests(std::move(init_params));
+
+  PolicyLoaderLacros* loader = new PolicyLoaderLacros(
+      task_environment_.GetMainThreadTaskRunner(), per_profile_);
+  AsyncPolicyProvider provider(&schema_registry_,
+                               std::unique_ptr<AsyncPolicyLoader>(loader));
+  provider.Init(&schema_registry_);
   base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(GetChromePolicyMap(loader->Load().get()).size(), (unsigned int)0);
 
-  CheckOnlySystemWidePoliciesAreSet(loader.Load().get());
+  std::vector<uint8_t> data = GetValidPolicyFetchResponseWithAllPolicy();
+  loader->OnPolicyUpdated(data);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_GT(GetChromePolicyMap(loader->Load().get()).size(),
+            static_cast<unsigned int>(0));
+  provider.Shutdown();
 }
 
 }  // namespace policy
diff --git a/components/policy/core/common/policy_service_impl.cc b/components/policy/core/common/policy_service_impl.cc
index a7ac585..8d95230d 100644
--- a/components/policy/core/common/policy_service_impl.cc
+++ b/components/policy/core/common/policy_service_impl.cc
@@ -113,9 +113,11 @@
       {policy::key::kNativeMessagingWhitelist,
        policy::key::kNativeMessagingAllowlist},
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
-#if BUILDFLAG(IS_CHROMEOS_ASH)
+#if defined(OS_CHROMEOS)
       {policy::key::kAttestationExtensionWhitelist,
        policy::key::kAttestationExtensionAllowlist},
+#endif  // defined(OS_CHROMEOS)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
       {policy::key::kExternalPrintServersWhitelist,
        policy::key::kExternalPrintServersAllowlist},
       {policy::key::kNativePrintersBulkBlacklist,
diff --git a/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager.cc b/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager.cc
index bb8451e..5816c3b 100644
--- a/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager.cc
+++ b/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager.cc
@@ -462,6 +462,11 @@
   DCHECK(omit_non_user_gestures_is_enabled ||
          out_referrer_chain->size() <= kReferrerChainMaxLength);
   if (omit_non_user_gestures_is_enabled) {
+    int extra_entries = out_referrer_chain->size() - kReferrerChainMaxLength;
+    UMA_HISTOGRAM_COUNTS_1000(
+        "SafeBrowsing.NavigationObserver.DroppedReferrerChainEntries."
+        "ClientRedirect",
+        extra_entries);
     MaybeRemoveNonUserGestureReferrerEntries(out_referrer_chain,
                                              kReferrerChainMaxLength);
   }
@@ -496,6 +501,11 @@
   DCHECK(omit_non_user_gestures_is_enabled ||
          out_referrer_chain->size() <= kReferrerChainMaxLength);
   if (omit_non_user_gestures_is_enabled) {
+    int extra_entries = out_referrer_chain->size() - kReferrerChainMaxLength;
+    UMA_HISTOGRAM_COUNTS_1000(
+        "SafeBrowsing.NavigationObserver.DroppedReferrerChainEntries."
+        "ClientRedirect",
+        extra_entries);
     MaybeRemoveNonUserGestureReferrerEntries(out_referrer_chain,
                                              kReferrerChainMaxLength);
   }
@@ -565,6 +575,11 @@
   DCHECK(omit_non_user_gestures_is_enabled ||
          out_referrer_chain->size() <= kReferrerChainMaxLength);
   if (omit_non_user_gestures_is_enabled) {
+    int extra_entries = out_referrer_chain->size() - kReferrerChainMaxLength;
+    UMA_HISTOGRAM_COUNTS_1000(
+        "SafeBrowsing.NavigationObserver.DroppedReferrerChainEntries."
+        "ClientRedirect",
+        extra_entries);
     MaybeRemoveNonUserGestureReferrerEntries(out_referrer_chain,
                                              kReferrerChainMaxLength);
   }
@@ -672,6 +687,11 @@
   DCHECK(omit_non_user_gestures_is_enabled ||
          (size_t)navigation_chain.size() <= recent_navigation_count);
   if (omit_non_user_gestures_is_enabled) {
+    int extra_entries = navigation_chain.size() - recent_navigation_count;
+    UMA_HISTOGRAM_COUNTS_1000(
+        "SafeBrowsing.NavigationObserver.DroppedReferrerChainEntries."
+        "RecentNavigation",
+        extra_entries);
     MaybeRemoveNonUserGestureReferrerEntries(&navigation_chain,
                                              recent_navigation_count);
   }
diff --git a/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager_util.cc b/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager_util.cc
index 1318064..bcab825 100644
--- a/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager_util.cc
+++ b/components/safe_browsing/content/browser/safe_browsing_navigation_observer_manager_util.cc
@@ -11,7 +11,6 @@
 void MaybeRemoveNonUserGestureReferrerEntries(ReferrerChain* referrer_chain,
                                               int max_allowed_length) {
   int extra_entries = referrer_chain->size() - max_allowed_length;
-  // TODO(bdea): Log number of extra entries of the referrer chain.
   if (extra_entries > 0) {
     RemoveNonUserGestureReferrerEntries(referrer_chain, max_allowed_length);
   }
diff --git a/components/signin/internal/identity_manager/account_fetcher_service.cc b/components/signin/internal/identity_manager/account_fetcher_service.cc
index 8718a2c..41a5e58 100644
--- a/components/signin/internal/identity_manager/account_fetcher_service.cc
+++ b/components/signin/internal/identity_manager/account_fetcher_service.cc
@@ -109,12 +109,6 @@
   return account_capabilities_requests_.empty();
 }
 
-void AccountFetcherService::ForceRefreshOfAccountInfo(
-    const CoreAccountId& account_id) {
-  DCHECK(network_fetches_enabled_);
-  RefreshAccountInfo(account_id, /*only_fetch_if_invalid=*/false);
-}
-
 void AccountFetcherService::OnNetworkInitialized() {
   DCHECK(!network_initialized_);
   DCHECK(!network_fetches_enabled_);
@@ -154,6 +148,12 @@
 // single account. This is possible since we only support a single account to be
 // a child anyway.
 #if defined(OS_ANDROID)
+void AccountFetcherService::RefreshAccountInfoIfStale(
+    const CoreAccountId& account_id) {
+  DCHECK(network_fetches_enabled_);
+  RefreshAccountInfo(account_id, /*only_fetch_if_invalid=*/false);
+}
+
 void AccountFetcherService::UpdateChildInfo() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   std::vector<CoreAccountId> accounts = token_service_->GetAccounts();
diff --git a/components/signin/internal/identity_manager/account_fetcher_service.h b/components/signin/internal/identity_manager/account_fetcher_service.h
index 47e3279..f153f33 100644
--- a/components/signin/internal/identity_manager/account_fetcher_service.h
+++ b/components/signin/internal/identity_manager/account_fetcher_service.h
@@ -73,8 +73,6 @@
   virtual bool IsAllUserInfoFetched() const;
   virtual bool AreAllAccountCapabilitiesFetched() const;
 
-  void ForceRefreshOfAccountInfo(const CoreAccountId& account_id);
-
   AccountTrackerService* account_tracker_service() const {
     return account_tracker_service_;
   }
@@ -100,6 +98,9 @@
   void EnableAccountCapabilitiesFetcherForTest(bool enabled);
 
 #if defined(OS_ANDROID)
+  // Refresh the AccountInfo if the existing one is stale
+  void RefreshAccountInfoIfStale(const CoreAccountId& account_id);
+
   // Called by ChildAccountInfoFetcherAndroid.
   void SetIsChildAccount(const CoreAccountId& account_id,
                          bool is_child_account);
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/IdentityManager.java b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/IdentityManager.java
index 7ed5ba7d..fd3d451 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/IdentityManager.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/IdentityManager.java
@@ -165,12 +165,12 @@
     }
 
     /**
-     * Forces refreshing extended {@link AccountInfo} with image for the given
-     * list of {@link CoreAccountInfo}.
+     * Refreshes extended {@link AccountInfo} with image for the given
+     * list of {@link CoreAccountInfo} if the existing ones are stale.
      */
-    public void forceRefreshOfExtendedAccountInfo(List<CoreAccountInfo> accountInfos) {
+    public void refreshAccountInfoIfStale(List<CoreAccountInfo> accountInfos) {
         for (CoreAccountInfo accountInfo : accountInfos) {
-            IdentityManagerJni.get().forceRefreshOfExtendedAccountInfo(
+            IdentityManagerJni.get().refreshAccountInfoIfStale(
                     mNativeIdentityManager, accountInfo.getId());
         }
     }
@@ -208,7 +208,6 @@
         @Nullable
         AccountInfo findExtendedAccountInfoByEmailAddress(long nativeIdentityManager, String email);
         CoreAccountInfo[] getAccountsWithRefreshTokens(long nativeIdentityManager);
-        void forceRefreshOfExtendedAccountInfo(
-                long nativeIdentityManager, CoreAccountId coreAccountId);
+        void refreshAccountInfoIfStale(long nativeIdentityManager, CoreAccountId coreAccountId);
     }
 }
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java
index 7024b3f8..5e181697 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java
@@ -33,6 +33,7 @@
 import org.chromium.components.signin.AccessTokenData;
 import org.chromium.components.signin.AccountManagerFacadeProvider;
 import org.chromium.components.signin.AccountUtils;
+import org.chromium.components.signin.AuthException;
 import org.chromium.components.signin.test.util.FakeAccountManagerFacade;
 
 import java.util.List;
@@ -109,7 +110,7 @@
 
     @Test
     @SmallTest
-    public void testGetOAuth2AccessTokenOnSuccess() {
+    public void testGetOAuth2AccessTokenOnSuccess() throws AuthException {
         final String scope = "oauth2:http://example.com/scope";
         mAccountManagerFacade.addAccount(ACCOUNT);
         final AccessTokenData expectedToken = mAccountManagerFacade.getAccessToken(ACCOUNT, scope);
@@ -121,7 +122,7 @@
 
     @Test
     @SmallTest
-    public void testGetOAuth2AccessTokenOnFailure() {
+    public void testGetOAuth2AccessTokenOnFailure() throws AuthException {
         final String scope = "oauth2:http://example.com/scope";
         mAccountManagerFacade.addAccount(ACCOUNT);
         doReturn(null).when(mAccountManagerFacade).getAccessToken(any(Account.class), anyString());
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
index dd67f4f..db8b5f3 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
@@ -20,6 +20,7 @@
 import org.chromium.components.signin.AccessTokenData;
 import org.chromium.components.signin.AccountManagerFacade;
 import org.chromium.components.signin.AccountsChangeObserver;
+import org.chromium.components.signin.AuthException;
 
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
@@ -74,7 +75,7 @@
     }
 
     @Override
-    public AccessTokenData getAccessToken(Account account, String scope) {
+    public AccessTokenData getAccessToken(Account account, String scope) throws AuthException {
         synchronized (mLock) {
             AccountHolder accountHolder = getAccountHolder(account);
             if (accountHolder.getAuthToken(scope) == null) {
@@ -150,13 +151,19 @@
     }
 
     @GuardedBy("mLock")
-    private AccountHolder getAccountHolder(Account account) {
+    private AccountHolder getAccountHolder(Account account) throws AuthException {
         for (AccountHolder accountHolder : mAccountHolders) {
             if (accountHolder.getAccount().equals(account)) {
                 return accountHolder;
             }
         }
-        throw new IllegalArgumentException("Cannot find account:" + account);
+        // Since token requests are asynchronous, sometimes they arrive after the account has been
+        // removed. Thus, throwing an unchecked exception here would cause test failures (see
+        // https://crbug.com/1205346 for details). On the other hand, AuthException thrown here
+        // will be caught by ProfileOAuth2TokenServiceDelegate and reported as a token request
+        // failure (which matches the behavior of the production code in the situation when a token
+        // is requested for an account that doesn't exist or has been removed).
+        throw new AuthException(/* isTransientError = */ false, "Cannot find account:" + account);
     }
 
     @MainThread
diff --git a/components/signin/public/identity_manager/access_token_constants.cc b/components/signin/public/identity_manager/access_token_constants.cc
index a968b43..25d16ea 100644
--- a/components/signin/public/identity_manager/access_token_constants.cc
+++ b/components/signin/public/identity_manager/access_token_constants.cc
@@ -50,13 +50,8 @@
       // Required by Permission Request Creator.
       GaiaConstants::kClassifyUrlKidPermissionOAuth2Scope,
 
-#if defined(OS_IOS)
-      // TODO(1234406): Confirm why auth/android_checkin is needed for iOS.
-      GaiaConstants::kGCMGroupServerOAuth2Scope,
-      GaiaConstants::kGCMCheckinServerOAuth2Scope
-
     // Required by ChromeOS only.
-#elif BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
       GaiaConstants::kAccountsReauthOAuth2Scope,
       GaiaConstants::kAssistantOAuth2Scope,
       GaiaConstants::kAuditRecordingOAuth2Scope,
diff --git a/components/signin/public/identity_manager/identity_manager.cc b/components/signin/public/identity_manager/identity_manager.cc
index 9e689f2..ecbae67 100644
--- a/components/signin/public/identity_manager/identity_manager.cc
+++ b/components/signin/public/identity_manager/identity_manager.cc
@@ -445,7 +445,7 @@
       identity_mutator_.GetJavaObject());
 }
 
-void IdentityManager::ForceRefreshOfExtendedAccountInfo(
+void IdentityManager::RefreshAccountInfoIfStale(
     const CoreAccountId& account_id) {
   DCHECK(HasAccountWithRefreshToken(account_id));
   AccountInfo account_info =
@@ -453,13 +453,13 @@
   if (account_info.account_image.IsEmpty()) {
     account_info_fetch_start_times_[account_id] = base::TimeTicks::Now();
   }
-  account_fetcher_service_->ForceRefreshOfAccountInfo(account_id);
+  account_fetcher_service_->RefreshAccountInfoIfStale(account_id);
 }
 
-void IdentityManager::ForceRefreshOfExtendedAccountInfo(
+void IdentityManager::RefreshAccountInfoIfStale(
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& j_core_account_id) {
-  ForceRefreshOfExtendedAccountInfo(
+  RefreshAccountInfoIfStale(
       ConvertFromJavaCoreAccountId(env, j_core_account_id));
 }
 
diff --git a/components/signin/public/identity_manager/identity_manager.h b/components/signin/public/identity_manager/identity_manager.h
index 864ef79..6545030 100644
--- a/components/signin/public/identity_manager/identity_manager.h
+++ b/components/signin/public/identity_manager/identity_manager.h
@@ -443,11 +443,12 @@
   // Provide the reference on the java IdentityMutator.
   base::android::ScopedJavaLocalRef<jobject> GetIdentityMutatorJavaObject();
 
-  // This method has the contractual assumption that the account is a known
-  // account and has as its semantics that it fetches the account info for the
-  // account, triggering an OnExtendedAccountInfoUpdated() callback if the info
-  // was successfully fetched.
-  void ForceRefreshOfExtendedAccountInfo(const CoreAccountId& account_id);
+  // This method refreshes the AccountInfo associated with |account_id|,
+  // when the existing account info is stale, otherwise it doesn't fetch the
+  // account info if it is valid.
+  // This method triggers an OnExtendedAccountInfoUpdated()
+  // callback if the info was successfully fetched.
+  void RefreshAccountInfoIfStale(const CoreAccountId& account_id);
 
   // Overloads for calls from java:
   bool HasPrimaryAccount(JNIEnv* env) const;
@@ -467,9 +468,8 @@
   base::android::ScopedJavaLocalRef<jobjectArray> GetAccountsWithRefreshTokens(
       JNIEnv* env) const;
 
-  // Forces refreshing extended account info with image for the given
-  // core account id.
-  void ForceRefreshOfExtendedAccountInfo(
+  // Refreshes account info with image for the given core account id.
+  void RefreshAccountInfoIfStale(
       JNIEnv* env,
       const base::android::JavaParamRef<jobject>& j_core_account_id);
 #endif
@@ -594,8 +594,7 @@
   FRIEND_TEST_ALL_PREFIXES(IdentityManagerTest,
                            CallbackSentOnAccountsCookieDeletedByUserAction);
   FRIEND_TEST_ALL_PREFIXES(IdentityManagerTest, OnNetworkInitialized);
-  FRIEND_TEST_ALL_PREFIXES(IdentityManagerTest,
-                           ForceRefreshOfExtendedAccountInfo);
+  FRIEND_TEST_ALL_PREFIXES(IdentityManagerTest, RefreshAccountInfoIfStale);
   FRIEND_TEST_ALL_PREFIXES(IdentityManagerTest, FindExtendedPrimaryAccountInfo);
 
   // Only caller to FindExtendedPrimaryAccountInfo().
diff --git a/components/signin/public/identity_manager/identity_manager_unittest.cc b/components/signin/public/identity_manager/identity_manager_unittest.cc
index 431ee30..8611333 100644
--- a/components/signin/public/identity_manager/identity_manager_unittest.cc
+++ b/components/signin/public/identity_manager/identity_manager_unittest.cc
@@ -2439,7 +2439,7 @@
 }
 
 #if defined(OS_ANDROID)
-TEST_F(IdentityManagerTest, ForceRefreshOfExtendedAccountInfo) {
+TEST_F(IdentityManagerTest, RefreshAccountInfoIfStale) {
   // The flow of this test results in an interaction with
   // ChildAccountInfoFetcherAndroid, which requires initialization of
   // AccountManagerFacade in java code to avoid a crash.
@@ -2448,8 +2448,7 @@
   identity_manager()->GetAccountFetcherService()->OnNetworkInitialized();
   AccountInfo account_info =
       MakeAccountAvailable(identity_manager(), kTestEmail2);
-  identity_manager()->ForceRefreshOfExtendedAccountInfo(
-      account_info.account_id);
+  identity_manager()->RefreshAccountInfoIfStale(account_info.account_id);
 
   SimulateSuccessfulFetchOfAccountInfo(
       identity_manager(), account_info.account_id, account_info.email,
diff --git a/components/sync/driver/data_type_controller.h b/components/sync/driver/data_type_controller.h
index 58dcfb3..2e86d16 100644
--- a/components/sync/driver/data_type_controller.h
+++ b/components/sync/driver/data_type_controller.h
@@ -41,8 +41,8 @@
     FAILED           // The controller was started but encountered an error.
   };
 
-  // Returned from ActivateDataType.
-  enum ActivateDataTypeResult {
+  // Returned from Connect.
+  enum ConnectResult {
     // Indicates that the initial download for this type is already complete, or
     // wasn't needed in the first place (e.g. for proxy types).
     TYPE_ALREADY_DOWNLOADED,
@@ -79,12 +79,11 @@
   // Called by DataTypeManager once the local model has loaded, but before
   // downloading initial data (if necessary). Returns whether the initial
   // download for this type is already complete.
-  virtual ActivateDataTypeResult ActivateDataType(
-      ModelTypeConfigurer* configurer) = 0;
+  virtual ConnectResult Connect(ModelTypeConfigurer* configurer) = 0;
 
-  // Called by DataTypeManager to deactivate the controlled data type.
+  // Called by DataTypeManager to disconnect the controlled data type.
   // See comments for ModelAssociationManager::OnSingleDataTypeWillStop.
-  virtual void DeactivateDataType(ModelTypeConfigurer* configurer) = 0;
+  virtual void Disconnect(ModelTypeConfigurer* configurer) = 0;
 
   // Stops the data type. If LoadModels() has not completed it will enter
   // STOPPING state first and eventually STOPPED. Once stopped, |callback| will
diff --git a/components/sync/driver/data_type_manager_impl.cc b/components/sync/driver/data_type_manager_impl.cc
index 3450046..2208c138 100644
--- a/components/sync/driver/data_type_manager_impl.cc
+++ b/components/sync/driver/data_type_manager_impl.cc
@@ -188,18 +188,18 @@
   Restart();
 }
 
-void DataTypeManagerImpl::ActivateDataTypes() {
+void DataTypeManagerImpl::ConnectDataTypes() {
   for (ModelType type : last_enabled_types_) {
     const auto& dtc_iter = controllers_->find(type);
     if (dtc_iter == controllers_->end())
       continue;
     DataTypeController* dtc = dtc_iter->second.get();
     if (dtc->state() == DataTypeController::MODEL_LOADED) {
-      // Only call ActivateDataType for types that completed LoadModels
+      // Only call Connect() for types that completed LoadModels()
       // successfully. Such types shouldn't be in an error state at the same
       // time.
       DCHECK(!data_type_status_table_.GetFailedTypes().Has(dtc->type()));
-      switch (dtc->ActivateDataType(configurer_)) {
+      switch (dtc->Connect(configurer_)) {
         case DataTypeController::TYPE_ALREADY_DOWNLOADED:
           // Proxy types (as opposed to protocol types) don't actually have any
           // data, so keep proxy types out of |downloaded_types_|.
@@ -338,7 +338,7 @@
   // TODO(pavely): By now some of datatypes in |configuration_types_queue_|
   // could have failed loading and should be excluded from configuration. I need
   // to adjust |configuration_types_queue_| for such types.
-  ActivateDataTypes();
+  ConnectDataTypes();
   StartNextConfiguration(/*higher_priority_types_before=*/ModelTypeSet());
 }
 
@@ -621,7 +621,7 @@
   auto c_it = controllers_->find(type);
   DCHECK(c_it != controllers_->end());
   // Delegate deactivation to the controller.
-  c_it->second->DeactivateDataType(configurer_);
+  c_it->second->Disconnect(configurer_);
 
   if (error.IsSet()) {
     data_type_status_table_.UpdateFailedDataType(type, error);
@@ -629,7 +629,7 @@
     last_requested_context_.reason =
         GetReasonForProgrammaticReconfigure(last_requested_context_.reason);
     // Do this asynchronously so the ModelLoadManager has a chance to
-    // finish stopping this type, otherwise DeactivateDataType() and Stop()
+    // finish stopping this type, otherwise Disconnect() and Stop()
     // end up getting called twice on the controller.
     base::SequencedTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(&DataTypeManagerImpl::ProcessReconfigure,
diff --git a/components/sync/driver/data_type_manager_impl.h b/components/sync/driver/data_type_manager_impl.h
index fef7c41..7cb9f4a 100644
--- a/components/sync/driver/data_type_manager_impl.h
+++ b/components/sync/driver/data_type_manager_impl.h
@@ -137,8 +137,8 @@
   void ConfigureImpl(ModelTypeSet desired_types,
                      const ConfigureContext& context);
 
-  // Calls data type controllers of requested types to activate.
-  void ActivateDataTypes();
+  // Calls data type controllers of requested types to connect.
+  void ConnectDataTypes();
 
   DataTypeConfigStateMap BuildDataTypeConfigStateMap(
       const ModelTypeSet& types_being_configured) const;
diff --git a/components/sync/driver/data_type_manager_impl_unittest.cc b/components/sync/driver/data_type_manager_impl_unittest.cc
index 2a6b5b00..204cc66 100644
--- a/components/sync/driver/data_type_manager_impl_unittest.cc
+++ b/components/sync/driver/data_type_manager_impl_unittest.cc
@@ -77,14 +77,14 @@
     last_params_ = std::move(params);
   }
 
-  void ActivateDataType(ModelType type,
-                        std::unique_ptr<DataTypeActivationResponse>
-                            activation_response) override {
-    activated_types_.Put(type);
+  void ConnectDataType(ModelType type,
+                       std::unique_ptr<DataTypeActivationResponse>
+                           activation_response) override {
+    connected_types_.Put(type);
   }
 
-  void DeactivateDataType(ModelType type) override {
-    activated_types_.Remove(type);
+  void DisconnectDataType(ModelType type) override {
+    connected_types_.Remove(type);
   }
 
   void SetProxyTabsDatatypeEnabled(bool enabled) override {}
@@ -97,14 +97,14 @@
              failed_download_types);
   }
 
-  const ModelTypeSet activated_types() { return activated_types_; }
+  const ModelTypeSet connected_types() { return connected_types_; }
 
   int configure_call_count() const { return configure_call_count_; }
 
   const ConfigureParams& last_params() const { return last_params_; }
 
  private:
-  ModelTypeSet activated_types_;
+  ModelTypeSet connected_types_;
   int configure_call_count_ = 0;
   ConfigureParams last_params_;
 };
@@ -321,7 +321,7 @@
 
   Configure(ModelTypeSet(BOOKMARKS));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.activated_types());
+  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.connected_types());
 
   // Once configuration is finished, the debug info listener should be notified,
   // including the implicitly-enabled NIGORI and the newly-downloaded BOOKMARKS.
@@ -335,7 +335,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(BOOKMARKS), ModelTypeSet());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(1U, configurer_.activated_types().Size());
+  EXPECT_EQ(1U, configurer_.connected_types().Size());
 
   // The debug info listener is called through a WeakHandle, which posts a task.
   // So wait for that to actually get executed.
@@ -343,7 +343,7 @@
 
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
   EXPECT_EQ(0, GetController(BOOKMARKS)->model()->clear_metadata_call_count());
 }
 
@@ -360,15 +360,15 @@
 
     Configure(ModelTypeSet(BOOKMARKS));
     EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-    EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.activated_types());
+    EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.connected_types());
 
     dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
     EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-    EXPECT_TRUE(configurer_.activated_types().Empty());
+    EXPECT_TRUE(configurer_.connected_types().Empty());
   }
 
   FinishDownloadWhileStopped(ModelTypeSet(BOOKMARKS), ModelTypeSet());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Set up a DTM with a single controller, configure it, finish
@@ -391,14 +391,14 @@
 
     dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
     EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-    EXPECT_TRUE(configurer_.activated_types().Empty());
+    EXPECT_TRUE(configurer_.connected_types().Empty());
     dtm_.reset();
   }
 
   EXPECT_EQ(DataTypeController::STOPPING, GetController(BOOKMARKS)->state());
   GetController(BOOKMARKS)->model()->SimulateModelStartFinished();
   ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Set up a DTM with a single controller.  Then:
@@ -484,7 +484,7 @@
   // Step 1.
   Configure(ModelTypeSet(BOOKMARKS));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.activated_types());
+  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.connected_types());
 
   // Step 2.
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
@@ -499,7 +499,7 @@
   Configure(ModelTypeSet(BOOKMARKS, PREFERENCES));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
   EXPECT_EQ(ModelTypeSet(BOOKMARKS, PREFERENCES),
-            configurer_.activated_types());
+            configurer_.connected_types());
   EXPECT_EQ(0, GetController(BOOKMARKS)->model()->clear_metadata_call_count());
 
   // Step 4.
@@ -510,7 +510,7 @@
   // Step 5.
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Set up a DTM with two controllers.  Then:
@@ -530,7 +530,7 @@
   // Step 1.
   Configure(ModelTypeSet(BOOKMARKS));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.activated_types());
+  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.connected_types());
 
   // Step 2.
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
@@ -544,7 +544,7 @@
   // Step 3.
   Configure(ModelTypeSet(PREFERENCES));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_EQ(ModelTypeSet(PREFERENCES), configurer_.activated_types());
+  EXPECT_EQ(ModelTypeSet(PREFERENCES), configurer_.connected_types());
   EXPECT_EQ(1, GetController(BOOKMARKS)->model()->clear_metadata_call_count());
 
   // Step 4.
@@ -555,7 +555,7 @@
   // Step 5.
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 TEST_F(SyncDataTypeManagerImplTest, ConfigureModelLoading) {
@@ -571,7 +571,7 @@
   // Step 1: Configure with first controller (model stays loading).
   Configure(ModelTypeSet(BOOKMARKS));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 
   // Step 2: Configure with both controllers, which gets postponed because
   //         there's an ongoing configuration that cannot complete before the
@@ -599,12 +599,12 @@
   FinishDownload(ModelTypeSet(BOOKMARKS, PREFERENCES), ModelTypeSet());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
   EXPECT_EQ(ModelTypeSet(BOOKMARKS, PREFERENCES),
-            configurer_.activated_types());
+            configurer_.connected_types());
 
   // Step 5: Stop the DTM.
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Set up a DTM with one controller. Then configure and start the controller
@@ -622,7 +622,7 @@
 
   Configure(ModelTypeSet(BOOKMARKS));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 
   ASSERT_EQ(DataTypeController::MODEL_STARTING,
             GetController(BOOKMARKS)->state());
@@ -633,7 +633,7 @@
   // This should be CONFIGURED but is not properly handled in
   // DataTypeManagerImpl::OnAllDataTypesReadyForConfigure().
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Set up a DTM with two controllers.  Then:
@@ -653,7 +653,7 @@
   // Step 1.
   Configure(ModelTypeSet(BOOKMARKS));
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.activated_types());
+  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.connected_types());
 
   // Step 2.
   Configure(ModelTypeSet(BOOKMARKS, PREFERENCES));
@@ -668,12 +668,12 @@
   FinishDownload(ModelTypeSet(BOOKMARKS, PREFERENCES), ModelTypeSet());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
   EXPECT_EQ(ModelTypeSet(BOOKMARKS, PREFERENCES),
-            configurer_.activated_types());
+            configurer_.connected_types());
 
   // Step 5.
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Set up a DTM with two controllers.  Then:
@@ -696,7 +696,7 @@
   Configure(ModelTypeSet(BOOKMARKS));
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state());
-  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.activated_types());
+  EXPECT_EQ(ModelTypeSet(BOOKMARKS), configurer_.connected_types());
 
   // Step 2.
   Configure(ModelTypeSet(BOOKMARKS, PREFERENCES));
@@ -711,12 +711,12 @@
   FinishDownload(ModelTypeSet(BOOKMARKS, PREFERENCES), ModelTypeSet());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
   EXPECT_EQ(ModelTypeSet(BOOKMARKS, PREFERENCES),
-            configurer_.activated_types());
+            configurer_.connected_types());
 
   // Step 5.
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Tests a Purge then Configure.  This is similar to the sequence of
@@ -996,7 +996,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(0U, configurer_.activated_types().Size());
+  EXPECT_EQ(0U, configurer_.connected_types().Size());
   observer_.ResetExpectations();
 
   // Bookmarks should start normally now.
@@ -1009,7 +1009,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(BOOKMARKS), ModelTypeSet());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(1U, configurer_.activated_types().Size());
+  EXPECT_EQ(1U, configurer_.connected_types().Size());
 
   // Should do nothing.
   observer_.ResetExpectations();
@@ -1017,7 +1017,7 @@
 
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Tests that unready types are not started after ResetDataTypeErrors and
@@ -1046,7 +1046,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // regular types
   EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(0U, configurer_.activated_types().Size());
+  EXPECT_EQ(0U, configurer_.connected_types().Size());
 }
 
 TEST_F(SyncDataTypeManagerImplTest, UnreadyTypeLaterReady) {
@@ -1064,7 +1064,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(0U, configurer_.activated_types().Size());
+  ASSERT_EQ(0U, configurer_.connected_types().Size());
 
   // Bookmarks should start normally now.
   GetController(BOOKMARKS)->SetPreconditionState(
@@ -1080,7 +1080,7 @@
   FinishDownload(ModelTypeSet(BOOKMARKS), ModelTypeSet());
 
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(1U, configurer_.activated_types().Size());
+  EXPECT_EQ(1U, configurer_.connected_types().Size());
 }
 
 TEST_F(SyncDataTypeManagerImplTest,
@@ -1106,7 +1106,7 @@
   ASSERT_EQ(DataTypeController::NOT_RUNNING,
             GetController(PREFERENCES)->state());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(0U, configurer_.activated_types().Size());
+  ASSERT_EQ(0U, configurer_.connected_types().Size());
 
   // Both types should start normally now.
   GetController(BOOKMARKS)->SetPreconditionState(
@@ -1130,7 +1130,7 @@
   FinishDownload(ModelTypeSet(BOOKMARKS, PREFERENCES), ModelTypeSet());
 
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(2U, configurer_.activated_types().Size());
+  EXPECT_EQ(2U, configurer_.connected_types().Size());
 }
 
 TEST_F(SyncDataTypeManagerImplTest, MultipleUnreadyTypesLaterOneOfThemReady) {
@@ -1155,7 +1155,7 @@
   ASSERT_EQ(DataTypeController::NOT_RUNNING,
             GetController(PREFERENCES)->state());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(0U, configurer_.activated_types().Size());
+  ASSERT_EQ(0U, configurer_.connected_types().Size());
 
   // Bookmarks should start normally now. Preferences should still not start.
   GetController(BOOKMARKS)->SetPreconditionState(
@@ -1176,7 +1176,7 @@
   FinishDownload(ModelTypeSet(BOOKMARKS), ModelTypeSet());
 
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(1U, configurer_.activated_types().Size());
+  EXPECT_EQ(1U, configurer_.connected_types().Size());
 }
 
 TEST_F(SyncDataTypeManagerImplTest,
@@ -1195,7 +1195,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(0U, configurer_.activated_types().Size());
+  ASSERT_EQ(0U, configurer_.connected_types().Size());
 
   // Bookmarks is still unready so DataTypePreconditionChanged() should be
   // ignored.
@@ -1242,7 +1242,7 @@
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
   EXPECT_EQ(DataTypeController::FAILED, GetController(BOOKMARKS)->state());
 
-  EXPECT_EQ(0U, configurer_.activated_types().Size());
+  EXPECT_EQ(0U, configurer_.connected_types().Size());
 }
 
 // Checks that DTM handles the case when a controller is already in a FAILED
@@ -1330,11 +1330,11 @@
   ASSERT_EQ(3, configurer_.configure_call_count());  // Not increased.
 
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(2U, configurer_.activated_types().Size());
+  EXPECT_EQ(2U, configurer_.connected_types().Size());
 
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
 }
 
 // Test that DataTypeManagerImpl delays configuration until all data types
@@ -1361,12 +1361,12 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(BOOKMARKS), ModelTypeSet());
   EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  EXPECT_EQ(1U, configurer_.activated_types().Size());
+  EXPECT_EQ(1U, configurer_.connected_types().Size());
 }
 
 // Test that when encryption fails for a given type, the corresponding
 // data type is not activated.
-TEST_F(SyncDataTypeManagerImplTest, ActivateDataTypeOnEncryptionError) {
+TEST_F(SyncDataTypeManagerImplTest, ConnectDataTypeOnEncryptionError) {
   AddController(BOOKMARKS);
   AddController(PASSWORDS);
   GetController(BOOKMARKS)->model()->EnableManualModelStart();
@@ -1387,9 +1387,9 @@
   EXPECT_EQ(1, GetController(PASSWORDS)->activate_call_count());
 }
 
-// Test that ActivateDataType is not called for datatypes that failed
+// Test that Connect is not called for datatypes that failed
 // LoadModels().
-TEST_F(SyncDataTypeManagerImplTest, ActivateDataTypeAfterLoadModelsError) {
+TEST_F(SyncDataTypeManagerImplTest, ConnectDataTypeAfterLoadModelsError) {
   // Initiate configuration for two datatypes but block them at LoadModels.
   AddController(BOOKMARKS);
   AddController(PASSWORDS);
@@ -1407,7 +1407,7 @@
       ModelError(FROM_HERE, "test error"));
   GetController(PASSWORDS)->model()->SimulateModelStartFinished();
 
-  // ActivateDataType should be called for passwords, but not bookmarks.
+  // Connect should be called for passwords, but not bookmarks.
   EXPECT_EQ(0, GetController(BOOKMARKS)->activate_call_count());
   EXPECT_EQ(1, GetController(PASSWORDS)->activate_call_count());
 }
@@ -1424,7 +1424,7 @@
 
   dtm_->Stop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA);
   EXPECT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  EXPECT_TRUE(configurer_.activated_types().Empty());
+  EXPECT_TRUE(configurer_.connected_types().Empty());
   EXPECT_EQ(1, GetController(BOOKMARKS)->model()->clear_metadata_call_count());
 }
 
@@ -1442,12 +1442,12 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(BOOKMARKS, AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(2U, configurer_.activated_types().Size());
+  ASSERT_EQ(2U, configurer_.connected_types().Size());
 
   // The user temporarily turns off Sync.
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   ASSERT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  ASSERT_TRUE(configurer_.activated_types().Empty());
+  ASSERT_TRUE(configurer_.connected_types().Empty());
   ASSERT_EQ(0, GetController(BOOKMARKS)->model()->clear_metadata_call_count());
 
   // Now we restart with a reduced set of data types.
@@ -1459,7 +1459,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(1U, configurer_.activated_types().Size());
+  ASSERT_EQ(1U, configurer_.connected_types().Size());
 
   // This should have purged the data for the excluded type.
   EXPECT_TRUE(last_configure_params().to_purge.Has(BOOKMARKS));
@@ -1485,12 +1485,12 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(BOOKMARKS, AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(2U, configurer_.activated_types().Size());
+  ASSERT_EQ(2U, configurer_.connected_types().Size());
 
   // The user temporarily turns off Sync.
   dtm_->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   ASSERT_EQ(DataTypeManager::STOPPED, dtm_->state());
-  ASSERT_TRUE(configurer_.activated_types().Empty());
+  ASSERT_TRUE(configurer_.connected_types().Empty());
   ASSERT_EQ(0, GetController(BOOKMARKS)->model()->clear_metadata_call_count());
 
   // Now we restart in ephemeral mode, with a reduced set of data types.
@@ -1502,7 +1502,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(1U, configurer_.activated_types().Size());
+  ASSERT_EQ(1U, configurer_.connected_types().Size());
 
   // This should *not* have purged the data for the excluded type.
   EXPECT_TRUE(last_configure_params().to_purge.Empty());
@@ -1525,7 +1525,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(BOOKMARKS, AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(2U, configurer_.activated_types().Size());
+  ASSERT_EQ(2U, configurer_.connected_types().Size());
 
   // Now we reconfigure with a reduced set of data types.
   SetConfigureStartExpectation();
@@ -1536,7 +1536,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(1U, configurer_.activated_types().Size());
+  ASSERT_EQ(1U, configurer_.connected_types().Size());
 
   // This should have purged the data for the excluded type.
   EXPECT_TRUE(last_configure_params().to_purge.Has(BOOKMARKS));
@@ -1561,7 +1561,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(BOOKMARKS, AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(2U, configurer_.activated_types().Size());
+  ASSERT_EQ(2U, configurer_.connected_types().Size());
 
   // Now we reconfigure into ephemeral mode, with a reduced set of data types.
   SetConfigureStartExpectation();
@@ -1572,7 +1572,7 @@
   FinishDownload(ModelTypeSet(), ModelTypeSet());  // control types
   FinishDownload(ModelTypeSet(AUTOFILL_WALLET_DATA), ModelTypeSet());
   ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
-  ASSERT_EQ(1U, configurer_.activated_types().Size());
+  ASSERT_EQ(1U, configurer_.connected_types().Size());
 
   // This should *not* have cleared the data for the excluded type.
   EXPECT_TRUE(last_configure_params().to_purge.Empty());
diff --git a/components/sync/driver/fake_data_type_controller.cc b/components/sync/driver/fake_data_type_controller.cc
index 24b14eb9..51df1d4 100644
--- a/components/sync/driver/fake_data_type_controller.cc
+++ b/components/sync/driver/fake_data_type_controller.cc
@@ -39,10 +39,10 @@
   return precondition_state_;
 }
 
-DataTypeController::ActivateDataTypeResult
-FakeDataTypeController::ActivateDataType(ModelTypeConfigurer* configurer) {
+DataTypeController::ConnectResult FakeDataTypeController::Connect(
+    ModelTypeConfigurer* configurer) {
   ++activate_call_count_;
-  return ModelTypeController::ActivateDataType(configurer);
+  return ModelTypeController::Connect(configurer);
 }
 
 }  // namespace syncer
diff --git a/components/sync/driver/fake_data_type_controller.h b/components/sync/driver/fake_data_type_controller.h
index 3562597b..206a6b80 100644
--- a/components/sync/driver/fake_data_type_controller.h
+++ b/components/sync/driver/fake_data_type_controller.h
@@ -29,8 +29,7 @@
 
   // ModelTypeController overrides.
   PreconditionState GetPreconditionState() const override;
-  ActivateDataTypeResult ActivateDataType(
-      ModelTypeConfigurer* configurer) override;
+  ConnectResult Connect(ModelTypeConfigurer* configurer) override;
 
  private:
   PreconditionState precondition_state_ = PreconditionState::kPreconditionsMet;
diff --git a/components/sync/driver/glue/sync_engine_backend.cc b/components/sync/driver/glue/sync_engine_backend.cc
index 8fbcbdd6..6ae99db 100644
--- a/components/sync/driver/glue/sync_engine_backend.cc
+++ b/components/sync/driver/glue/sync_engine_backend.cc
@@ -406,7 +406,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   // Update the enabled types for the bridge and sync manager.
-  const ModelTypeSet enabled_types = sync_manager_->GetEnabledTypes();
+  const ModelTypeSet enabled_types = sync_manager_->GetConnectedTypes();
   DCHECK(Intersection(enabled_types, ProxyTypes()).Empty());
 
   const ModelTypeSet failed_types =
diff --git a/components/sync/driver/glue/sync_engine_impl.cc b/components/sync/driver/glue/sync_engine_impl.cc
index a7694a3f..48448e7 100644
--- a/components/sync/driver/glue/sync_engine_impl.cc
+++ b/components/sync/driver/glue/sync_engine_impl.cc
@@ -344,14 +344,14 @@
                                 std::move(params)));
 }
 
-void SyncEngineImpl::ActivateDataType(
+void SyncEngineImpl::ConnectDataType(
     ModelType type,
     std::unique_ptr<DataTypeActivationResponse> activation_response) {
   DCHECK(!IsProxyType(type));
   model_type_connector_->ConnectDataType(type, std::move(activation_response));
 }
 
-void SyncEngineImpl::DeactivateDataType(ModelType type) {
+void SyncEngineImpl::DisconnectDataType(ModelType type) {
   DCHECK(!IsProxyType(type));
   model_type_connector_->DisconnectDataType(type);
 }
diff --git a/components/sync/driver/glue/sync_engine_impl.h b/components/sync/driver/glue/sync_engine_impl.h
index 0b17cf5..0d9eab05 100644
--- a/components/sync/driver/glue/sync_engine_impl.h
+++ b/components/sync/driver/glue/sync_engine_impl.h
@@ -82,9 +82,9 @@
   void StopSyncingForShutdown() override;
   void Shutdown(ShutdownReason reason) override;
   void ConfigureDataTypes(ConfigureParams params) override;
-  void ActivateDataType(ModelType type,
-                        std::unique_ptr<DataTypeActivationResponse>) override;
-  void DeactivateDataType(ModelType type) override;
+  void ConnectDataType(ModelType type,
+                       std::unique_ptr<DataTypeActivationResponse>) override;
+  void DisconnectDataType(ModelType type) override;
   void SetProxyTabsDatatypeEnabled(bool enabled) override;
   const Status& GetDetailedStatus() const override;
   void HasUnsyncedItemsForTest(
diff --git a/components/sync/driver/glue/sync_engine_impl_unittest.cc b/components/sync/driver/glue/sync_engine_impl_unittest.cc
index 54795f9..98c18b0 100644
--- a/components/sync/driver/glue/sync_engine_impl_unittest.cc
+++ b/components/sync/driver/glue/sync_engine_impl_unittest.cc
@@ -246,7 +246,7 @@
 
     if (expect_success) {
       EXPECT_TRUE(engine_types_.Empty());
-      engine_types_ = fake_manager_->GetEnabledTypes();
+      engine_types_ = fake_manager_->GetConnectedTypes();
     }
   }
 
@@ -583,8 +583,8 @@
 TEST_F(SyncEngineImplTest, ModelTypeConnectorValidDuringShutdown) {
   InitializeBackend();
   backend_->StopSyncingForShutdown();
-  // Verify that call to DeactivateDataType doesn't assert.
-  backend_->DeactivateDataType(AUTOFILL);
+  // Verify that call to DisconnectDataType doesn't assert.
+  backend_->DisconnectDataType(AUTOFILL);
   backend_->Shutdown(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   backend_.reset();
 }
diff --git a/components/sync/driver/model_type_controller.cc b/components/sync/driver/model_type_controller.cc
index 43a153f..e50545d 100644
--- a/components/sync/driver/model_type_controller.cc
+++ b/components/sync/driver/model_type_controller.cc
@@ -122,8 +122,8 @@
                               base::AsWeakPtr(this)));
 }
 
-DataTypeController::ActivateDataTypeResult
-ModelTypeController::ActivateDataType(ModelTypeConfigurer* configurer) {
+DataTypeController::ConnectResult ModelTypeController::Connect(
+    ModelTypeConfigurer* configurer) {
   DCHECK(CalledOnValidThread());
   DCHECK(configurer);
   DCHECK(activation_response_);
@@ -133,7 +133,7 @@
       activation_response_->model_type_state.initial_sync_done();
   // Pass activation context to ModelTypeRegistry, where ModelTypeWorker gets
   // created and connected with the delegate (processor).
-  configurer->ActivateDataType(type(), std::move(activation_response_));
+  configurer->ConnectDataType(type(), std::move(activation_response_));
 
   state_ = RUNNING;
   DVLOG(1) << "Sync running for " << ModelTypeToString(type());
@@ -141,11 +141,11 @@
   return initial_sync_done ? TYPE_ALREADY_DOWNLOADED : TYPE_NOT_YET_DOWNLOADED;
 }
 
-void ModelTypeController::DeactivateDataType(ModelTypeConfigurer* configurer) {
+void ModelTypeController::Disconnect(ModelTypeConfigurer* configurer) {
   DCHECK(CalledOnValidThread());
   DCHECK(configurer);
   if (state_ == RUNNING) {
-    configurer->DeactivateDataType(type());
+    configurer->DisconnectDataType(type());
     state_ = MODEL_LOADED;
   }
 }
@@ -310,7 +310,7 @@
       break;
     case MODEL_STARTING:
       DCHECK(model_stop_callbacks_.empty());
-      // Hold on to the activation context until ActivateDataType is called.
+      // Hold on to the activation context until Connect is called.
       activation_response_ = std::move(activation_response);
       state_ = MODEL_LOADED;
       DVLOG(1) << "Sync start completed for " << ModelTypeToString(type());
diff --git a/components/sync/driver/model_type_controller.h b/components/sync/driver/model_type_controller.h
index 33e4f9d..f5c8a6ed6 100644
--- a/components/sync/driver/model_type_controller.h
+++ b/components/sync/driver/model_type_controller.h
@@ -40,16 +40,15 @@
 
   // Steals the activation response, only used for Nigori.
   // TODO(crbug.com/967677): Once all datatypes are in USS, we should redesign
-  // or remove ActivateDataType, and expose the activation response via
+  // or remove Connect, and expose the activation response via
   // LoadModels(), which is more natural in USS.
   std::unique_ptr<DataTypeActivationResponse> ActivateManuallyForNigori();
 
   // DataTypeController implementation.
   void LoadModels(const ConfigureContext& configure_context,
                   const ModelLoadCallback& model_load_callback) override;
-  ActivateDataTypeResult ActivateDataType(
-      ModelTypeConfigurer* configurer) override;
-  void DeactivateDataType(ModelTypeConfigurer* configurer) override;
+  ConnectResult Connect(ModelTypeConfigurer* configurer) override;
+  void Disconnect(ModelTypeConfigurer* configurer) override;
   void Stop(ShutdownReason reason, StopCallback callback) override;
   State state() const override;
   bool ShouldRunInTransportOnlyMode() const override;
@@ -104,7 +103,7 @@
 
   // Controller receives |activation_response_| from
   // ClientTagBasedModelTypeProcessor callback and must temporarily own it until
-  // ActivateDataType is called.
+  // Connect is called.
   std::unique_ptr<DataTypeActivationResponse> activation_response_;
 
   DISALLOW_COPY_AND_ASSIGN(ModelTypeController);
diff --git a/components/sync/driver/model_type_controller_unittest.cc b/components/sync/driver/model_type_controller_unittest.cc
index c80c2b3..745da74 100644
--- a/components/sync/driver/model_type_controller_unittest.cc
+++ b/components/sync/driver/model_type_controller_unittest.cc
@@ -100,16 +100,16 @@
     NOTREACHED() << "Not implemented.";
   }
 
-  void ActivateDataType(ModelType type,
-                        std::unique_ptr<DataTypeActivationResponse>
-                            activation_response) override {
+  void ConnectDataType(ModelType type,
+                       std::unique_ptr<DataTypeActivationResponse>
+                           activation_response) override {
     DCHECK_EQ(kTestModelType, type);
     DCHECK(!processor_);
     processor_ = std::move(activation_response->type_processor);
     processor_->ConnectSync(nullptr);
   }
 
-  void DeactivateDataType(ModelType type) override {
+  void DisconnectDataType(ModelType type) override {
     DCHECK_EQ(kTestModelType, type);
     DCHECK(processor_);
     processor_->DisconnectSync();
@@ -186,11 +186,11 @@
     return true;
   }
 
-  void ActivateDataType(bool expect_downloaded) {
+  void Connect(bool expect_downloaded) {
     auto result = expect_downloaded
                       ? DataTypeController::TYPE_ALREADY_DOWNLOADED
                       : DataTypeController::TYPE_NOT_YET_DOWNLOADED;
-    EXPECT_EQ(result, controller_.ActivateDataType(&configurer_));
+    EXPECT_EQ(result, controller_.Connect(&configurer_));
     // ModelTypeProcessorProxy does posting of tasks.
     base::RunLoop().RunUntilIdle();
   }
@@ -203,8 +203,8 @@
     loop.Run();
   }
 
-  void DeactivateDataTypeAndStop(ShutdownReason shutdown_reason) {
-    controller_.DeactivateDataType(&configurer_);
+  void DisconnectAndStop(ShutdownReason shutdown_reason) {
+    controller_.Disconnect(&configurer_);
     StopAndWait(shutdown_reason);
   }
 
@@ -249,7 +249,7 @@
   base::HistogramTester histogram_tester;
   ASSERT_TRUE(LoadModels());
   EXPECT_EQ(DataTypeController::MODEL_LOADED, controller()->state());
-  ActivateDataType(/*expect_downloaded=*/false);
+  Connect(/*expect_downloaded=*/false);
   EXPECT_TRUE(processor()->is_connected());
   EXPECT_EQ(DataTypeController::RUNNING, controller()->state());
   histogram_tester.ExpectTotalCount(kStartFailuresHistogram, 0);
@@ -259,7 +259,7 @@
   base::HistogramTester histogram_tester;
   ASSERT_TRUE(LoadModels(/*initial_sync_done=*/true));
   EXPECT_EQ(DataTypeController::MODEL_LOADED, controller()->state());
-  ActivateDataType(/*expect_downloaded=*/true);
+  Connect(/*expect_downloaded=*/true);
   EXPECT_TRUE(processor()->is_connected());
   histogram_tester.ExpectTotalCount(kStartFailuresHistogram, 0);
 }
@@ -293,9 +293,9 @@
 
 TEST_F(ModelTypeControllerTest, Stop) {
   ASSERT_TRUE(LoadModels());
-  ActivateDataType(/*expect_downloaded=*/false);
+  Connect(/*expect_downloaded=*/false);
   EXPECT_TRUE(processor()->is_connected());
-  DeactivateDataTypeAndStop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
+  DisconnectAndStop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeController::NOT_RUNNING, controller()->state());
 }
 
@@ -305,7 +305,7 @@
 
   // Ensures that metadata was not cleared.
   EXPECT_CALL(*delegate(), OnSyncStopping(KEEP_METADATA));
-  DeactivateDataTypeAndStop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
+  DisconnectAndStop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA);
   EXPECT_EQ(DataTypeController::NOT_RUNNING, controller()->state());
   EXPECT_FALSE(processor()->is_connected());
 }
@@ -316,7 +316,7 @@
   ASSERT_TRUE(LoadModels());
 
   EXPECT_CALL(*delegate(), OnSyncStopping(CLEAR_METADATA));
-  DeactivateDataTypeAndStop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA);
+  DisconnectAndStop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA);
   EXPECT_EQ(DataTypeController::NOT_RUNNING, controller()->state());
   EXPECT_FALSE(processor()->is_connected());
 }
@@ -667,7 +667,7 @@
   std::move(start_callback).Run(std::move(activation_response));
   ASSERT_EQ(DataTypeController::MODEL_LOADED, controller()->state());
 
-  ActivateDataType(/*expect_downloaded=*/false);
+  Connect(/*expect_downloaded=*/false);
   ASSERT_EQ(DataTypeController::RUNNING, controller()->state());
 
   // Now trigger the run-time error.
diff --git a/components/sync/driver/sync_service_impl.cc b/components/sync/driver/sync_service_impl.cc
index 126f2e7..2a8414c 100644
--- a/components/sync/driver/sync_service_impl.cc
+++ b/components/sync/driver/sync_service_impl.cc
@@ -48,10 +48,6 @@
 #include "components/sync/model/type_entities_count.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "ash/constants/ash_features.h"
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
-
 namespace syncer {
 
 namespace {
@@ -262,24 +258,6 @@
 #endif  // defined(OS_ANDROID)
   }
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  // For Chrome OS, sync auto-starts and `IsFirstSetupComplete` is marked as
-  // true automatically in the first run. Below code is needed to disable sync
-  // for minor mode users (e.g. under age of 18) when consent flow is abandoned
-  // (due to crash or system shutdown) as sync should not auto-starts for minor
-  // users. At the time when below is called, we are not sure whether user is in
-  // minor mode. Thus we turn off data types for all users, and turn back on
-  // when we are certain the user is not in minor mode in `SyncConsentScreen`
-  // during OOBE. Below code could be removed after launch of
-  // `SplitSettingsSync`, when sync won't be started automatically.
-  if (chromeos::features::IsMinorModeRestrictionEnabled() &&
-      !chromeos::features::IsSplitSettingsSyncEnabled() &&
-      !user_settings_->IsFirstSetupComplete()) {
-    UserSelectableTypeSet empty_set;
-    user_settings_->SetSelectedTypes(/*sync_everything=*/false, empty_set);
-  }
-#endif
-
   // Auto-start means the first time the profile starts up, sync should start up
   // immediately. Since IsSyncRequested() is false by default and nobody else
   // will set it, we need to set it here.
diff --git a/components/sync/driver/sync_service_impl_unittest.cc b/components/sync/driver/sync_service_impl_unittest.cc
index 932038b..b70c997 100644
--- a/components/sync/driver/sync_service_impl_unittest.cc
+++ b/components/sync/driver/sync_service_impl_unittest.cc
@@ -48,10 +48,6 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "ash/constants/ash_features.h"
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
-
 using testing::_;
 using testing::AnyNumber;
 using testing::ByMove;
@@ -1122,31 +1118,6 @@
   EXPECT_FALSE(service()->GetDisableReasons().Empty());
 }
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-TEST_F(SyncServiceImplTest, ShouldDisableAllDataTypesForMinorsOnFirstSync) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(ash::features::kMinorModeRestriction);
-  SignIn();
-
-  // All data types should be disabled for first sync.
-  CreateService(SyncServiceImpl::AUTO_START);
-  InitializeForFirstSync();
-  EXPECT_FALSE(service()->GetUserSettings()->IsSyncEverythingEnabled());
-  EXPECT_TRUE(service()->GetUserSettings()->GetSelectedTypes().Empty());
-}
-
-TEST_F(SyncServiceImplTest, ShouldNotDisableDataTypesForMinorsOnNthSync) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(ash::features::kMinorModeRestriction);
-  SignIn();
-
-  // Data types should not be disabled for Nth sync.
-  CreateService(SyncServiceImpl::AUTO_START);
-  InitializeForNthSync();
-  EXPECT_TRUE(service()->GetUserSettings()->IsSyncEverythingEnabled());
-}
-#endif
-
 #if defined(OS_ANDROID)
 TEST_F(SyncServiceImplTest, DecoupleFromMasterSyncIfInitializedSignedOut) {
   base::test::ScopedFeatureList feature_list;
diff --git a/components/sync/engine/cycle/sync_cycle_context.cc b/components/sync/engine/cycle/sync_cycle_context.cc
index 01e38ff2..4b1a3eab 100644
--- a/components/sync/engine/cycle/sync_cycle_context.cc
+++ b/components/sync/engine/cycle/sync_cycle_context.cc
@@ -41,8 +41,8 @@
 
 SyncCycleContext::~SyncCycleContext() = default;
 
-ModelTypeSet SyncCycleContext::GetEnabledTypes() const {
-  return model_type_registry_->GetEnabledTypes();
+ModelTypeSet SyncCycleContext::GetConnectedTypes() const {
+  return model_type_registry_->GetConnectedTypes();
 }
 
 bool SyncCycleContext::proxy_tabs_datatype_enabled() const {
diff --git a/components/sync/engine/cycle/sync_cycle_context.h b/components/sync/engine/cycle/sync_cycle_context.h
index 744fefce..3aeaef8 100644
--- a/components/sync/engine/cycle/sync_cycle_context.h
+++ b/components/sync/engine/cycle/sync_cycle_context.h
@@ -54,7 +54,7 @@
 
   ServerConnectionManager* connection_manager() { return connection_manager_; }
 
-  ModelTypeSet GetEnabledTypes() const;
+  ModelTypeSet GetConnectedTypes() const;
 
   bool proxy_tabs_datatype_enabled() const;
 
diff --git a/components/sync/engine/model_type_configurer.h b/components/sync/engine/model_type_configurer.h
index f362ec4..25f9e43 100644
--- a/components/sync/engine/model_type_configurer.h
+++ b/components/sync/engine/model_type_configurer.h
@@ -47,14 +47,17 @@
   // Changes the set of data types that are currently being synced.
   virtual void ConfigureDataTypes(ConfigureParams params) = 0;
 
-  // Activates change processing for the given data type.
-  // This must be called before initial sync for data type.
-  virtual void ActivateDataType(
+  // Connects the datatype |type|, which means the sync engine will propagate
+  // changes between the server and datatype's processor, as provided in
+  // |activation_response|. This must be called before requesting the initial
+  // download of a datatype via ConfigureDataTypes().
+  virtual void ConnectDataType(
       ModelType type,
       std::unique_ptr<DataTypeActivationResponse> activation_response) = 0;
 
-  // Deactivates change processing for the given data type.
-  virtual void DeactivateDataType(ModelType type) = 0;
+  // Opposite of the above: stops treating |type| as a datatype that is
+  // propagating changes between the server and the processor.
+  virtual void DisconnectDataType(ModelType type) = 0;
 
   // Propagates whether PROXY_TABS is enabled, which influences a bit exposed to
   // the server during commits.
diff --git a/components/sync/engine/model_type_registry.cc b/components/sync/engine/model_type_registry.cc
index b56ea4a6..04f87d4c 100644
--- a/components/sync/engine/model_type_registry.cc
+++ b/components/sync/engine/model_type_registry.cc
@@ -85,12 +85,12 @@
   proxy_tabs_datatype_enabled_ = enabled;
 }
 
-ModelTypeSet ModelTypeRegistry::GetEnabledTypes() const {
-  ModelTypeSet enabled_types;
+ModelTypeSet ModelTypeRegistry::GetConnectedTypes() const {
+  ModelTypeSet types;
   for (const auto& worker : connected_model_type_workers_) {
-    enabled_types.Put(worker->GetModelType());
+    types.Put(worker->GetModelType());
   }
-  return enabled_types;
+  return types;
 }
 
 bool ModelTypeRegistry::proxy_tabs_datatype_enabled() const {
diff --git a/components/sync/engine/model_type_registry.h b/components/sync/engine/model_type_registry.h
index be5556586..754ed88 100644
--- a/components/sync/engine/model_type_registry.h
+++ b/components/sync/engine/model_type_registry.h
@@ -64,8 +64,10 @@
   void OnPassphraseTypeChanged(PassphraseType type,
                                base::Time passphrase_time) override;
 
-  // Gets the set of enabled types.
-  ModelTypeSet GetEnabledTypes() const;
+  // Gets the set of connected types, which is essentially the set of types that
+  // the sync engine cares about. For each of these, a worker exists to
+  // propagate changes between the server and the local model's processor.
+  ModelTypeSet GetConnectedTypes() const;
 
   bool proxy_tabs_datatype_enabled() const;
 
diff --git a/components/sync/engine/model_type_registry_unittest.cc b/components/sync/engine/model_type_registry_unittest.cc
index e50d074..8fa34ab 100644
--- a/components/sync/engine/model_type_registry_unittest.cc
+++ b/components/sync/engine/model_type_registry_unittest.cc
@@ -59,19 +59,19 @@
 };
 
 TEST_F(ModelTypeRegistryTest, ConnectDataTypes) {
-  EXPECT_TRUE(registry()->GetEnabledTypes().Empty());
+  EXPECT_TRUE(registry()->GetConnectedTypes().Empty());
 
   registry()->ConnectDataType(THEMES, MakeDataTypeActivationResponse(
                                           MakeInitialModelTypeState(THEMES)));
-  EXPECT_EQ(ModelTypeSet(THEMES), registry()->GetEnabledTypes());
+  EXPECT_EQ(ModelTypeSet(THEMES), registry()->GetConnectedTypes());
 
   registry()->ConnectDataType(
       SESSIONS,
       MakeDataTypeActivationResponse(MakeInitialModelTypeState(SESSIONS)));
-  EXPECT_EQ(ModelTypeSet(THEMES, SESSIONS), registry()->GetEnabledTypes());
+  EXPECT_EQ(ModelTypeSet(THEMES, SESSIONS), registry()->GetConnectedTypes());
 
   registry()->DisconnectDataType(THEMES);
-  EXPECT_EQ(ModelTypeSet(SESSIONS), registry()->GetEnabledTypes());
+  EXPECT_EQ(ModelTypeSet(SESSIONS), registry()->GetConnectedTypes());
 
   // Allow ModelTypeRegistry destruction to delete the
   // Sessions' ModelTypeSyncWorker.
diff --git a/components/sync/engine/sync_manager.h b/components/sync/engine/sync_manager.h
index 98f4bbeb..c6eadeb 100644
--- a/components/sync/engine/sync_manager.h
+++ b/components/sync/engine/sync_manager.h
@@ -133,7 +133,7 @@
 
   virtual ModelTypeSet InitialSyncEndedTypes() = 0;
 
-  virtual ModelTypeSet GetEnabledTypes() = 0;
+  virtual ModelTypeSet GetConnectedTypes() = 0;
 
   // Update tokens that we're using in Sync. Email must stay the same.
   virtual void UpdateCredentials(const SyncCredentials& credentials) = 0;
diff --git a/components/sync/engine/sync_manager_impl.cc b/components/sync/engine/sync_manager_impl.cc
index 2483839..91981ad 100644
--- a/components/sync/engine/sync_manager_impl.cc
+++ b/components/sync/engine/sync_manager_impl.cc
@@ -98,9 +98,9 @@
   return model_type_registry_->GetInitialSyncEndedTypes();
 }
 
-ModelTypeSet SyncManagerImpl::GetEnabledTypes() {
+ModelTypeSet SyncManagerImpl::GetConnectedTypes() {
   DCHECK(initialized_);
-  return model_type_registry_->GetEnabledTypes();
+  return model_type_registry_->GetConnectedTypes();
 }
 
 void SyncManagerImpl::ConfigureSyncer(ConfigureReason reason,
@@ -444,7 +444,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const ModelTypeSet types_to_refresh =
-      Intersection(types, model_type_registry_->GetEnabledTypes());
+      Intersection(types, model_type_registry_->GetConnectedTypes());
 
   if (!types.Empty()) {
     scheduler_->ScheduleLocalRefreshRequest(types_to_refresh);
diff --git a/components/sync/engine/sync_manager_impl.h b/components/sync/engine/sync_manager_impl.h
index 60bb38e..a9e012e5 100644
--- a/components/sync/engine/sync_manager_impl.h
+++ b/components/sync/engine/sync_manager_impl.h
@@ -53,7 +53,7 @@
   // SyncManager implementation.
   void Init(InitArgs* args) override;
   ModelTypeSet InitialSyncEndedTypes() override;
-  ModelTypeSet GetEnabledTypes() override;
+  ModelTypeSet GetConnectedTypes() override;
   void UpdateCredentials(const SyncCredentials& credentials) override;
   void InvalidateCredentials() override;
   void StartSyncingNormally(base::Time last_poll_time) override;
diff --git a/components/sync/engine/sync_scheduler_impl.cc b/components/sync/engine/sync_scheduler_impl.cc
index 88bc640d..c998baa6 100644
--- a/components/sync/engine/sync_scheduler_impl.cc
+++ b/components/sync/engine/sync_scheduler_impl.cc
@@ -221,7 +221,7 @@
 }
 
 ModelTypeSet SyncSchedulerImpl::GetEnabledAndUnblockedTypes() {
-  ModelTypeSet enabled_types = cycle_context_->GetEnabledTypes();
+  ModelTypeSet enabled_types = cycle_context_->GetConnectedTypes();
   ModelTypeSet enabled_protocol_types =
       Intersection(ProtocolTypes(), enabled_types);
   ModelTypeSet blocked_types = nudge_tracker_.GetBlockedTypes();
@@ -294,7 +294,7 @@
     return false;
   }
 
-  const ModelTypeSet enabled_types = cycle_context_->GetEnabledTypes();
+  const ModelTypeSet enabled_types = cycle_context_->GetConnectedTypes();
   if (nudge_tracker_.GetBlockedTypes().HasAll(enabled_types)) {
     SDVLOG(1) << "Not running a nudge because we're fully type throttled or "
                  "backed off.";
diff --git a/components/sync/engine/sync_scheduler_impl_unittest.cc b/components/sync/engine/sync_scheduler_impl_unittest.cc
index 2104200a..2b61893 100644
--- a/components/sync/engine/sync_scheduler_impl_unittest.cc
+++ b/components/sync/engine/sync_scheduler_impl_unittest.cc
@@ -532,7 +532,7 @@
   // The user enables a custom passphrase at this point, so
   // HISTORY_DELETE_DIRECTIVES gets disabled.
   DisconnectDataType(HISTORY_DELETE_DIRECTIVES);
-  ASSERT_FALSE(context()->GetEnabledTypes().Has(HISTORY_DELETE_DIRECTIVES));
+  ASSERT_FALSE(context()->GetConnectedTypes().Has(HISTORY_DELETE_DIRECTIVES));
 
   // There should be no sync cycle.
   EXPECT_CALL(*syncer(), NormalSyncShare).Times(0);
diff --git a/components/sync/engine/syncer.cc b/components/sync/engine/syncer.cc
index b5d7d31..e4177b24 100644
--- a/components/sync/engine/syncer.cc
+++ b/components/sync/engine/syncer.cc
@@ -73,7 +73,7 @@
   // it happens we should adjust set of types to download to only include
   // registered types.
   ModelTypeSet still_enabled_types =
-      Intersection(request_types, cycle->context()->GetEnabledTypes());
+      Intersection(request_types, cycle->context()->GetConnectedTypes());
   VLOG(1) << "Configuring types " << ModelTypeSetToString(still_enabled_types);
   HandleCycleBegin(cycle);
   DownloadAndApplyUpdates(&still_enabled_types, cycle,
@@ -146,7 +146,7 @@
   // However, it doesn't hurt to check it anyway.
   while (!ExitRequested()) {
     std::unique_ptr<Commit> commit(Commit::Init(
-        cycle->context()->GetEnabledTypes(),
+        cycle->context()->GetConnectedTypes(),
         cycle->context()->proxy_tabs_datatype_enabled(),
         cycle->context()->max_commit_batch_size(),
         cycle->context()->account_name(), cycle->context()->cache_guid(),
diff --git a/components/sync/engine/syncer_unittest.cc b/components/sync/engine/syncer_unittest.cc
index 9c78fc1..2caa234 100644
--- a/components/sync/engine/syncer_unittest.cc
+++ b/components/sync/engine/syncer_unittest.cc
@@ -141,12 +141,12 @@
     // Pretend we've seen a local change, to make the nudge_tracker look normal.
     nudge_tracker_.RecordLocalChange(BOOKMARKS);
 
-    return syncer_->NormalSyncShare(context_->GetEnabledTypes(),
+    return syncer_->NormalSyncShare(context_->GetConnectedTypes(),
                                     &nudge_tracker_, cycle_.get());
   }
 
   bool SyncShareConfigure() {
-    return SyncShareConfigureTypes(context_->GetEnabledTypes());
+    return SyncShareConfigureTypes(context_->GetConnectedTypes());
   }
 
   bool SyncShareConfigureTypes(ModelTypeSet types) {
@@ -277,17 +277,17 @@
 
   // Sync without enabling bookmarks.
   mock_server_->ExpectGetUpdatesRequestTypes(
-      Difference(context_->GetEnabledTypes(), throttled_types));
+      Difference(context_->GetConnectedTypes(), throttled_types));
   ResetCycle();
   syncer_->NormalSyncShare(
-      Difference(context_->GetEnabledTypes(), throttled_types), &nudge_tracker_,
-      cycle_.get());
+      Difference(context_->GetConnectedTypes(), throttled_types),
+      &nudge_tracker_, cycle_.get());
 
   // Nothing should have been committed as bookmarks is throttled.
   EXPECT_EQ(0, GetProcessor(BOOKMARKS)->GetLocalChangesCallCount());
 
   // Sync again with bookmarks enabled.
-  mock_server_->ExpectGetUpdatesRequestTypes(context_->GetEnabledTypes());
+  mock_server_->ExpectGetUpdatesRequestTypes(context_->GetConnectedTypes());
   EXPECT_TRUE(SyncShareNudge());
   EXPECT_EQ(1, GetProcessor(BOOKMARKS)->GetLocalChangesCallCount());
 }
diff --git a/components/sync/test/engine/fake_sync_engine.cc b/components/sync/test/engine/fake_sync_engine.cc
index caf1bbee..358f1f8 100644
--- a/components/sync/test/engine/fake_sync_engine.cc
+++ b/components/sync/test/engine/fake_sync_engine.cc
@@ -98,11 +98,11 @@
            /*failed_configuration_types=*/ModelTypeSet());
 }
 
-void FakeSyncEngine::ActivateDataType(
+void FakeSyncEngine::ConnectDataType(
     ModelType type,
     std::unique_ptr<DataTypeActivationResponse> activation_response) {}
 
-void FakeSyncEngine::DeactivateDataType(ModelType type) {}
+void FakeSyncEngine::DisconnectDataType(ModelType type) {}
 
 void FakeSyncEngine::SetProxyTabsDatatypeEnabled(bool enabled) {}
 
diff --git a/components/sync/test/engine/fake_sync_engine.h b/components/sync/test/engine/fake_sync_engine.h
index 563f038c..1763335 100644
--- a/components/sync/test/engine/fake_sync_engine.h
+++ b/components/sync/test/engine/fake_sync_engine.h
@@ -80,9 +80,9 @@
 
   void ConfigureDataTypes(ConfigureParams params) override;
 
-  void ActivateDataType(ModelType type,
-                        std::unique_ptr<DataTypeActivationResponse>) override;
-  void DeactivateDataType(ModelType type) override;
+  void ConnectDataType(ModelType type,
+                       std::unique_ptr<DataTypeActivationResponse>) override;
+  void DisconnectDataType(ModelType type) override;
 
   void SetProxyTabsDatatypeEnabled(bool enabled) override;
 
diff --git a/components/sync/test/engine/fake_sync_manager.cc b/components/sync/test/engine/fake_sync_manager.cc
index 0696e56..a932da96 100644
--- a/components/sync/test/engine/fake_sync_manager.cc
+++ b/components/sync/test/engine/fake_sync_manager.cc
@@ -75,7 +75,7 @@
   return initial_sync_ended_types_;
 }
 
-ModelTypeSet FakeSyncManager::GetEnabledTypes() {
+ModelTypeSet FakeSyncManager::GetConnectedTypes() {
   return progress_marker_types_;
 }
 
diff --git a/components/sync/test/engine/fake_sync_manager.h b/components/sync/test/engine/fake_sync_manager.h
index 56f4decb..e582a67 100644
--- a/components/sync/test/engine/fake_sync_manager.h
+++ b/components/sync/test/engine/fake_sync_manager.h
@@ -68,7 +68,7 @@
   // loop for purposes of callbacks.
   void Init(InitArgs* args) override;
   ModelTypeSet InitialSyncEndedTypes() override;
-  ModelTypeSet GetEnabledTypes() override;
+  ModelTypeSet GetConnectedTypes() override;
   void UpdateCredentials(const SyncCredentials& credentials) override;
   void InvalidateCredentials() override;
   void StartSyncingNormally(base::Time last_poll_time) override;
diff --git a/components/sync/test/engine/mock_sync_engine.h b/components/sync/test/engine/mock_sync_engine.h
index 8ddea1c9..fbefa8b 100644
--- a/components/sync/test/engine/mock_sync_engine.h
+++ b/components/sync/test/engine/mock_sync_engine.h
@@ -28,10 +28,10 @@
   // ModelTypeConfigurer:
   MOCK_METHOD(void, ConfigureDataTypes, (ConfigureParams), (override));
   MOCK_METHOD(void,
-              ActivateDataType,
+              ConnectDataType,
               (ModelType, std::unique_ptr<DataTypeActivationResponse>),
               (override));
-  MOCK_METHOD(void, DeactivateDataType, (ModelType), (override));
+  MOCK_METHOD(void, DisconnectDataType, (ModelType), (override));
   MOCK_METHOD(void, SetProxyTabsDatatypeEnabled, (bool), (override));
 
   // SyncEngine:
diff --git a/components/sync_sessions/proxy_tabs_data_type_controller.cc b/components/sync_sessions/proxy_tabs_data_type_controller.cc
index 2e99162..2a8a8a25 100644
--- a/components/sync_sessions/proxy_tabs_data_type_controller.cc
+++ b/components/sync_sessions/proxy_tabs_data_type_controller.cc
@@ -32,8 +32,7 @@
   model_load_callback.Run(type(), syncer::SyncError());
 }
 
-syncer::DataTypeController::ActivateDataTypeResult
-ProxyTabsDataTypeController::ActivateDataType(
+syncer::DataTypeController::ConnectResult ProxyTabsDataTypeController::Connect(
     syncer::ModelTypeConfigurer* configurer) {
   DCHECK(configurer);
   DCHECK_EQ(MODEL_LOADED, state_);
@@ -66,7 +65,7 @@
   return false;
 }
 
-void ProxyTabsDataTypeController::DeactivateDataType(
+void ProxyTabsDataTypeController::Disconnect(
     syncer::ModelTypeConfigurer* configurer) {
   if (state_ == RUNNING) {
     configurer->SetProxyTabsDatatypeEnabled(false);
diff --git a/components/sync_sessions/proxy_tabs_data_type_controller.h b/components/sync_sessions/proxy_tabs_data_type_controller.h
index 5af823f..1f89115d2 100644
--- a/components/sync_sessions/proxy_tabs_data_type_controller.h
+++ b/components/sync_sessions/proxy_tabs_data_type_controller.h
@@ -23,13 +23,12 @@
   // DataTypeController interface.
   void LoadModels(const syncer::ConfigureContext& configure_context,
                   const ModelLoadCallback& model_load_callback) override;
-  ActivateDataTypeResult ActivateDataType(
-      syncer::ModelTypeConfigurer* configurer) override;
+  ConnectResult Connect(syncer::ModelTypeConfigurer* configurer) override;
   void Stop(syncer::ShutdownReason shutdown_reason,
             StopCallback callback) override;
   State state() const override;
   bool ShouldRunInTransportOnlyMode() const override;
-  void DeactivateDataType(syncer::ModelTypeConfigurer* configurer) override;
+  void Disconnect(syncer::ModelTypeConfigurer* configurer) override;
   void GetAllNodes(AllNodesCallback callback) override;
   void GetTypeEntitiesCount(
       base::OnceCallback<void(const syncer::TypeEntitiesCount&)> callback)
diff --git a/components/ukm/ukm_service.h b/components/ukm/ukm_service.h
index c34ca81..0d9d2eb 100644
--- a/components/ukm/ukm_service.h
+++ b/components/ukm/ukm_service.h
@@ -7,7 +7,6 @@
 
 #include <stddef.h>
 #include <memory>
-#include <vector>
 
 #include "base/feature_list.h"
 #include "base/gtest_prod_util.h"
diff --git a/components/variations/android/variations_seed_bridge.cc b/components/variations/android/variations_seed_bridge.cc
index 21e85a7..202add6 100644
--- a/components/variations/android/variations_seed_bridge.cc
+++ b/components/variations/android/variations_seed_bridge.cc
@@ -6,7 +6,6 @@
 
 #include <jni.h>
 #include <stdint.h>
-#include <vector>
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_array.h"
diff --git a/components/variations/entropy_provider.cc b/components/variations/entropy_provider.cc
index ba1285f..36381abd 100644
--- a/components/variations/entropy_provider.cc
+++ b/components/variations/entropy_provider.cc
@@ -6,7 +6,6 @@
 
 #include <algorithm>
 #include <limits>
-#include <vector>
 
 #include "base/check_op.h"
 #include "base/hash/sha1.h"
diff --git a/components/variations/entropy_provider.h b/components/variations/entropy_provider.h
index 8cd0109..ff719cd 100644
--- a/components/variations/entropy_provider.h
+++ b/components/variations/entropy_provider.h
@@ -11,7 +11,6 @@
 #include <functional>
 #include <random>
 #include <string>
-#include <vector>
 
 #include "base/compiler_specific.h"
 #include "base/component_export.h"
diff --git a/components/variations/net/omnibox_http_headers.h b/components/variations/net/omnibox_http_headers.h
index ce051fa..992334e 100644
--- a/components/variations/net/omnibox_http_headers.h
+++ b/components/variations/net/omnibox_http_headers.h
@@ -7,7 +7,6 @@
 
 #include <memory>
 #include <string>
-#include <vector>
 
 #include "base/component_export.h"
 #include "base/feature_list.h"
diff --git a/components/variations/variations_associated_data.h b/components/variations/variations_associated_data.h
index 21da1ca..cfb892b1 100644
--- a/components/variations/variations_associated_data.h
+++ b/components/variations/variations_associated_data.h
@@ -8,7 +8,6 @@
 #include <map>
 #include <memory>
 #include <string>
-#include <vector>
 
 #include "base/metrics/field_trial.h"
 #include "components/variations/active_field_trials.h"
diff --git a/components/variations/variations_seed_processor.h b/components/variations/variations_seed_processor.h
index 763ac56..4d79d600 100644
--- a/components/variations/variations_seed_processor.h
+++ b/components/variations/variations_seed_processor.h
@@ -8,7 +8,6 @@
 #include <stdint.h>
 
 #include <string>
-#include <vector>
 
 #include "base/callback_forward.h"
 #include "base/compiler_specific.h"
diff --git a/components/variations/variations_seed_processor_unittest.cc b/components/variations/variations_seed_processor_unittest.cc
index 3312e95..5c1326a 100644
--- a/components/variations/variations_seed_processor_unittest.cc
+++ b/components/variations/variations_seed_processor_unittest.cc
@@ -10,7 +10,6 @@
 #include <map>
 #include <memory>
 #include <utility>
-#include <vector>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
diff --git a/components/viz/common/frame_sinks/begin_frame_args.cc b/components/viz/common/frame_sinks/begin_frame_args.cc
index 8eaf5b4..00f0119 100644
--- a/components/viz/common/frame_sinks/begin_frame_args.cc
+++ b/components/viz/common/frame_sinks/begin_frame_args.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "base/trace_event/interned_args_helper.h"
 #include "base/trace_event/traced_value.h"
 #include "third_party/perfetto/protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/track_event/source_location.pbzero.h"
@@ -152,6 +153,7 @@
 }
 
 void BeginFrameArgs::AsProtozeroInto(
+    perfetto::EventContext& ctx,
     perfetto::protos::pbzero::BeginFrameArgs* state) const {
   state->set_type(TypeToProtozeroEnum(type));
   state->set_source_id(frame_id.source_id);
@@ -165,16 +167,8 @@
   state->set_on_critical_path(on_critical_path);
   state->set_animate_only(animate_only);
 #ifndef NDEBUG
-  auto* src_loc = state->set_source_location();
-  if (created_from.file_name()) {
-    src_loc->set_file_name(created_from.file_name());
-  }
-  if (created_from.function_name()) {
-    src_loc->set_function_name(created_from.function_name());
-  }
-  if (created_from.line_number() != -1) {
-    src_loc->set_line_number(created_from.line_number());
-  }
+  state->set_source_location_iid(base::trace_event::InternedSourceLocation::Get(
+      &ctx, base::trace_event::TraceSourceLocation(created_from)));
 #endif
 }
 
diff --git a/components/viz/common/frame_sinks/begin_frame_args.h b/components/viz/common/frame_sinks/begin_frame_args.h
index 61481ff..eb1c3f9 100644
--- a/components/viz/common/frame_sinks/begin_frame_args.h
+++ b/components/viz/common/frame_sinks/begin_frame_args.h
@@ -16,6 +16,7 @@
 #include "components/viz/common/viz_common_export.h"
 
 namespace perfetto {
+class EventContext;
 namespace protos {
 namespace pbzero {
 class BeginFrameArgs;
@@ -149,7 +150,8 @@
   // these base::trace_event json dictionary functions.
   std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() const;
   void AsValueInto(base::trace_event::TracedValue* dict) const;
-  void AsProtozeroInto(perfetto::protos::pbzero::BeginFrameArgs* args) const;
+  void AsProtozeroInto(perfetto::EventContext& ctx,
+                       perfetto::protos::pbzero::BeginFrameArgs* args) const;
 
   std::string ToString() const;
 
diff --git a/components/viz/common/frame_sinks/begin_frame_source.cc b/components/viz/common/frame_sinks/begin_frame_source.cc
index f2f2b5e5..fc7b7f11 100644
--- a/components/viz/common/frame_sinks/begin_frame_source.cc
+++ b/components/viz/common/frame_sinks/begin_frame_source.cc
@@ -97,10 +97,12 @@
 }
 
 void BeginFrameObserverBase::AsProtozeroInto(
+    perfetto::EventContext& ctx,
     perfetto::protos::pbzero::BeginFrameObserverState* state) const {
   state->set_dropped_begin_frame_args(dropped_begin_frame_args_);
 
-  last_begin_frame_args_.AsProtozeroInto(state->set_last_begin_frame_args());
+  last_begin_frame_args_.AsProtozeroInto(ctx,
+                                         state->set_last_begin_frame_args());
 }
 
 BeginFrameArgs
@@ -186,6 +188,7 @@
 }
 
 void BeginFrameSource::AsProtozeroInto(
+    perfetto::EventContext&,
     perfetto::protos::pbzero::BeginFrameSourceState* state) const {
   // The lower 32 bits of source_id are the interesting piece of |source_id_|.
   state->set_source_id(static_cast<uint32_t>(source_id_));
@@ -375,12 +378,14 @@
 }
 
 void ExternalBeginFrameSource::AsProtozeroInto(
+    perfetto::EventContext& ctx,
     perfetto::protos::pbzero::BeginFrameSourceState* state) const {
-  BeginFrameSource::AsProtozeroInto(state);
+  BeginFrameSource::AsProtozeroInto(ctx, state);
 
   state->set_paused(paused_);
   state->set_num_observers(observers_.size());
-  last_begin_frame_args_.AsProtozeroInto(state->set_last_begin_frame_args());
+  last_begin_frame_args_.AsProtozeroInto(ctx,
+                                         state->set_last_begin_frame_args());
 }
 
 void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
diff --git a/components/viz/common/frame_sinks/begin_frame_source.h b/components/viz/common/frame_sinks/begin_frame_source.h
index 4b1b40c..d639e05 100644
--- a/components/viz/common/frame_sinks/begin_frame_source.h
+++ b/components/viz/common/frame_sinks/begin_frame_source.h
@@ -18,6 +18,7 @@
 #include "components/viz/common/frame_sinks/delay_based_time_source.h"
 
 namespace perfetto {
+class EventContext;
 namespace protos {
 namespace pbzero {
 class BeginFrameObserverState;
@@ -108,6 +109,7 @@
   virtual bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) = 0;
 
   void AsProtozeroInto(
+      perfetto::EventContext& ctx,
       perfetto::protos::pbzero::BeginFrameObserverState* state) const;
 
   BeginFrameArgs last_begin_frame_args_;
@@ -192,6 +194,7 @@
   virtual void RemoveObserver(BeginFrameObserver* obs) = 0;
 
   virtual void AsProtozeroInto(
+      perfetto::EventContext& ctx,
       perfetto::protos::pbzero::BeginFrameSourceState* state) const;
 
  protected:
@@ -351,6 +354,7 @@
   void RemoveObserver(BeginFrameObserver* obs) override;
   void DidFinishFrame(BeginFrameObserver* obs) override {}
   void AsProtozeroInto(
+      perfetto::EventContext& ctx,
       perfetto::protos::pbzero::BeginFrameSourceState* state) const override;
   void OnGpuNoLongerBusy() override;
 
diff --git a/components/wifi/wifi_service_win.cc b/components/wifi/wifi_service_win.cc
index 12b7fa44..9ad293c 100644
--- a/components/wifi/wifi_service_win.cc
+++ b/components/wifi/wifi_service_win.cc
@@ -891,8 +891,8 @@
       if (created_profile->GetString(kProfileXmlKey, &tkip_profile_xml) &&
           created_profile->GetBoolean(kProfileSharedKey, &shared)) {
         // Remove TKIP profile xml, so it will not be tried again.
-        created_profile->Remove(kProfileXmlKey, nullptr);
-        created_profile->Remove(kProfileSharedKey, nullptr);
+        created_profile->RemoveKey(kProfileXmlKey);
+        created_profile->RemoveKey(kProfileSharedKey);
         DWORD error_code = SetProfile(shared, tkip_profile_xml, true);
         if (error_code == ERROR_SUCCESS) {
           // Try to connect with new profile.
diff --git a/content/browser/accessibility/captioning_controller.cc b/content/browser/accessibility/captioning_controller.cc
index 11390e7..3e17b68 100644
--- a/content/browser/accessibility/captioning_controller.cc
+++ b/content/browser/accessibility/captioning_controller.cc
@@ -63,8 +63,7 @@
   if (old_host) {
     old_pid = GetRenderProcessIdFromRenderViewHost(old_host);
   }
-  int new_pid =
-      GetRenderProcessIdFromRenderViewHost(web_contents()->GetRenderViewHost());
+  int new_pid = GetRenderProcessIdFromRenderViewHost(new_host);
   if (new_pid != old_pid) {
     JNIEnv* env = AttachCurrentThread();
     ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
diff --git a/content/browser/devtools/protocol/service_worker_handler.cc b/content/browser/devtools/protocol/service_worker_handler.cc
index a29dd725..7cee288 100644
--- a/content/browser/devtools/protocol/service_worker_handler.cc
+++ b/content/browser/devtools/protocol/service_worker_handler.cc
@@ -264,7 +264,7 @@
   if (!context_)
     return CreateContextErrorResponse();
   context_->StartActiveServiceWorker(
-      GURL(scope_url), blink::StorageKey::CreateFromStringForTesting(scope_url),
+      GURL(scope_url), blink::StorageKey(url::Origin::Create(GURL(scope_url))),
       base::DoNothing());
   return Response::Success();
 }
@@ -275,8 +275,7 @@
   if (!context_)
     return CreateContextErrorResponse();
   context_->SkipWaitingWorker(
-      GURL(scope_url),
-      blink::StorageKey::CreateFromStringForTesting(scope_url));
+      GURL(scope_url), blink::StorageKey(url::Origin::Create(GURL(scope_url))));
   return Response::Success();
 }
 
@@ -315,8 +314,7 @@
   if (!context_)
     return CreateContextErrorResponse();
   context_->UpdateRegistration(
-      GURL(scope_url),
-      blink::StorageKey::CreateFromStringForTesting(scope_url));
+      GURL(scope_url), blink::StorageKey(url::Origin::Create(GURL(scope_url))));
   return Response::Success();
 }
 
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
index 9e01ff17..78afd60 100644
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -287,15 +287,22 @@
           handled_externally ? net::ERR_ABORTED : net::ERR_UNKNOWN_URL_SCHEME));
 }
 
-uint32_t GetURLLoaderOptions(bool is_main_frame) {
+uint32_t GetURLLoaderOptions(bool is_main_frame, bool is_in_fenced_frame_tree) {
   uint32_t options = network::mojom::kURLLoadOptionNone;
 
   // Ensure that Mime sniffing works.
   options |= network::mojom::kURLLoadOptionSniffMimeType;
 
-  if (is_main_frame) {
-    // SSLInfo is not needed on subframe responses because users can inspect
-    // only the certificate for the main frame when using the info bubble.
+  if (is_in_fenced_frame_tree) {
+    // Fenced frames cannot have any credentialed requests.
+    // TODO(crbug.com/1229638): Once cookies partitioning is in place, consider
+    // using a unique partition for those cookies instead of blocking. For
+    // unpartitioned cookies though, we will continue to block them.
+    options |= network::mojom::kURLLoadOptionBlockAllCookies;
+  } else if (is_main_frame) {
+    // SSLInfo is not needed on subframe or fenced frame responses because users
+    // can inspect only the certificate for the main frame when using the info
+    // bubble.
     options |= network::mojom::kURLLoadOptionSendSSLInfoWithResponse;
   }
 
@@ -684,7 +691,9 @@
   url_chain_.push_back(resource_request_->url);
   *out_options = GetURLLoaderOptions(
       resource_request_->resource_type ==
-      static_cast<int>(blink::mojom::ResourceType::kMainFrame));
+          static_cast<int>(blink::mojom::ResourceType::kMainFrame),
+      FrameTreeNode::GloballyFindByID(frame_tree_node_id_)
+          ->IsInFencedFrameTree());
   return factory;
 }
 
@@ -1062,8 +1071,11 @@
   // unretained |this|, because the passed callback will be used by a
   // SignedExchangeHandler which is indirectly owned by |this| until its
   // header is verified and parsed, that's where the getter is used.
+  FrameTreeNode* frame_tree_node =
+      FrameTreeNode::GloballyFindByID(frame_tree_node_id_);
   return std::make_unique<SignedExchangeRequestHandler>(
-      GetURLLoaderOptions(request_info.is_main_frame),
+      GetURLLoaderOptions(request_info.is_main_frame,
+                          frame_tree_node->IsInFencedFrameTree()),
       request_info.frame_tree_node_id, request_info.devtools_navigation_token,
       std::move(url_loader_factory),
       base::BindRepeating(&NavigationURLLoaderImpl::CreateURLLoaderThrottles,
diff --git a/content/browser/native_io/native_io_file_host.h b/content/browser/native_io/native_io_file_host.h
index 65ee4760..6d998f8 100644
--- a/content/browser/native_io/native_io_file_host.h
+++ b/content/browser/native_io/native_io_file_host.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/sequence_checker.h"
+#include "base/thread_annotations.h"
 #include "build/build_config.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "third_party/blink/public/mojom/native_io/native_io.mojom.h"
@@ -57,6 +58,8 @@
   // Called when the receiver is disconnected.
   void OnReceiverDisconnect();
 
+  SEQUENCE_CHECKER(sequence_checker_);
+
   // Raw pointer use is safe because NativeIOHost owns this NativeIOFileHost,
   // and therefore is guaranteed to outlive it.
   NativeIOHost* const origin_host_;
@@ -70,9 +73,8 @@
 
   // As long as the receiver is connected, the renderer has an exclusive lock on
   // the file represented by this host.
-  mojo::Receiver<blink::mojom::NativeIOFileHost> receiver_;
-
-  SEQUENCE_CHECKER(sequence_checker_);
+  mojo::Receiver<blink::mojom::NativeIOFileHost> receiver_
+      GUARDED_BY_CONTEXT(sequence_checker_);
 };
 
 }  // namespace content
diff --git a/content/browser/native_io/native_io_host.cc b/content/browser/native_io/native_io_host.cc
index 4350a20..58cdc86 100644
--- a/content/browser/native_io/native_io_host.cc
+++ b/content/browser/native_io/native_io_host.cc
@@ -15,6 +15,7 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/memory/scoped_refptr.h"
+#include "base/sequence_checker.h"
 #include "base/sequenced_task_runner.h"
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
@@ -193,14 +194,6 @@
   return {enumeration_error, std::move(result)};
 }
 
-// Reports the result of the file I/O work in GetAllFileNames().
-void DidGetAllFileNames(
-    blink::mojom::NativeIOHost::GetAllFileNamesCallback callback,
-    GetAllFileNamesResult result) {
-  std::move(callback).Run(result.first == base::File::FILE_OK,
-                          std::move(result.second));
-}
-
 // Performs the file I/O work in RenameFile().
 NativeIOErrorPtr DoRenameFile(const base::FilePath& root_path,
                               const std::string& old_name,
@@ -261,8 +254,8 @@
       file_task_runner_(CreateFileTaskRunner()) {
   DCHECK(manager != nullptr);
 
-  // base::Unretained is safe here because this NativeIOHost owns |receivers_|.
-  // So, the unretained NativeIOHost is guaranteed to outlive |receivers_| and
+  // base::Unretained is safe here because this NativeIOHost owns `receivers_`.
+  // So, the unretained NativeIOHost is guaranteed to outlive `receivers_` and
   // the closure that it uses.
   receivers_.set_disconnect_handler(base::BindRepeating(
       &NativeIOHost::OnReceiverDisconnect, base::Unretained(this)));
@@ -284,6 +277,7 @@
     mojo::PendingReceiver<blink::mojom::NativeIOFileHost> file_host_receiver,
     OpenFileCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
 
   if (is_incognito_mode()) {
     std::move(callback).Run(
@@ -336,6 +330,7 @@
 void NativeIOHost::DeleteFile(const std::string& name,
                               DeleteFileCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
 
   if (is_incognito_mode()) {
     std::move(callback).Run(
@@ -392,6 +387,7 @@
 
 void NativeIOHost::GetAllFileNames(GetAllFileNamesCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
 
   if (is_incognito_mode()) {
     std::move(callback).Run(false, {});
@@ -408,13 +404,20 @@
 
   file_task_runner_->PostTaskAndReplyWithResult(
       FROM_HERE, base::BindOnce(&DoGetAllFileNames, root_path_),
-      base::BindOnce(&DidGetAllFileNames, std::move(callback)));
+      base::BindOnce(
+          [](blink::mojom::NativeIOHost::GetAllFileNamesCallback callback,
+             GetAllFileNamesResult result) {
+            std::move(callback).Run(result.first == base::File::FILE_OK,
+                                    std::move(result.second));
+          },
+          std::move(callback)));
 }
 
 void NativeIOHost::RenameFile(const std::string& old_name,
                               const std::string& new_name,
                               RenameFileCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
 
   if (is_incognito_mode()) {
     std::move(callback).Run(
@@ -475,6 +478,9 @@
 void NativeIOHost::RequestCapacityChange(
     int64_t capacity_delta,
     RequestCapacityChangeCallback callback) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
+
   if (is_incognito_mode()) {
     std::move(callback).Run(0);
     return;
@@ -490,6 +496,7 @@
 }
 
 void NativeIOHost::OnFileClose(NativeIOFileHost* file_host) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(open_file_hosts_.count(file_host->file_name()) > 0);
   DCHECK_EQ(open_file_hosts_[file_host->file_name()].get(), file_host);
 
@@ -497,6 +504,9 @@
 }
 
 void NativeIOHost::DeleteAllData(DeleteAllDataCallback callback) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
+
   delete_all_data_callbacks_.push_back(std::move(callback));
   if (delete_all_data_callbacks_.size() > 1) {
     return;
@@ -523,8 +533,10 @@
     mojo::PendingReceiver<blink::mojom::NativeIOFileHost> file_host_receiver,
     OpenFileCallback callback,
     std::pair<base::File, int64_t> result) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(io_pending_files_.count(name));
   DCHECK(!open_file_hosts_.count(name));
+
   base::File file = std::move(result.first);
   int64_t length = result.second;
   io_pending_files_.erase(name);
@@ -566,8 +578,10 @@
     const std::string& name,
     DeleteFileCallback callback,
     std::pair<blink::mojom::NativeIOErrorPtr, int64_t> delete_result) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(io_pending_files_.count(name));
   DCHECK(!open_file_hosts_.count(name));
+
   io_pending_files_.erase(name);
 
   manager_->quota_manager_proxy()->NotifyStorageModified(
@@ -582,10 +596,12 @@
                                  const std::string& new_name,
                                  RenameFileCallback callback,
                                  NativeIOErrorPtr rename_error) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(io_pending_files_.count(old_name));
   DCHECK(!open_file_hosts_.count(old_name));
   DCHECK(io_pending_files_.count(new_name));
   DCHECK(!open_file_hosts_.count(new_name));
+
   io_pending_files_.erase(old_name);
   io_pending_files_.erase(new_name);
 
@@ -598,8 +614,10 @@
 }
 
 void NativeIOHost::DidDeleteAllData(base::File::Error error) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
   // Moving callbacks to a local variable to avoid race conditions if the vector
-  // is accessed concurrently.
+  // is accessed during callback execution.
   std::vector<DeleteAllDataCallback> callbacks =
       std::move(delete_all_data_callbacks_);
   delete_all_data_callbacks_.clear();
diff --git a/content/browser/native_io/native_io_host.h b/content/browser/native_io/native_io_host.h
index 8ac285a..d6f4974 100644
--- a/content/browser/native_io/native_io_host.h
+++ b/content/browser/native_io/native_io_host.h
@@ -6,12 +6,16 @@
 
 #include <map>
 #include <memory>
+#include <set>
 #include <string>
+#include <vector>
 
 #include "base/files/file_path.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequence_checker.h"
+#include "base/thread_annotations.h"
+#include "base/threading/thread_checker.h"
 #include "build/build_config.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
@@ -64,13 +68,17 @@
   //
   // The NativeIOManager that owns this host is expected to destroy the host
   // when it isn't serving any receivers.
-  bool has_empty_receiver_set() const { return receivers_.empty(); }
+  bool has_empty_receiver_set() const {
+    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+    return receivers_.empty();
+  }
 
   // The storage key served by this host.
   const blink::StorageKey& storage_key() const { return storage_key_; }
 
   // True if this host's data is currently being deleted.
   bool delete_all_data_in_progress() const {
+    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
     return !delete_all_data_callbacks_.empty();
   }
 
@@ -92,6 +100,8 @@
 
   // Removes all data stored for the host's storage key from disk. All mojo
   // connections for open files are closed.
+  //
+  // `callback` will only be called while this NativeIOHost instance is alive.
   void DeleteAllData(DeleteAllDataCallback callback);
 
   // Called when one of the open files for this storage key closes.
@@ -130,11 +140,6 @@
   // The storage key served by this host.
   const blink::StorageKey storage_key_;
 
-  // Deletion requests issued during an ongoing deletion are coalesced with that
-  // deletion request. All coalesced callbacks are stored and invoked
-  // together.
-  std::vector<DeleteAllDataCallback> delete_all_data_callbacks_;
-
   // The directory holding all the files for this storage key.
   const base::FilePath root_path_;
 
@@ -144,26 +149,35 @@
 
   // Raw pointer use is safe because NativeIOManager owns this NativeIOHost, and
   // therefore is guaranteed to outlive it.
-  NativeIOManager* const manager_;
+  NativeIOManager* const manager_ GUARDED_BY_CONTEXT(sequence_checker_);
 
   // Schedules all operations involving file I/O done by this NativeIOHost.
   const scoped_refptr<base::TaskRunner> file_task_runner_;
 
+  // Deletion requests issued during an ongoing deletion are coalesced with that
+  // deletion request. All coalesced callbacks are stored and invoked
+  // together.
+  std::vector<DeleteAllDataCallback> delete_all_data_callbacks_
+      GUARDED_BY_CONTEXT(sequence_checker_);
+
   // All receivers for frames and workers whose storage key is `storage_key_`
   // associated with the StoragePartition that owns `manager_`.
-  mojo::ReceiverSet<blink::mojom::NativeIOHost> receivers_;
+  mojo::ReceiverSet<blink::mojom::NativeIOHost> receivers_
+      GUARDED_BY_CONTEXT(sequence_checker_);
 
   // The names of files that have pending I/O tasks.
   //
   // This set's contents must not overlap with the keys in |open_file_hosts_|.
-  std::set<std::string> io_pending_files_;
+  std::set<std::string> io_pending_files_ GUARDED_BY_CONTEXT(sequence_checker_);
 
   // Maps open file names to their corresponding receivers.
   //
   // This map's keys must not overlap with the contents of |io_pending_files_|.
-  std::map<std::string, std::unique_ptr<NativeIOFileHost>> open_file_hosts_;
+  std::map<std::string, std::unique_ptr<NativeIOFileHost>> open_file_hosts_
+      GUARDED_BY_CONTEXT(sequence_checker_);
 
-  base::WeakPtrFactory<NativeIOHost> weak_factory_{this};
+  base::WeakPtrFactory<NativeIOHost> weak_factory_
+      GUARDED_BY_CONTEXT(sequence_checker_){this};
 };
 
 }  // namespace content
diff --git a/content/browser/native_io/native_io_manager.cc b/content/browser/native_io/native_io_manager.cc
index f8f0673..a0dafd6b 100644
--- a/content/browser/native_io/native_io_manager.cc
+++ b/content/browser/native_io/native_io_manager.cc
@@ -10,8 +10,10 @@
 #include "base/files/file_enumerator.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
+#include "base/sequence_checker.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
+#include "base/threading/thread_checker.h"
 #include "build/build_config.h"
 #include "components/services/storage/public/mojom/quota_client.mojom.h"
 #include "content/browser/native_io/native_io_host.h"
@@ -186,6 +188,7 @@
     base::File::Error result,
     NativeIOHost* host) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
   MaybeDeleteHost(host);
   blink::mojom::QuotaStatusCode quota_result =
       result == base::File::FILE_OK ? blink::mojom::QuotaStatusCode::kOk
@@ -196,6 +199,9 @@
 void NativeIOManager::DeleteStorageKeyData(
     const blink::StorageKey& storage_key,
     storage::mojom::QuotaClient::DeleteStorageKeyDataCallback callback) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
+
   auto it = hosts_.find(storage_key);
   if (it == hosts_.end()) {
     // TODO(rstz): Consider turning these checks into DCHECKS when NativeIO is
@@ -228,9 +234,11 @@
     DCHECK(insert_succeeded);
   }
 
-  // base::Unretained is safe here because this NativeIOManager owns the
-  // NativeIOHost. So, the unretained NativeIOManager is guaranteed to outlive
-  // the  NativeIOHost and the closure that it uses.
+  // base::Unretained is safe here NativeIOHost::DeleteAllData() guarantees that
+  // the callback will only be called while the NativeIOHost is alive, and this
+  // NativeIOManager owns the NativeIOHost. So, the unretained NativeIOManager
+  // will only be referenced if the NativeIOHost is still alive, which implies
+  // that this NativeIOManager is still alive.
   it->second->DeleteAllData(
       base::BindOnce(&NativeIOManager::OnDeleteStorageKeyDataCompleted,
                      base::Unretained(this), std::move(callback)));
@@ -239,10 +247,10 @@
 void NativeIOManager::GetStorageKeysForType(
     blink::mojom::StorageType type,
     storage::mojom::QuotaClient::GetStorageKeysForTypeCallback callback) {
-  if (type != blink::mojom::StorageType::kTemporary) {
-    std::move(callback).Run({});
-    return;
-  }
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK_EQ(type, blink::mojom::StorageType::kTemporary);
+  DCHECK(callback);
+
   base::ThreadPool::PostTaskAndReplyWithResult(
       FROM_HERE,
       {
@@ -257,18 +265,16 @@
           // move to CONTINUE_ON_SHUTDOWN after very careful analysis.
           base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
       },
-      base::BindOnce(&DoGetStorageKeys, root_path_),
-      base::BindOnce(&NativeIOManager::DidGetStorageKeysForType,
-                     weak_factory_.GetWeakPtr(), std::move(callback)));
+      base::BindOnce(&DoGetStorageKeys, root_path_), std::move(callback));
 }
+
 void NativeIOManager::GetStorageKeysForHost(
     blink::mojom::StorageType type,
     const std::string& host,
     storage::mojom::QuotaClient::GetStorageKeysForHostCallback callback) {
-  if (type != blink::mojom::StorageType::kTemporary) {
-    std::move(callback).Run({});
-    return;
-  }
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK_EQ(type, blink::mojom::StorageType::kTemporary);
+  DCHECK(callback);
 
   base::ThreadPool::PostTaskAndReplyWithResult(
       FROM_HERE,
@@ -285,19 +291,28 @@
           base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
       },
       base::BindOnce(&DoGetStorageKeys, root_path_),
-      base::BindOnce(&NativeIOManager::DidGetStorageKeysForHost,
-                     weak_factory_.GetWeakPtr(), std::move(callback),
-                     std::move(host)));
+      base::BindOnce(
+          [](const std::string& host,
+             storage::mojom::QuotaClient::GetStorageKeysForTypeCallback
+                 callback,
+             std::vector<blink::StorageKey> storage_keys) {
+            std::vector<blink::StorageKey> host_storage_keys;
+            for (blink::StorageKey& storage_key : storage_keys) {
+              if (host == storage_key.origin().host())
+                host_storage_keys.push_back(std::move(storage_key));
+            }
+            std::move(callback).Run(std::move(host_storage_keys));
+          },
+          host, std::move(callback)));
 }
 
 void NativeIOManager::GetStorageKeyUsage(
     const blink::StorageKey& storage_key,
     blink::mojom::StorageType type,
     storage::mojom::QuotaClient::GetStorageKeyUsageCallback callback) {
-  if (type != blink::mojom::StorageType::kTemporary) {
-    std::move(callback).Run(0);
-    return;
-  }
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK_EQ(type, blink::mojom::StorageType::kTemporary);
+  DCHECK(callback);
 
   base::FilePath storage_key_root = RootPathForStorageKey(storage_key);
 
@@ -316,13 +331,15 @@
           base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
       },
       base::BindOnce(&DoGetStorageKeyUsage, storage_key_root),
-      base::BindOnce(&NativeIOManager::DidGetStorageKeyUsage,
-                     weak_factory_.GetWeakPtr(), std::move(callback)));
+      std::move(callback));
 }
 
 void NativeIOManager::GetStorageKeyUsageMap(
     base::OnceCallback<void(const std::map<blink::StorageKey, int64_t>&)>
         callback) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(callback);
+
   base::ThreadPool::PostTaskAndReplyWithResult(
       FROM_HERE,
       {
@@ -337,39 +354,7 @@
           base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
       },
       base::BindOnce(&DoGetStorageKeyUsageMap, root_path_),
-      base::BindOnce(&NativeIOManager::DidGetStorageKeyUsageMap,
-                     weak_factory_.GetWeakPtr(), std::move(callback)));
-}
-
-void NativeIOManager::DidGetStorageKeysForType(
-    storage::mojom::QuotaClient::GetStorageKeysForTypeCallback callback,
-    std::vector<blink::StorageKey> storage_keys) {
-  std::move(callback).Run(storage_keys);
-}
-
-void NativeIOManager::DidGetStorageKeysForHost(
-    storage::mojom::QuotaClient::GetStorageKeysForTypeCallback callback,
-    const std::string& host,
-    std::vector<blink::StorageKey> storage_keys) {
-  std::vector<blink::StorageKey> out_storage_keys;
-  for (const blink::StorageKey& storage_key : storage_keys) {
-    if (host == storage_key.origin().host())
-      out_storage_keys.push_back(storage_key);
-  }
-  std::move(callback).Run(std::move(out_storage_keys));
-}
-
-void NativeIOManager::DidGetStorageKeyUsage(
-    storage::mojom::QuotaClient::GetStorageKeyUsageCallback callback,
-    int64_t usage) {
-  std::move(callback).Run(usage);
-}
-
-void NativeIOManager::DidGetStorageKeyUsageMap(
-    base::OnceCallback<void(const std::map<blink::StorageKey, int64_t>&)>
-        callback,
-    const std::map<blink::StorageKey, int64_t>& usage_map) {
-  std::move(callback).Run(usage_map);
+      std::move(callback));
 }
 
 base::FilePath NativeIOManager::RootPathForStorageKey(
diff --git a/content/browser/native_io/native_io_manager.h b/content/browser/native_io/native_io_manager.h
index 742745e..8a6cc6c1 100644
--- a/content/browser/native_io/native_io_manager.h
+++ b/content/browser/native_io/native_io_manager.h
@@ -7,11 +7,14 @@
 
 #include <map>
 #include <memory>
+#include <string>
 
 #include "base/files/file.h"
 #include "base/files/file_path.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequence_checker.h"
+#include "base/thread_annotations.h"
 #include "build/build_config.h"
 #include "components/services/storage/public/mojom/quota_client.mojom-forward.h"
 #include "content/browser/native_io/native_io_quota_client.h"
@@ -133,34 +136,12 @@
   }
 
  private:
-  SEQUENCE_CHECKER(sequence_checker_);
-
   // Deletes the NativeIOHost if it serves no further purpose.
   //
   // `host` must be owned by this manager.
   void MaybeDeleteHost(NativeIOHost* host);
 
-  // Called after the I/O part of GetStorageKeysForType() completed.
-  void DidGetStorageKeysForType(
-      storage::mojom::QuotaClient::GetStorageKeysForTypeCallback callback,
-      std::vector<blink::StorageKey> storage_keys);
-
-  // Called after the I/O part of GetStorageKeysForHost() completed.
-  void DidGetStorageKeysForHost(
-      storage::mojom::QuotaClient::GetStorageKeysForTypeCallback callback,
-      const std::string& host,
-      std::vector<blink::StorageKey> storage_keys);
-
-  // Called after the I/O part of GetStorageKeyUsage() completed.
-  void DidGetStorageKeyUsage(
-      storage::mojom::QuotaClient::GetStorageKeyUsageCallback callback,
-      int64_t usage);
-
-  // Called after the I/O part of GetStorageKeyUsageMap() completed.
-  void DidGetStorageKeyUsageMap(
-      base::OnceCallback<void(const std::map<blink::StorageKey, int64_t>&)>
-          callback,
-      const std::map<blink::StorageKey, int64_t>& usage_map);
+  SEQUENCE_CHECKER(sequence_checker_);
 
   // Points to the root directory for NativeIO files.
   //
@@ -176,18 +157,18 @@
 
   const scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy_;
 
-  std::map<blink::StorageKey, std::unique_ptr<NativeIOHost>> hosts_;
+  std::map<blink::StorageKey, std::unique_ptr<NativeIOHost>> hosts_
+      GUARDED_BY_CONTEXT(sequence_checker_);
 
-  NativeIOQuotaClient quota_client_;
+  NativeIOQuotaClient quota_client_ GUARDED_BY_CONTEXT(sequence_checker_);
 
   // Once the QuotaClient receiver is destroyed, the underlying mojo connection
   // is closed. Callbacks associated with mojo calls received over this
   // connection may only be dropped after the connection is closed. For this
   // reason, it's preferable to have the receiver be destroyed as early as
   // possible during the NativeIOManager destruction process.
-  mojo::Receiver<storage::mojom::QuotaClient> quota_client_receiver_;
-
-  base::WeakPtrFactory<NativeIOManager> weak_factory_{this};
+  mojo::Receiver<storage::mojom::QuotaClient> quota_client_receiver_
+      GUARDED_BY_CONTEXT(sequence_checker_);
 };
 
 }  // namespace content
diff --git a/content/browser/native_io/native_io_manager_unittest.cc b/content/browser/native_io/native_io_manager_unittest.cc
index d6622949..d39407a 100644
--- a/content/browser/native_io/native_io_manager_unittest.cc
+++ b/content/browser/native_io/native_io_manager_unittest.cc
@@ -819,29 +819,6 @@
   example_file_host.Close();
 }
 
-TEST_P(NativeIOManagerTest,
-       GetStorageKeysByType_EmptyForUnimplementedStorageTypes) {
-  mojo::Remote<blink::mojom::NativeIOFileHost> example_host_remote;
-  base::File example_file =
-      example_host_
-          ->OpenFile("test_file",
-                     example_host_remote.BindNewPipeAndPassReceiver())
-          .file;
-  example_file.Close();
-  NativeIOFileHostSync example_file_host(example_host_remote.get());
-  example_file_host.Close();
-
-  std::vector<StorageKey> storage_keys = sync_manager_->GetStorageKeysForType(
-      blink::mojom::StorageType::kPersistent);
-  EXPECT_EQ(0u, storage_keys.size());
-  storage_keys = sync_manager_->GetStorageKeysForType(
-      blink::mojom::StorageType::kSyncable);
-  EXPECT_EQ(0u, storage_keys.size());
-  storage_keys = sync_manager_->GetStorageKeysForType(
-      blink::mojom::StorageType::kQuotaNotManaged);
-  EXPECT_EQ(0u, storage_keys.size());
-}
-
 TEST_P(NativeIOManagerTest, GetStorageKeysByHost_ReturnsActiveStorageKeys) {
   mojo::Remote<blink::mojom::NativeIOFileHost> example_file_host_remote;
   base::File example_file =
diff --git a/content/browser/native_io/native_io_quota_client.h b/content/browser/native_io/native_io_quota_client.h
index 02fb001b..3afa4e9 100644
--- a/content/browser/native_io/native_io_quota_client.h
+++ b/content/browser/native_io/native_io_quota_client.h
@@ -6,6 +6,7 @@
 #define CONTENT_BROWSER_NATIVE_IO_NATIVE_IO_QUOTA_CLIENT_H_
 
 #include "base/sequence_checker.h"
+#include "base/thread_annotations.h"
 #include "components/services/storage/public/cpp/storage_key_quota_client.h"
 #include "content/common/content_export.h"
 #include "storage/browser/quota/quota_client_type.h"
@@ -47,9 +48,9 @@
                              PerformStorageCleanupCallback callback) override;
 
  private:
-  NativeIOManager* manager_;
-
   SEQUENCE_CHECKER(sequence_checker_);
+
+  NativeIOManager* const manager_ GUARDED_BY_CONTEXT(sequence_checker_);
 };
 
 }  // namespace content
diff --git a/content/browser/renderer_host/frame_tree_browsertest.cc b/content/browser/renderer_host/frame_tree_browsertest.cc
index 8bcc8ed..e3bee0b 100644
--- a/content/browser/renderer_host/frame_tree_browsertest.cc
+++ b/content/browser/renderer_host/frame_tree_browsertest.cc
@@ -5,6 +5,7 @@
 #include "base/command_line.h"
 #include "base/macros.h"
 #include "base/strings/stringprintf.h"
+#include "base/synchronization/lock.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "content/browser/fenced_frame/fenced_frame_url_mapping.h"
@@ -13,6 +14,7 @@
 #include "content/browser/renderer_host/render_frame_host_impl.h"
 #include "content/browser/renderer_host/render_view_host_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
+#include "content/public/browser/browser_thread.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/notification_types.h"
 #include "content/public/browser/site_isolation_policy.h"
@@ -30,8 +32,10 @@
 #include "content/shell/browser/shell.h"
 #include "content/shell/common/shell_switches.h"
 #include "content/test/content_browser_test_utils_internal.h"
+#include "content/test/resource_load_observer.h"
 #include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/http_request.h"
 #include "services/network/public/cpp/web_sandbox_flags.h"
 #include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h"
 #include "third_party/blink/public/common/chrome_debug_urls.h"
@@ -815,19 +819,72 @@
     // as well, once the supporting code lands.
   }
 
+  void SetUpOnMainThread() override {
+    // Set up the host resolver to allow serving separate sites, so we can
+    // perform cross-process navigation.
+    host_resolver()->AddRule("*", "127.0.0.1");
+
+    // Fenced frames require potentially trustworthy URLs so creating an https
+    // server.
+    https_server_.RegisterRequestMonitor(
+        base::BindRepeating(&FencedFrameTreeBrowserTest::ObserveRequestHeaders,
+                            base::Unretained(this)));
+    https_server_.ServeFilesFromSourceDirectory(GetTestDataFilePath());
+    https_server_.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
+    ASSERT_TRUE(https_server_.Start());
+  }
+
+  // Invoked on "EmbeddedTestServer IO Thread".
+  void ObserveRequestHeaders(const net::test_server::HttpRequest& request) {
+    base::AutoLock auto_lock(requests_lock_);
+    std::string val = request.headers.find("Cookie") != request.headers.end()
+                          ? request.headers.at("Cookie").c_str()
+                          : "";
+    cookie_headers_map_.insert(std::make_pair(request.GetURL().path(), val));
+  }
+
+  // Returns true if the cookie header was present in the last request received
+  // by the server with the same `url.path()`. Also asserts that the cookie
+  // header value matches that given in `expected_value`, if it exists. Also
+  // clears the value that was just checked by the method invocation.
+  bool CheckAndClearCookieHeader(
+      const GURL& url,
+      const std::string expected_value = "",
+      base::Location from_here = base::Location::Current()) {
+    base::AutoLock auto_lock(requests_lock_);
+    SCOPED_TRACE(from_here.ToString());
+    DCHECK_CURRENTLY_ON(BrowserThread::UI);
+    std::string file_name = url.path();
+    CHECK(cookie_headers_map_.find(file_name) != cookie_headers_map_.end());
+    std::string header = cookie_headers_map_[file_name];
+    EXPECT_EQ(expected_value, header);
+    cookie_headers_map_.erase(file_name);
+    return !header.empty();
+  }
+
   net::EmbeddedTestServer* https_server() { return &https_server_; }
 
+  ~FencedFrameTreeBrowserTest() override {
+    // Shutdown the server explicitly so that there is no race with the
+    // destruction of cookie_headers_map_ and invocation of RequestMonitor.
+    EXPECT_TRUE(https_server_.ShutdownAndWaitUntilComplete());
+  }
+
  private:
   base::test::ScopedFeatureList scoped_feature_list_;
+  base::Lock requests_lock_;
+  std::map<std::string, std::string> cookie_headers_map_
+      GUARDED_BY(requests_lock_);
   net::EmbeddedTestServer https_server_;
 };
 
 // Tests that the fenced frame gets navigated to an actual url given a urn:uuid.
 IN_PROC_BROWSER_TEST_F(FencedFrameTreeBrowserTest,
                        CheckFencedFrameNavigationWithUUID) {
-  GURL main_url(embedded_test_server()->GetURL("/hello.html"));
+  // Create an a.test main page and set a cookie. Then create a same-origin
+  // fenced frame. It's request should not carry the cookie that was set.
+  GURL main_url = https_server()->GetURL("b.test", "/hello.html");
   EXPECT_TRUE(NavigateToURL(shell(), main_url));
-
   // It is safe to obtain the root frame tree node here, as it doesn't change.
   FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents())
                             ->GetFrameTree()
@@ -843,10 +900,6 @@
   EXPECT_TRUE(root->child_at(0)->IsFencedFrame());
   EXPECT_TRUE(root->child_at(0)->IsInFencedFrameTree());
 
-  https_server()->ServeFilesFromSourceDirectory(GetTestDataFilePath());
-  https_server()->SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
-  ASSERT_TRUE(https_server()->Start());
-
   GURL https_url(https_server()->GetURL("a.test", "/title1.html"));
   FencedFrameURLMapping& url_mapping =
       root->current_frame_host()->GetPage().fenced_frame_urls_map();
@@ -875,10 +928,100 @@
   EXPECT_EQ(0, EvalJs(root, "window.frames.length"));
 }
 
+IN_PROC_BROWSER_TEST_F(FencedFrameTreeBrowserTest, CheckFencedFrameNoCookies) {
+  // Create an a.test main page and set cookies. Then create a same-origin
+  // fenced frame. Its request should not carry the cookies that were set.
+  GURL main_url = https_server()->GetURL("a.test", "/hello.html");
+  EXPECT_TRUE(NavigateToURL(shell(), main_url));
+
+  // It is safe to obtain the root frame tree node here, as it doesn't change.
+  RenderFrameHostImpl* root_rfh =
+      static_cast<WebContentsImpl*>(shell()->web_contents())
+          ->GetFrameTree()
+          ->root()
+          ->current_frame_host();
+
+  // Set SameSite=Lax and SameSite=None cookies and retrieve them.
+  EXPECT_TRUE(ExecJs(root_rfh,
+                     "document.cookie = 'B=2; SameSite=Lax';"
+                     "document.cookie = 'C=2; SameSite=None; Secure';"));
+  EXPECT_EQ("B=2; C=2", EvalJs(root_rfh, "document.cookie;"));
+
+  // Test the fenced frame.
+  EXPECT_TRUE(ExecJs(root_rfh,
+                     "var f = document.createElement('fencedframe');"
+                     "document.body.appendChild(f);"));
+  EXPECT_EQ(1U, root_rfh->child_count());
+
+  FrameTreeNode* fenced_frame = root_rfh->child_at(0);
+
+  EXPECT_TRUE(fenced_frame->IsFencedFrame());
+  EXPECT_TRUE(fenced_frame->IsInFencedFrameTree());
+
+  GURL https_url(https_server()->GetURL("a.test", "/title1.html"));
+  FencedFrameURLMapping& url_mapping =
+      root_rfh->GetPage().fenced_frame_urls_map();
+  GURL urn_uuid = url_mapping.AddFencedFrameURL(https_url);
+  EXPECT_TRUE(urn_uuid.is_valid());
+
+  std::string navigate_urn_script = JsReplace("f.src = $1;", urn_uuid.spec());
+
+  {
+    // Navigate the fenced frame.
+    TestFrameNavigationObserver observer(root_rfh->child_at(0));
+    EXPECT_EQ(urn_uuid.spec(), EvalJs(root_rfh, navigate_urn_script));
+    observer.Wait();
+  }
+
+  EXPECT_EQ(https_url,
+            fenced_frame->current_frame_host()->GetLastCommittedURL());
+  EXPECT_EQ(url::Origin::Create(https_url),
+            fenced_frame->current_frame_host()->GetLastCommittedOrigin());
+
+  EXPECT_FALSE(CheckAndClearCookieHeader(https_url));
+
+  // Run the same test for an iframe inside the fenced frame. It shouldn't be
+  // able to send cookies either.
+  // Add a nested iframe inside the fenced frame.
+  EXPECT_TRUE(ExecJs(fenced_frame,
+                     "var f1 = document.createElement('iframe');"
+                     "document.body.appendChild(f1);"));
+  EXPECT_EQ(1U, fenced_frame->child_count());
+  EXPECT_FALSE(fenced_frame->child_at(0)->IsFencedFrame());
+  EXPECT_TRUE(fenced_frame->child_at(0)->IsInFencedFrameTree());
+  std::string navigate_script = JsReplace("f1.src = $1;", main_url.spec());
+
+  {
+    TestFrameNavigationObserver observer(fenced_frame->child_at(0));
+    EXPECT_EQ(main_url.spec(), EvalJs(fenced_frame, navigate_script));
+    observer.Wait();
+  }
+  EXPECT_EQ(
+      main_url,
+      fenced_frame->child_at(0)->current_frame_host()->GetLastCommittedURL());
+  EXPECT_EQ(url::Origin::Create(main_url), fenced_frame->child_at(0)
+                                               ->current_frame_host()
+                                               ->GetLastCommittedOrigin());
+  EXPECT_FALSE(CheckAndClearCookieHeader(main_url));
+
+  // Check that a subresource request from the main document should have the
+  // cookies since that is outside the fenced frame tree.
+  ResourceLoadObserver observer(shell());
+  GURL image_url = https_server()->GetURL("a.test", "/image.jpg");
+  EXPECT_TRUE(
+      ExecJs(root_rfh, JsReplace("var img = document.createElement('img');"
+                                 "document.body.appendChild(img);",
+                                 image_url)));
+  std::string load_script = JsReplace("img.src = $1;", image_url.spec());
+  EXPECT_EQ(image_url.spec(), EvalJs(root_rfh, load_script));
+  observer.WaitForResourceCompletion(image_url);
+  EXPECT_TRUE(CheckAndClearCookieHeader(image_url, "B=2; C=2"));
+}
+
 // Tests when a frame is considered a fenced frame or being inside a fenced
 // frame tree.
 IN_PROC_BROWSER_TEST_F(FencedFrameTreeBrowserTest, CheckIsFencedFrame) {
-  GURL main_url(embedded_test_server()->GetURL("/hello.html"));
+  GURL main_url(https_server()->GetURL("a.test", "/hello.html"));
   EXPECT_TRUE(NavigateToURL(shell(), main_url));
 
   // It is safe to obtain the root frame tree node here, as it doesn't change.
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index a56581a..cdbfdb7b 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -13,7 +13,6 @@
 #include "base/auto_reset.h"
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/debug/dump_without_crashing.h"
 #include "base/feature_list.h"
 #include "base/logging.h"
 #include "base/mac/mac_util.h"
@@ -1875,15 +1874,7 @@
         GetFocusedWidget(), requested_range);
     // TODO(thakis): Pipe |actualRange| through TextInputClientMac machinery.
     *actual_range = requested_range;
-
-    // It seems that only the Pepper-PDF would reach here while
-    // an ordinary webpage always retrieves the rect from the cache.
-    // After fixing crbug.com/601322, we should have fixed the PDF code and so
-    // this block can be removed. To be prudent, track if there is any usage
-    // in the wild before we do that.
-    base::debug::DumpWithoutCrashing();
   }
-
   return true;
 }
 
diff --git a/content/browser/webrtc/webrtc_browsertest.cc b/content/browser/webrtc/webrtc_browsertest.cc
index f1dc3be..9b1e12f 100644
--- a/content/browser/webrtc/webrtc_browsertest.cc
+++ b/content/browser/webrtc/webrtc_browsertest.cc
@@ -115,9 +115,16 @@
   MakeTypicalPeerConnectionCall(javascript);
 }
 
-
+#if defined(OS_MAC)
+// TODO(https://crbug.com/1235254): This test is flakey on macOS.
+#define MAYBE_CanSetupVideoCallWith4To3AspectRatio \
+  DISABLED_CanSetupVideoCallWith4To3AspectRatio
+#else
+#define MAYBE_CanSetupVideoCallWith4To3AspectRatio \
+  CanSetupVideoCallWith4To3AspectRatio
+#endif
 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
-                       CanSetupVideoCallWith4To3AspectRatio) {
+                       MAYBE_CanSetupVideoCallWith4To3AspectRatio) {
   const std::string javascript =
       "callAndExpectResolution({video: {mandatory: { minWidth: 320,"
       "maxWidth: 320, minAspectRatio: 1.333, maxAspectRatio: 1.333}}}, 320,"
diff --git a/content/browser/webrtc/webrtc_video_capture_browsertest.cc b/content/browser/webrtc/webrtc_video_capture_browsertest.cc
index 7c69f2a..c9c5f68 100644
--- a/content/browser/webrtc/webrtc_video_capture_browsertest.cc
+++ b/content/browser/webrtc/webrtc_video_capture_browsertest.cc
@@ -62,8 +62,16 @@
   DISALLOW_COPY_AND_ASSIGN(WebRtcVideoCaptureBrowserTest);
 };
 
+#if defined(OS_MAC)
+// TODO(https://crbug.com/1235254): This test is flakey on macOS.
+#define MAYBE_RecoverFromCrashInVideoCaptureProcess \
+  DISABLED_RecoverFromCrashInVideoCaptureProcess
+#else
+#define MAYBE_RecoverFromCrashInVideoCaptureProcess \
+  RecoverFromCrashInVideoCaptureProcess
+#endif
 IN_PROC_BROWSER_TEST_F(WebRtcVideoCaptureBrowserTest,
-                       RecoverFromCrashInVideoCaptureProcess) {
+                       MAYBE_RecoverFromCrashInVideoCaptureProcess) {
   // This test only makes sense if the video capture service runs in a
   // separate process.
   if (!features::IsVideoCaptureServiceEnabledForOutOfProcess())
diff --git a/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc b/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
index cf83d05..811d0d2 100644
--- a/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
+++ b/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
@@ -552,9 +552,17 @@
   run_loop.Run();
 }
 
+#if defined(OS_MAC)
+// TODO(https://crbug.com/1235254): This test is flakey on macOS.
+#define MAYBE_FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage \
+  DISABLED_FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage
+#else
+#define MAYBE_FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage \
+  FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage
+#endif
 IN_PROC_BROWSER_TEST_F(
     WebRtcVideoCaptureServiceBrowserTest,
-    FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage) {
+    MAYBE_FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage) {
   Initialize();
   auto device_exerciser = std::make_unique<SharedMemoryDeviceExerciser>();
   device_exerciser->Initialize();
@@ -569,9 +577,17 @@
   run_loop.Run();
 }
 
+#if defined(OS_MAC)
+// TODO(https://crbug.com/1235254): This test is flakey on macOS.
+#define MAYBE_PaddedI420FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage \
+  DISABLED_PaddedI420FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage
+#else
+#define MAYBE_PaddedI420FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage \
+  PaddedI420FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage
+#endif
 IN_PROC_BROWSER_TEST_F(
     WebRtcVideoCaptureServiceBrowserTest,
-    PaddedI420FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage) {
+    MAYBE_PaddedI420FramesSentThroughSharedMemoryVirtualDeviceGetDisplayedOnPage) {
   Initialize();
   auto device_exerciser = std::make_unique<SharedMemoryDeviceExerciser>(
       media::mojom::PlaneStrides::New(
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
index d18a11a..8dadbd9 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -2575,11 +2575,7 @@
     const PP_Rect& bounding_box) {
   if (!render_frame_)
     return;
-  PP_Rect caret_dip(caret), bounding_box_dip(bounding_box);
-  ConvertRectToDIP(&caret_dip);
-  ConvertRectToDIP(&bounding_box_dip);
-  TextInputCaretInfo info = {PP_ToGfxRect(caret_dip),
-                             PP_ToGfxRect(bounding_box_dip)};
+  TextInputCaretInfo info = {PP_ToGfxRect(caret), PP_ToGfxRect(bounding_box)};
   text_input_caret_info_ = std::move(info);
   render_frame_->PepperCaretPositionChanged(this);
 }
diff --git a/content/renderer/v8_value_converter_impl_unittest.cc b/content/renderer/v8_value_converter_impl_unittest.cc
index 40912d9..bd9538e2 100644
--- a/content/renderer/v8_value_converter_impl_unittest.cc
+++ b/content/renderer/v8_value_converter_impl_unittest.cc
@@ -279,9 +279,8 @@
       converter.ToV8Value(original_root.get(), context).As<v8::Object>();
   ASSERT_FALSE(v8_object.IsEmpty());
 
-  EXPECT_EQ(
-      static_cast<const base::DictionaryValue&>(*original_root).DictSize(),
-      v8_object->GetPropertyNames(context).ToLocalChecked()->Length());
+  EXPECT_EQ(original_root->DictSize(),
+            v8_object->GetPropertyNames(context).ToLocalChecked()->Length());
   EXPECT_TRUE(
       v8_object
           ->Get(context, v8::String::NewFromUtf8(
diff --git a/content/services/auction_worklet/auction_v8_helper.cc b/content/services/auction_worklet/auction_v8_helper.cc
index cdf6755..92812f4 100644
--- a/content/services/auction_worklet/auction_v8_helper.cc
+++ b/content/services/auction_worklet/auction_v8_helper.cc
@@ -331,7 +331,7 @@
 v8::MaybeLocal<v8::Value> AuctionV8Helper::RunScript(
     v8::Local<v8::Context> context,
     v8::Local<v8::UnboundScript> script,
-    base::StringPiece script_name,
+    base::StringPiece function_name,
     base::span<v8::Local<v8::Value>> args,
     std::vector<std::string>& error_out) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -340,8 +340,8 @@
   ScopedConsoleTarget direct_console(
       this, FormatValue(isolate(), script->GetScriptName()), &error_out);
 
-  v8::Local<v8::String> v8_script_name;
-  if (!CreateUtf8String(script_name).ToLocal(&v8_script_name))
+  v8::Local<v8::String> v8_function_name;
+  if (!CreateUtf8String(function_name).ToLocal(&v8_function_name))
     return v8::MaybeLocal<v8::Value>();
 
   v8::Local<v8::Script> local_script = script->BindToCurrentContext();
@@ -367,17 +367,17 @@
     return v8::MaybeLocal<v8::Value>();
 
   v8::Local<v8::Value> function;
-  if (!context->Global()->Get(context, v8_script_name).ToLocal(&function)) {
+  if (!context->Global()->Get(context, v8_function_name).ToLocal(&function)) {
     error_out.push_back(
         base::StrCat({FormatValue(isolate(), script->GetScriptName()),
-                      " function `", script_name, "` not found."}));
+                      " function `", function_name, "` not found."}));
     return v8::MaybeLocal<v8::Value>();
   }
 
   if (!function->IsFunction()) {
     error_out.push_back(
         base::StrCat({FormatValue(isolate(), script->GetScriptName()), " `",
-                      script_name, "` is not a function."}));
+                      function_name, "` is not a function."}));
     return v8::MaybeLocal<v8::Value>();
   }
 
@@ -386,7 +386,7 @@
   if (try_catch.HasTerminated()) {
     error_out.push_back(
         base::StrCat({FormatValue(isolate(), script->GetScriptName()),
-                      " execution of `", script_name, "` timed out."}));
+                      " execution of `", function_name, "` timed out."}));
     return v8::MaybeLocal<v8::Value>();
   }
   if (try_catch.HasCaught()) {
diff --git a/content/services/auction_worklet/auction_v8_helper.h b/content/services/auction_worklet/auction_v8_helper.h
index 375a1d3..3ac7d94 100644
--- a/content/services/auction_worklet/auction_v8_helper.h
+++ b/content/services/auction_worklet/auction_v8_helper.h
@@ -151,7 +151,7 @@
   // In case of an error or console output sets `error_out`.
   v8::MaybeLocal<v8::Value> RunScript(v8::Local<v8::Context> context,
                                       v8::Local<v8::UnboundScript> script,
-                                      base::StringPiece script_name,
+                                      base::StringPiece function_name,
                                       base::span<v8::Local<v8::Value>> args,
                                       std::vector<std::string>& error_out);
 
diff --git a/content/test/data/forms/form_controls_browsertest_checkbox_android.png b/content/test/data/forms/form_controls_browsertest_checkbox_android.png
index 258b74f3..d819a9b 100644
--- a/content/test/data/forms/form_controls_browsertest_checkbox_android.png
+++ b/content/test/data/forms/form_controls_browsertest_checkbox_android.png
Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_multi_select_android.png b/content/test/data/forms/form_controls_browsertest_multi_select_android.png
index edaf6cb..c166623 100644
--- a/content/test/data/forms/form_controls_browsertest_multi_select_android.png
+++ b/content/test/data/forms/form_controls_browsertest_multi_select_android.png
Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_select_android.png b/content/test/data/forms/form_controls_browsertest_select_android.png
index 0225ac4..16c390a 100644
--- a/content/test/data/forms/form_controls_browsertest_select_android.png
+++ b/content/test/data/forms/form_controls_browsertest_select_android.png
Binary files differ
diff --git a/content/test/data/gpu/webgpu-domain-blocking-page1.html b/content/test/data/gpu/webgpu-domain-blocking-page1.html
new file mode 100644
index 0000000..031e83db
--- /dev/null
+++ b/content/test/data/gpu/webgpu-domain-blocking-page1.html
@@ -0,0 +1,41 @@
+<script type="text/javascript">
+function reportProgress(msg) {
+  if (window.domAutomationController) {
+    window.domAutomationController.send(msg);
+  }
+  console.log(msg);
+}
+
+async function init()
+{
+  const adapter = await navigator.gpu.requestAdapter();
+  if (!adapter) {
+    console.log('TEST FAILED - Could not get a GPUAdapter');
+    reportProgress('FAILED');
+    return;
+  }
+
+  let device;
+  try {
+    device = await adapter.requestDevice();
+  } catch {
+    console.log('TEST FAILED - Could not get a GPUDevice');
+    reportProgress('FAILED');
+    return;
+  }
+
+
+  reportProgress('LOADED');
+
+  console.log('Waiting for a GPU crash to cause device loss');
+  const {reason} = await device.lost;
+  if (reason !== undefined) {
+    console.log('TEST FAILED - Expected undefined device lost reason');
+    reportProgress('FAILED');
+  }
+
+  window.location.href = 'webgpu-domain-blocking-page2.html';
+}
+
+init();
+</script>
diff --git a/content/test/data/gpu/webgpu-domain-blocking-page2.html b/content/test/data/gpu/webgpu-domain-blocking-page2.html
new file mode 100644
index 0000000..24622df
--- /dev/null
+++ b/content/test/data/gpu/webgpu-domain-blocking-page2.html
@@ -0,0 +1,15 @@
+<script type="text/javascript">
+var initFinished = false;
+var gotAdapter = false;
+
+async function init()
+{
+  const adapter = await navigator.gpu.requestAdapter();
+  if (adapter !== null) {
+    gotAdapter = true;
+  }
+  initFinished = true;
+}
+
+init();
+</script>
diff --git a/content/test/data/gpu/webgpu-domain-not-blocked.html b/content/test/data/gpu/webgpu-domain-not-blocked.html
new file mode 100644
index 0000000..498ab5a
--- /dev/null
+++ b/content/test/data/gpu/webgpu-domain-not-blocked.html
@@ -0,0 +1,55 @@
+<script type="text/javascript">
+function reportProgress(msg) {
+  if (window.domAutomationController) {
+    window.domAutomationController.send(msg);
+  }
+  console.log(msg);
+}
+
+async function requestDevice() {
+  const adapter = await navigator.gpu.requestAdapter();
+  if (!adapter) {
+    reportProgress('FAILED');
+    console.log('TEST FAILED - Could not get a GPUAdapter');
+    return null;
+  }
+
+  try {
+    return await adapter.requestDevice();
+  } catch {
+    reportProgress('FAILED');
+    console.log('TEST FAILED - Could not get a GPUDevice');
+    return null;
+  }
+}
+
+async function init() {
+  const device = await requestDevice();
+
+  reportProgress('LOADED');
+
+  // The test runner forces the GPU process to terminate normally. This should
+  // NOT result in the domain being blocked.
+  console.log('Waiting for GPU termination to cause device loss');
+  const {reason} = await device.lost;
+  if (reason !== undefined) {
+    console.log('TEST FAILED - Expected undefined device lost reason');
+    reportProgress('FAILED');
+    return;
+  }
+
+  try {
+    const newDevice = await requestDevice();
+    if (newDevice) {
+      reportProgress('SUCCESS');
+      return;
+    }
+  } catch {
+  }
+
+  reportProgress('FAILED');
+  console.log('TEST FAILED - Could not get a new GPUDevice');
+}
+
+init();
+</script>
diff --git a/content/test/data/gpu/webgpu-domain-unblocking.html b/content/test/data/gpu/webgpu-domain-unblocking.html
new file mode 100644
index 0000000..81b2fc1c
--- /dev/null
+++ b/content/test/data/gpu/webgpu-domain-unblocking.html
@@ -0,0 +1,63 @@
+<script type="text/javascript">
+var deviceLostReceived = false;
+
+function reportProgress(msg) {
+  if (window.domAutomationController) {
+    window.domAutomationController.send(msg);
+  }
+  console.log(msg);
+}
+
+async function init()
+{
+  const adapter = await navigator.gpu.requestAdapter();
+  if (!adapter) {
+    reportProgress('FAILED');
+    console.log('TEST FAILED - requestAdapter() failed unexpectedly');
+    return;
+  }
+
+  let device;
+  try {
+    device = await adapter.requestDevice();
+  } catch {
+    reportProgress('FAILED');
+    console.log('TEST FAILED - requestDevice() failed unexpectedly');
+    return;
+  }
+
+  reportProgress('SUCCESS');
+  reportProgress('LOADED');
+
+  console.log('Waiting for a GPU crash to cause device loss');
+  const {reason} = await device.lost;
+  if (reason !== undefined) {
+    console.log('TEST FAILED - Expected undefined device lost reason');
+    reportProgress('FAILED');
+    return;
+  }
+
+  try {
+    // First check that the previously acquired adapter can't get another device.
+    // This should throw an exception.
+    await adapter.requestDevice();
+    reportProgress('FAILED');
+    console.log('TEST FAILED - WebGPU device request should have failed on ' +
+                'stale GPUAdapter');
+  } catch {
+    console.log('Device request failed as expected');
+  }
+
+  // Also check that we can't get another adapter.
+  const newAdapter = await navigator.gpu.requestAdapter();
+  if (newAdapter !== null) {
+    reportProgress('FAILED');
+    console.log(
+        'TEST FAILED - WebGPU adapter request should have been blocked');
+  }
+
+  deviceLostReceived = true;
+}
+
+init();
+</script>
diff --git a/content/test/gpu/gpu_tests/context_lost_integration_test.py b/content/test/gpu/gpu_tests/context_lost_integration_test.py
index 1ddbbfd..6fd44ee 100644
--- a/content/test/gpu/gpu_tests/context_lost_integration_test.py
+++ b/content/test/gpu/gpu_tests/context_lost_integration_test.py
@@ -180,7 +180,13 @@
              ('ContextLost_MacWebGLPreserveDBHighPowerSwitchLosesContext',
               'webgl2-preserve-db-high-power-switch-loses-context.html'),
              ('GpuCrash_InfoForHardwareGpu', 'simple.html'),
-             ('GpuCrash_InfoForDualHardwareGpus', 'webgl-high-perf.html'))
+             ('GpuCrash_InfoForDualHardwareGpus', 'webgl-high-perf.html'),
+             ('ContextLost_WebGPUBlockedAfterJSNavigation',
+              'webgpu-domain-blocking-page1.html'),
+             ('ContextLost_WebGPUUnblockedAfterUserInitiatedReload',
+              'webgpu-domain-unblocking.html'),
+             ('GpuNormalTermination_WebGPUNotBlocked',
+              'webgpu-domain-not-blocked.html'))
 
     for t in tests:
       yield (t[0], t[1], ('_' + t[0]))
@@ -307,9 +313,9 @@
     tab.Close()
     return vid
 
-  def _WaitForTabAndCheckCompletion(self):
+  def _WaitForTabAndCheckCompletion(self, timeout=wait_timeout):
     tab = self.tab
-    completed = _WaitForPageToFinish(tab)
+    completed = _WaitForPageToFinish(tab, timeout=timeout)
     if not completed:
       self.fail('Test didn\'t complete (no context lost / restored event?)')
     if not tab.EvaluateJavaScript('window.domAutomationController._succeeded'):
@@ -339,9 +345,13 @@
         '--enable-unsafe-webgpu',
     ])
     self._NavigateAndWaitForLoad(test_path)
+    self.tab.EvaluateJavaScript(
+        'chrome.gpuBenchmarking.terminateGpuProcessNormally()')
+
     # The gpu startup sometimes takes longer on the bots.
     # Increasing the timeout for this test as it times out before completion
-    self._KillGPUProcess(1, False, timeout=180)
+    self._WaitForTabAndCheckCompletion(timeout=180)
+
     self._RestartBrowser('must restart after tests that kill the GPU process')
 
   def _ContextLost_WebGLContextLostFromLoseContextExtension(self, test_path):
@@ -592,6 +602,73 @@
                 (new_active_vendor_id, active_vendor_id_for_hardware_gpu))
     self._RestartBrowser('must restart after tests that kill the GPU process')
 
+  def _ContextLost_WebGPUBlockedAfterJSNavigation(self, test_path):
+    self.RestartBrowserIfNecessaryWithArgs([
+        '--enable-unsafe-webgpu',
+    ])
+    self._NavigateAndWaitForLoad(test_path)
+
+    tab = self.tab
+    if tab.EvaluateJavaScript('window.domAutomationController._finished'):
+      # This means the test failed for some reason.
+      if tab.EvaluateJavaScript('window.domAutomationController._succeeded'):
+        self.fail('Initial page claimed to succeed early')
+      else:
+        self.fail('Initial page failed to get a WebGPU device')
+
+    # Kill the GPU process in order to get WebGPU blocked.
+    tab.EvaluateJavaScript('chrome.gpuBenchmarking.crashGpuProcess()')
+
+    # The original tab will navigate to a new page. Wait for it to
+    # finish running its onload handler.
+    tab.WaitForJavaScriptCondition('window.initFinished', timeout=wait_timeout)
+
+    ## Make sure the page failed to get a WebGPU adapter.
+    if tab.EvaluateJavaScript('window.gotAdapter'):
+      self.fail(
+          'Page should have been blocked from getting a new WebGPU device')
+    self._RestartBrowser('must restart after tests that kill the GPU process')
+
+  def _ContextLost_WebGPUUnblockedAfterUserInitiatedReload(self, test_path):
+    self.RestartBrowserIfNecessaryWithArgs([
+        '--enable-unsafe-webgpu',
+    ])
+    self._NavigateAndWaitForLoad(test_path)
+
+    tab = self.tab
+    # Make sure the tab initially got a WebGPU device.
+    if not tab.EvaluateJavaScript('window.domAutomationController._succeeded'):
+      self.fail('Tab failed to get an initial WebGPU device')
+    # Kill the GPU process in order to get WebGL blocked.
+    tab.EvaluateJavaScript('chrome.gpuBenchmarking.crashGpuProcess()')
+
+    # Wait for the page to receive a device loss event.
+    tab.WaitForJavaScriptCondition('window.deviceLostReceived',
+                                   timeout=wait_timeout)
+    # Make sure WebGL is still blocked.
+    if not tab.EvaluateJavaScript('window.domAutomationController._succeeded'):
+      self.fail('WebGPU should have been blocked after a device loss')
+    # Reload the page via Telemetry / DevTools. This is treated as a
+    # user-initiated navigation, so WebGPU is unblocked.
+    self._NavigateAndWaitForLoad(test_path)
+    # Ensure WebGPU is unblocked.
+    if not tab.EvaluateJavaScript('window.domAutomationController._succeeded'):
+      self.fail(
+          'WebGPU should have been unblocked after a user-initiated navigation')
+    self._RestartBrowser('must restart after tests that kill the GPU process')
+
+  def _GpuNormalTermination_WebGPUNotBlocked(self, test_path):
+    self.RestartBrowserIfNecessaryWithArgs([
+        '--enable-unsafe-webgpu',
+    ])
+    self._NavigateAndWaitForLoad(test_path)
+
+    tab = self.tab
+    tab.EvaluateJavaScript(
+        'chrome.gpuBenchmarking.terminateGpuProcessNormally()')
+    self._WaitForTabAndCheckCompletion()
+    self._RestartBrowser('must restart after tests that kill the GPU process')
+
   @classmethod
   def GetPlatformTags(cls, browser):
     tags = super(ContextLostIntegrationTest, cls).GetPlatformTags(browser)
diff --git a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
index 184b96a3..02f952b 100644
--- a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
@@ -121,9 +121,21 @@
 
 # Webgpu not fully supported on Linux, Android, ChromeOS, and Fuchsia
 [ linux ] ContextLost_WebGPUContextLostFromGPUProcessExit [ Skip ]
+[ linux ] ContextLost_WebGPUBlockedAfterJSNavigation [ Skip ]
+[ linux ] ContextLost_WebGPUUnblockedAfterUserInitiatedReload [ Skip ]
+[ linux ] GpuNormalTermination_WebGPUNotBlocked [ Skip ]
 [ fuchsia ] ContextLost_WebGPUContextLostFromGPUProcessExit [ Skip ]
+[ fuchsia ] ContextLost_WebGPUBlockedAfterJSNavigation [ Skip ]
+[ fuchsia ] ContextLost_WebGPUUnblockedAfterUserInitiatedReload [ Skip ]
+[ fuchsia ] GpuNormalTermination_WebGPUNotBlocked [ Skip ]
 [ android ] ContextLost_WebGPUContextLostFromGPUProcessExit [ Skip ]
+[ android ] ContextLost_WebGPUBlockedAfterJSNavigation [ Skip ]
+[ android ] ContextLost_WebGPUUnblockedAfterUserInitiatedReload [ Skip ]
+[ android ] GpuNormalTermination_WebGPUNotBlocked [ Skip ]
 [ chromeos ] ContextLost_WebGPUContextLostFromGPUProcessExit [ Skip ]
+[ chromeos ] ContextLost_WebGPUBlockedAfterJSNavigation [ Skip ]
+[ chromeos ] ContextLost_WebGPUUnblockedAfterUserInitiatedReload [ Skip ]
+[ chromeos ] GpuNormalTermination_WebGPUNotBlocked [ Skip ]
 
 # Flakily not getting WebGL blocked on context loss
 crbug.com/1143774 [ chromeos chromeos-board-kevin ] ContextLost_WebGLUnblockedAfterUserInitiatedReload [ RetryOnFailure ]
diff --git a/device/bluetooth/bluez/bluetooth_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_bluez_unittest.cc
index 71849be..b197156 100644
--- a/device/bluetooth/bluez/bluetooth_bluez_unittest.cc
+++ b/device/bluetooth/bluez/bluetooth_bluez_unittest.cc
@@ -94,6 +94,14 @@
       kBackgroundScanningDeviceFoundTimeout,
       kBackgroundScanningDeviceLostTimeout, {pattern});
 }
+
+bluez::FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
+GetAdvertisementMonitorApplicationManger() {
+  return static_cast<bluez::FakeBluetoothAdvertisementMonitorManagerClient*>(
+             bluez::BluezDBusManager::Get()
+                 ->GetBluetoothAdvertisementMonitorManagerClient())
+      ->application_provider();
+}
 #endif  // #if BUILDFLAG(IS_CHROMEOS_ASH)
 
 namespace bluez {
@@ -165,19 +173,63 @@
   void OnSessionStarted(
       device::BluetoothLowEnergyScanSession* scan_session,
       absl::optional<device::BluetoothLowEnergyScanSession::ErrorCode>
-          error_code) override {}
+          error_code) override {
+    sessions_started_.push_back(std::make_pair(scan_session, error_code));
+  }
   void OnDeviceFound(device::BluetoothLowEnergyScanSession* scan_session,
-                     device::BluetoothDevice* device) override {}
+                     device::BluetoothDevice* device) override {
+    devices_found_.push_back(std::make_pair(scan_session, device));
+  }
   void OnDeviceLost(device::BluetoothLowEnergyScanSession* scan_session,
-                    device::BluetoothDevice* device) override {}
+                    device::BluetoothDevice* device) override {
+    devices_lost_.push_back(std::make_pair(scan_session, device));
+  }
   void OnSessionInvalidated(
-      device::BluetoothLowEnergyScanSession* scan_session) override {}
+      device::BluetoothLowEnergyScanSession* scan_session) override {
+    sessions_invalidated_.push_back(scan_session);
+  }
+
+  const std::vector<std::pair<
+      device::BluetoothLowEnergyScanSession*,
+      absl::optional<device::BluetoothLowEnergyScanSession::ErrorCode>>>&
+  sessions_started() const {
+    return sessions_started_;
+  }
+
+  const std::vector<std::pair<device::BluetoothLowEnergyScanSession*,
+                              device::BluetoothDevice*>>&
+  devices_found() const {
+    return devices_found_;
+  }
+
+  const std::vector<std::pair<device::BluetoothLowEnergyScanSession*,
+                              device::BluetoothDevice*>>&
+  devices_lost() const {
+    return devices_lost_;
+  }
+
+  const std::vector<device::BluetoothLowEnergyScanSession*>&
+  sessions_invalidated() const {
+    return sessions_invalidated_;
+  }
 
   base::WeakPtr<FakeBluetoothLowEnergyScanSessionDelegate> GetWeakPtr() {
     return weak_ptr_factory_.GetWeakPtr();
   }
 
  private:
+  std::vector<std::pair<
+      device::BluetoothLowEnergyScanSession*,
+      absl::optional<device::BluetoothLowEnergyScanSession::ErrorCode>>>
+      sessions_started_;
+  std::vector<std::pair<device::BluetoothLowEnergyScanSession*,
+                        device::BluetoothDevice*>>
+      devices_found_;
+  std::vector<std::pair<device::BluetoothLowEnergyScanSession*,
+                        device::BluetoothDevice*>>
+      devices_lost_;
+  std::vector<device::BluetoothLowEnergyScanSession*> sessions_invalidated_;
+
   base::WeakPtrFactory<FakeBluetoothLowEnergyScanSessionDelegate>
       weak_ptr_factory_{this};
 };
@@ -4657,11 +4709,7 @@
   GetAdapter();
 
   FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
-      application_manager =
-          static_cast<FakeBluetoothAdvertisementMonitorManagerClient*>(
-              bluez::BluezDBusManager::Get()
-                  ->GetBluetoothAdvertisementMonitorManagerClient())
-              ->application_provider();
+      application_manager = GetAdvertisementMonitorApplicationManger();
 
   auto filter = CreateLowEnergyScanFilter();
   FakeBluetoothLowEnergyScanSessionDelegate delegate;
@@ -4684,11 +4732,7 @@
   ASSERT_FALSE(adapter_->IsPresent());
 
   FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
-      application_manager =
-          static_cast<FakeBluetoothAdvertisementMonitorManagerClient*>(
-              bluez::BluezDBusManager::Get()
-                  ->GetBluetoothAdvertisementMonitorManagerClient())
-              ->application_provider();
+      application_manager = GetAdvertisementMonitorApplicationManger();
 
   auto filter = CreateLowEnergyScanFilter();
 
@@ -4717,11 +4761,7 @@
   fake_bluetooth_adapter_client_->SetPresent(false);
 
   FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
-      application_manager =
-          static_cast<FakeBluetoothAdvertisementMonitorManagerClient*>(
-              bluez::BluezDBusManager::Get()
-                  ->GetBluetoothAdvertisementMonitorManagerClient())
-              ->application_provider();
+      application_manager = GetAdvertisementMonitorApplicationManger();
 
   auto filter = CreateLowEnergyScanFilter();
   FakeBluetoothLowEnergyScanSessionDelegate delegate;
@@ -4740,6 +4780,144 @@
   // becomes present.
   ASSERT_EQ(1u, application_manager->AdvertisementMonitorsCount());
 }
+
+TEST_F(BluetoothBlueZTest, BluetoothLowEnergyScanSessionBlueZDeviceFound) {
+  GetAdapter();
+  ASSERT_TRUE(adapter_->IsPresent());
+
+  FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
+      application_manager = GetAdvertisementMonitorApplicationManger();
+  FakeBluetoothLowEnergyScanSessionDelegate delegate;
+  auto background_scan_session = adapter_->StartLowEnergyScanSession(
+      CreateLowEnergyScanFilter(), /*delegate=*/delegate.GetWeakPtr());
+
+  // Check that advertisement monitor was added to d-bus layer.
+  EXPECT_EQ(1u, application_manager->AdvertisementMonitorsCount());
+
+  // Get advertisement fake advertisement monitor to forward events to
+  // BluetoothLowEnergyScanSessionBlueZ.
+  FakeBluetoothAdvertisementMonitorServiceProvider* advertisement_monitor =
+      application_manager->GetLastAddedAdvertisementMonitorServiceProvider();
+  ASSERT_TRUE(advertisement_monitor);
+
+  // Simulate a device found event.
+  advertisement_monitor->delegate()->OnDeviceFound(
+      dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kPairedDevicePath));
+  EXPECT_EQ(1u, delegate.devices_found().size());
+
+  std::pair<device::BluetoothLowEnergyScanSession*, device::BluetoothDevice*>
+      devices_found_pair = delegate.devices_found()[0];
+  EXPECT_EQ(background_scan_session.get(), devices_found_pair.first);
+  EXPECT_EQ(adapter_->GetDevice(
+                bluez::FakeBluetoothDeviceClient::kPairedDeviceAddress),
+            devices_found_pair.second);
+}
+
+TEST_F(BluetoothBlueZTest, BluetoothLowEnergyScanSessionBlueZDeviceLost) {
+  GetAdapter();
+  ASSERT_TRUE(adapter_->IsPresent());
+
+  FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
+      application_manager = GetAdvertisementMonitorApplicationManger();
+  FakeBluetoothLowEnergyScanSessionDelegate delegate;
+  auto background_scan_session = adapter_->StartLowEnergyScanSession(
+      CreateLowEnergyScanFilter(), /*delegate=*/delegate.GetWeakPtr());
+
+  // Check that advertisement monitor was added to d-bus layer.
+  EXPECT_EQ(1u, application_manager->AdvertisementMonitorsCount());
+
+  // Get advertisement fake advertisement monitor to forward events to
+  // BluetoothLowEnergyScanSessionBlueZ.
+  FakeBluetoothAdvertisementMonitorServiceProvider* advertisement_monitor =
+      application_manager->GetLastAddedAdvertisementMonitorServiceProvider();
+  ASSERT_TRUE(advertisement_monitor);
+
+  // Simulate a device lost event.
+  advertisement_monitor->delegate()->OnDeviceLost(
+      dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kPairedDevicePath));
+  EXPECT_EQ(1u, delegate.devices_lost().size());
+
+  std::pair<device::BluetoothLowEnergyScanSession*, device::BluetoothDevice*>
+      devices_lost_pair = delegate.devices_lost()[0];
+  EXPECT_EQ(background_scan_session.get(), devices_lost_pair.first);
+  EXPECT_EQ(adapter_->GetDevice(
+                bluez::FakeBluetoothDeviceClient::kPairedDeviceAddress),
+            devices_lost_pair.second);
+}
+
+TEST_F(BluetoothBlueZTest,
+       BluetoothLowEnergyScanSessionBlueZStartThenInvalidate) {
+  GetAdapter();
+  ASSERT_TRUE(adapter_->IsPresent());
+
+  FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
+      application_manager = GetAdvertisementMonitorApplicationManger();
+  FakeBluetoothLowEnergyScanSessionDelegate delegate;
+  auto background_scan_session = adapter_->StartLowEnergyScanSession(
+      CreateLowEnergyScanFilter(), /*delegate=*/delegate.GetWeakPtr());
+
+  // Check that advertisement monitor was added to d-bus layer.
+  EXPECT_EQ(1u, application_manager->AdvertisementMonitorsCount());
+
+  // Get advertisement fake advertisement monitor to forward events to
+  // BluetoothLowEnergyScanSessionBlueZ.
+  FakeBluetoothAdvertisementMonitorServiceProvider* advertisement_monitor =
+      application_manager->GetLastAddedAdvertisementMonitorServiceProvider();
+  ASSERT_TRUE(advertisement_monitor);
+
+  // Successfully start scan session.
+  advertisement_monitor->delegate()->OnActivate();
+  EXPECT_EQ(1u, delegate.sessions_started().size());
+  std::pair<device::BluetoothLowEnergyScanSession*,
+            absl::optional<device::BluetoothLowEnergyScanSession::ErrorCode>>
+      session_started_pair = delegate.sessions_started()[0];
+
+  // Check that the correct scan session is started.
+  EXPECT_EQ(background_scan_session.get(), session_started_pair.first);
+
+  // Check that there was no error when starting the scan session.
+  EXPECT_FALSE(session_started_pair.second.has_value());
+
+  // Invalidate scan session after successful start.
+  advertisement_monitor->delegate()->OnRelease();
+  EXPECT_EQ(1u, delegate.sessions_invalidated().size());
+  EXPECT_EQ(background_scan_session.get(),
+            delegate.sessions_invalidated().front());
+}
+
+TEST_F(BluetoothBlueZTest, BluetoothLowEnergyScanSessionBlueZFailsToStart) {
+  GetAdapter();
+  ASSERT_TRUE(adapter_->IsPresent());
+
+  FakeBluetoothAdvertisementMonitorApplicationServiceProvider*
+      application_manager = GetAdvertisementMonitorApplicationManger();
+  FakeBluetoothLowEnergyScanSessionDelegate delegate;
+  auto background_scan_session = adapter_->StartLowEnergyScanSession(
+      CreateLowEnergyScanFilter(), /*delegate=*/delegate.GetWeakPtr());
+
+  // Check that advertisement monitor was added to d-bus layer.
+  EXPECT_EQ(1u, application_manager->AdvertisementMonitorsCount());
+
+  // Get advertisement fake advertisement monitor to forward events to
+  // BluetoothLowEnergyScanSessionBlueZ.
+  FakeBluetoothAdvertisementMonitorServiceProvider* advertisement_monitor =
+      application_manager->GetLastAddedAdvertisementMonitorServiceProvider();
+  ASSERT_TRUE(advertisement_monitor);
+
+  // Scan session failed to start.
+  advertisement_monitor->delegate()->OnRelease();
+  EXPECT_EQ(1u, delegate.sessions_started().size());
+
+  std::pair<device::BluetoothLowEnergyScanSession*,
+            absl::optional<device::BluetoothLowEnergyScanSession::ErrorCode>>
+      session_started_pair = delegate.sessions_started()[0];
+
+  // Check that the correct scan session.
+  EXPECT_EQ(background_scan_session.get(), session_started_pair.first);
+
+  // Check that there was an error indicating failure to start.
+  EXPECT_TRUE(session_started_pair.second.has_value());
+}
 #endif
 
 }  // namespace bluez
diff --git a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.cc b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.cc
index d93d6d6..c940962 100644
--- a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.cc
+++ b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.cc
@@ -4,8 +4,10 @@
 
 #include "device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.h"
 
+#include "base/containers/contains.h"
 #include "device/bluetooth/dbus/bluez_dbus_manager.h"
 #include "device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_manager_client.h"
+#include "device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_service_provider.h"
 
 namespace bluez {
 
@@ -28,6 +30,9 @@
 void FakeBluetoothAdvertisementMonitorApplicationServiceProvider::AddMonitor(
     std::unique_ptr<BluetoothAdvertisementMonitorServiceProvider>
         advertisement_monitor_service_provider) {
+  last_added_advertisement_monitor_provider_path_ =
+      advertisement_monitor_service_provider->object_path().value();
+
   advertisement_monitor_providers_.insert(std::make_pair(
       advertisement_monitor_service_provider->object_path().value(),
       std::move(advertisement_monitor_service_provider)));
@@ -43,4 +48,18 @@
   return advertisement_monitor_providers_.size();
 }
 
+FakeBluetoothAdvertisementMonitorServiceProvider*
+FakeBluetoothAdvertisementMonitorApplicationServiceProvider::
+    GetLastAddedAdvertisementMonitorServiceProvider() {
+  if (!base::Contains(advertisement_monitor_providers_,
+                      last_added_advertisement_monitor_provider_path_)) {
+    return nullptr;
+  }
+
+  return static_cast<FakeBluetoothAdvertisementMonitorServiceProvider*>(
+      advertisement_monitor_providers_
+          [last_added_advertisement_monitor_provider_path_]
+              .get());
+}
+
 }  // namespace bluez
diff --git a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.h b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.h
index 6968596..04379cc 100644
--- a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.h
+++ b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_application_service_provider.h
@@ -40,11 +40,16 @@
 
   size_t AdvertisementMonitorsCount() const;
 
+  FakeBluetoothAdvertisementMonitorServiceProvider*
+  GetLastAddedAdvertisementMonitorServiceProvider();
+
  private:
   // Key is the object path of the AdvertisementMonitorServiceProvider
   std::map<std::string,
            std::unique_ptr<BluetoothAdvertisementMonitorServiceProvider>>
       advertisement_monitor_providers_;
+
+  std::string last_added_advertisement_monitor_provider_path_;
 };
 
 }  // namespace bluez
diff --git a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_service_provider.h b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_service_provider.h
index c9323dcb..9ec9609 100644
--- a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_service_provider.h
+++ b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_service_provider.h
@@ -29,6 +29,10 @@
   // BluetoothAdvertisementMonitorServiceProvider override:
   const dbus::ObjectPath& object_path() const override;
 
+  BluetoothAdvertisementMonitorServiceProvider::Delegate* delegate() {
+    return delegate_.get();
+  }
+
  private:
   dbus::ObjectPath object_path_;
 
diff --git a/docs/clang_sheriffing.md b/docs/clang_sheriffing.md
index ce9ee4b..c15297d 100644
--- a/docs/clang_sheriffing.md
+++ b/docs/clang_sheriffing.md
@@ -186,7 +186,9 @@
 Miscompiles tend to result in crashes, so if you see a test with the CRASHED
 status, this is probably what you want to do.
 
-1. Bisect object files to find the object with the code that changed.
+1. Bisect object files to find the object with the code that changed. LLVM
+   contains `llvm/utils/rsp_bisect.py` which may be useful for bisecting object
+   files using an rsp file.
 1. Debug it with a traditional debugger
 
 ## Linker error
diff --git a/docs/enterprise/policy_pref_mapping_test.md b/docs/enterprise/policy_pref_mapping_test.md
index 17a7597..d5fc2c3 100644
--- a/docs/enterprise/policy_pref_mapping_test.md
+++ b/docs/enterprise/policy_pref_mapping_test.md
@@ -52,7 +52,7 @@
 {
   ...
   "IdleAction": {
-    "os": ["chromeos"],
+    "os": ["chromeos_ash"],
     "policy_pref_mapping_tests": [
       {
         "note": "Check default values (no policies set)",
@@ -142,7 +142,8 @@
 - `win`
 - `linux`
 - `mac`
-- `chromeos`
+- `chromeos_ash`
+- `chromeos_lacros`
 - `android`
 - `ios` (tested via separate [policy_test_cases.json](https://cs.chromium.org/chromium/src/ios/chrome/test/data/policy/policy_test_cases.json))
 
@@ -249,7 +250,7 @@
 ```
 {
   "${policy_name}[.optionalTestNameSuffix]": {
-    "os": array<string>, // subset of ["win", "linux", "mac", "chromeos", "android", "ios"]
+    "os": array<string>, // subset of ["win", "linux", "mac", "chromeos_ash", "chromeos_lacros", "android", "ios"]
     "official_only": boolean, // optional, defaults to false
     "can_be_recommended": boolean, // optional, defaults to false
     "reason_for_missing_test": string // optional, should be only field then
diff --git a/extensions/browser/api/device_permissions_manager.cc b/extensions/browser/api/device_permissions_manager.cc
index 6010536..064d4ec 100644
--- a/extensions/browser/api/device_permissions_manager.cc
+++ b/extensions/browser/api/device_permissions_manager.cc
@@ -188,13 +188,14 @@
 scoped_refptr<DevicePermissionEntry> ReadDevicePermissionEntry(
     const base::DictionaryValue* entry) {
   absl::optional<int> vendor_id = entry->FindIntKey(kDeviceVendorId);
-  if (!vendor_id || vendor_id.value() < 0 || vendor_id.value() > UINT16_MAX) {
+  if (!vendor_id || vendor_id.value() < 0 ||
+      vendor_id.value() > static_cast<int>(UINT16_MAX)) {
     return nullptr;
   }
 
   absl::optional<int> product_id = entry->FindIntKey(kDeviceProductId);
   if (!product_id || product_id.value() < 0 ||
-      product_id.value() > UINT16_MAX) {
+      product_id.value() > static_cast<int>(UINT16_MAX)) {
     return nullptr;
   }
 
diff --git a/extensions/browser/api/system_cpu/BUILD.gn b/extensions/browser/api/system_cpu/BUILD.gn
index 9f907cf..38b7f36 100644
--- a/extensions/browser/api/system_cpu/BUILD.gn
+++ b/extensions/browser/api/system_cpu/BUILD.gn
@@ -22,6 +22,10 @@
     "//extensions/common/api",
   ]
 
+  if (is_fuchsia) {
+    sources += [ "cpu_info_provider_fuchsia.cc" ]
+  }
+
   if (is_mac) {
     sources += [ "cpu_info_provider_mac.cc" ]
   }
diff --git a/extensions/browser/api/system_cpu/cpu_info_provider_fuchsia.cc b/extensions/browser/api/system_cpu/cpu_info_provider_fuchsia.cc
new file mode 100644
index 0000000..f50885c9
--- /dev/null
+++ b/extensions/browser/api/system_cpu/cpu_info_provider_fuchsia.cc
@@ -0,0 +1,17 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "extensions/browser/api/system_cpu/cpu_info_provider.h"
+
+namespace extensions {
+
+bool CpuInfoProvider::QueryCpuTimePerProcessor(
+    std::vector<api::system_cpu::ProcessorInfo>* infos) {
+  DCHECK(infos);
+  // TODO(crbug.com/1233555): Integrate with platform APIs, when available.
+  NOTIMPLEMENTED_LOG_ONCE();
+  return false;
+}
+
+}  // namespace extensions
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h
index 6e74a48..dd8d27fb 100644
--- a/extensions/browser/extension_function_histogram_value.h
+++ b/extensions/browser/extension_function_histogram_value.h
@@ -1626,6 +1626,7 @@
   AUTOTESTPRIVATE_SETSHELFICONPIN = 1563,
   SCRIPTING_GETREGISTEREDCONTENTSCRIPTS = 1564,
   OS_TELEMETRY_GETVPDINFO = 1565,
+  ACCESSIBILITY_PRIVATE_MAGNIFIERCENTERONPOINT = 1566,
   // Last entry: Add new entries above, then run:
   // python tools/metrics/histograms/update_extension_histograms.py
   ENUM_BOUNDARY
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
index 2b551d53..0ea793136 100644
--- a/gpu/ipc/service/gpu_init.cc
+++ b/gpu/ipc/service/gpu_init.cc
@@ -887,15 +887,6 @@
   // Histogram GPU.SupportsVulkan and GPU.VulkanVersion were marked as expired.
   // TODO(magchen): Add back these two histograms here and re-enable them in
   // histograms.xml when we start Vulkan finch on Windows.
-  if (!vulkan_use_swiftshader) {
-    const bool supports_vulkan = !!vulkan_implementation_;
-    uint32_t vulkan_version = 0;
-    if (supports_vulkan) {
-      const auto& vulkan_info =
-          vulkan_implementation_->GetVulkanInstance()->vulkan_info();
-      vulkan_version = vulkan_info.used_api_version;
-    }
-  }
 
   if (!vulkan_implementation_)
     return false;
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg
index 90139ca..3bca9f1e1 100644
--- a/infra/config/generated/commit-queue.cfg
+++ b/infra/config/generated/commit-queue.cfg
@@ -1225,7 +1225,7 @@
       }
       builders {
         name: "chromium/try/linux-rel-orchestrator"
-        experiment_percentage: 20
+        experiment_percentage: 100
         location_regexp: ".*"
         location_regexp_exclude: ".+/[+]/docs/.+"
         location_regexp_exclude: ".+/[+]/infra/config/.+"
diff --git a/infra/config/generated/cq-builders.md b/infra/config/generated/cq-builders.md
index 57137e5a..b511b17 100644
--- a/infra/config/generated/cq-builders.md
+++ b/infra/config/generated/cq-builders.md
@@ -460,7 +460,7 @@
   * [`//services/tracing/.+`](https://cs.chromium.org/chromium/src/services/tracing/)
 
 * [linux-rel-orchestrator](https://ci.chromium.org/p/chromium/builders/try/linux-rel-orchestrator) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+linux-rel-orchestrator)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+linux-rel-orchestrator))
-  * Experiment percentage: 20.0
+  * Experiment percentage: 100.0
 
 * [linux-rel-reclient](https://ci.chromium.org/p/chromium/builders/try/linux-rel-reclient) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+linux-rel-reclient)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+linux-rel-reclient))
   * Experiment percentage: 10.0
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index 833b36f..eacdbe9 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -36272,6 +36272,111 @@
       }
     }
     builders {
+      name: "chromeos-amd64-generic-rel (reclient compare)"
+      swarming_host: "chromium-swarm.appspot.com"
+      swarming_tags: "vpython:native-python-wrapper"
+      dimensions: "builderless:1"
+      dimensions: "cores:8"
+      dimensions: "cpu:x86-64"
+      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/master"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$build/reclient": {'
+        '    "instance": "rbe-chromium-trusted",'
+        '    "metrics_project": "chromium-reclient-metrics",'
+        '    "rewrapper_env": {'
+        '      "RBE_compare": "true"'
+        '    }'
+        '  },'
+        '  "$kitchen": {'
+        '    "devshell": true,'
+        '    "emulate_gce": true,'
+        '    "git_auth": true'
+        '  },'
+        '  "$recipe_engine/isolated": {'
+        '    "server": "https://isolateserver.appspot.com"'
+        '  },'
+        '  "$recipe_engine/resultdb/test_presentation": {'
+        '    "column_keys": [],'
+        '    "grouping_keys": ['
+        '      "status",'
+        '      "v.test_suite"'
+        '    ]'
+        '  },'
+        '  "builder_group": "chromium.fyi",'
+        '  "recipe": "chromium"'
+        '}'
+      execution_timeout_secs: 36000
+      build_numbers: YES
+      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "chromium.resultdb.result_sink"
+        value: 100
+      }
+      experiments {
+        key: "chromium.resultdb.result_sink.gtests_local"
+        value: 100
+      }
+      experiments {
+        key: "chromium.resultdb.result_sink.junit_tests"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+      resultdb {
+        enable: true
+        bq_exports {
+          project: "luci-resultdb"
+          dataset: "chromium"
+          table: "ci_test_results"
+          test_results {}
+        }
+        bq_exports {
+          project: "luci-resultdb"
+          dataset: "chromium"
+          table: "gpu_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
+            }
+          }
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "gpu_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)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/.+"
+            }
+          }
+        }
+        history_options {
+          use_invocation_timestamp: true
+        }
+      }
+      description_html: "verify artifacts. removed after the migration. crbug.com/1235218"
+    }
+    builders {
       name: "chromeos-amd64-generic-rel (reclient)"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
@@ -54156,6 +54261,108 @@
       }
     }
     builders {
+      name: "win10-updater-tester-dbg-uac"
+      swarming_host: "chromium-swarm.appspot.com"
+      swarming_tags: "vpython:native-python-wrapper"
+      dimensions: "builderless:1"
+      dimensions: "cores:8"
+      dimensions: "cpu:x86-64"
+      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/master"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$build/goma": {'
+        '    "enable_ats": true,'
+        '    "rpc_extra_params": "?prod",'
+        '    "server_host": "goma.chromium.org",'
+        '    "use_luci_auth": true'
+        '  },'
+        '  "$kitchen": {'
+        '    "devshell": true,'
+        '    "git_auth": true'
+        '  },'
+        '  "$recipe_engine/isolated": {'
+        '    "server": "https://isolateserver.appspot.com"'
+        '  },'
+        '  "$recipe_engine/resultdb/test_presentation": {'
+        '    "column_keys": [],'
+        '    "grouping_keys": ['
+        '      "status",'
+        '      "v.test_suite"'
+        '    ]'
+        '  },'
+        '  "builder_group": "chromium.updater",'
+        '  "recipe": "chromium"'
+        '}'
+      execution_timeout_secs: 10800
+      build_numbers: YES
+      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "chromium.resultdb.result_sink"
+        value: 100
+      }
+      experiments {
+        key: "chromium.resultdb.result_sink.gtests_local"
+        value: 100
+      }
+      experiments {
+        key: "chromium.resultdb.result_sink.junit_tests"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+      resultdb {
+        enable: true
+        bq_exports {
+          project: "luci-resultdb"
+          dataset: "chromium"
+          table: "ci_test_results"
+          test_results {}
+        }
+        bq_exports {
+          project: "luci-resultdb"
+          dataset: "chromium"
+          table: "gpu_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
+            }
+          }
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "gpu_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)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/.+"
+            }
+          }
+        }
+        history_options {
+          use_invocation_timestamp: true
+        }
+      }
+    }
+    builders {
       name: "win10-updater-tester-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg
index 5089ff2..9a1175f9 100644
--- a/infra/config/generated/luci-milo.cfg
+++ b/infra/config/generated/luci-milo.cfg
@@ -6419,6 +6419,11 @@
     short_name: "cgc"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel (reclient compare)"
+    category: "cros x64"
+    short_name: "cmp"
+  }
+  builders {
     name: "buildbucket/luci.chromium.ci/linux-lacros-version-skew-fyi"
     category: "default"
   }
@@ -11051,6 +11056,11 @@
     short_name: "7"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/win10-updater-tester-dbg-uac"
+    category: "debug|win (64)"
+    short_name: "UAC"
+  }
+  builders {
     name: "buildbucket/luci.chromium.ci/win-updater-builder-dbg"
     category: "debug|win (64)"
     short_name: "bld"
diff --git a/infra/config/generated/luci-scheduler.cfg b/infra/config/generated/luci-scheduler.cfg
index 7e07bafba..202a4a7 100644
--- a/infra/config/generated/luci-scheduler.cfg
+++ b/infra/config/generated/luci-scheduler.cfg
@@ -4946,6 +4946,16 @@
   }
 }
 job {
+  id: "chromeos-amd64-generic-rel (reclient compare)"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.chromium.ci"
+    builder: "chromeos-amd64-generic-rel (reclient compare)"
+  }
+}
+job {
   id: "chromeos-amd64-generic-rel (reclient)"
   realm: "ci"
   acl_sets: "ci"
@@ -6987,6 +6997,20 @@
   }
 }
 job {
+  id: "win10-updater-tester-dbg-uac"
+  realm: "ci"
+  acls {
+    role: TRIGGERER
+    granted_to: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+  }
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.chromium.ci"
+    builder: "win10-updater-tester-dbg-uac"
+  }
+}
+job {
   id: "win10-updater-tester-rel"
   realm: "ci"
   acls {
@@ -7401,6 +7425,7 @@
   triggers: "chromeos-amd64-generic-lacros-dbg"
   triggers: "chromeos-amd64-generic-rel"
   triggers: "chromeos-amd64-generic-rel (goma cache silo)"
+  triggers: "chromeos-amd64-generic-rel (reclient compare)"
   triggers: "chromeos-amd64-generic-rel (reclient)"
   triggers: "chromeos-amd64-generic-rel-dchecks"
   triggers: "chromeos-arm-generic-dbg"
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star
index 69f522e..54d5e782 100644
--- a/infra/config/subprojects/chromium/ci.star
+++ b/infra/config/subprojects/chromium/ci.star
@@ -3757,6 +3757,16 @@
 )
 
 ci.updater_builder(
+    name = "win10-updater-tester-dbg-uac",
+    console_view_entry = consoles.console_view_entry(
+        category = "debug|win (64)",
+        short_name = "UAC",
+    ),
+    tree_closing = False,
+    triggered_by = ["win-updater-builder-dbg"],
+)
+
+ci.updater_builder(
     name = "win10-updater-tester-rel",
     console_view_entry = consoles.console_view_entry(
         category = "release|win (64)",
@@ -4221,6 +4231,22 @@
     reclient_rewrapper_env = {"RBE_cache_silo": "chromeos-amd64-generic-rel (reclient)"},
 )
 
+# TODO(crbug.com/1235218): remove after the migration.
+ci.fyi_builder(
+    name = "chromeos-amd64-generic-rel (reclient compare)",
+    console_view_entry = consoles.console_view_entry(
+        category = "cros x64",
+        short_name = "cmp",
+    ),
+    goma_backend = None,
+    reclient_instance = rbe_instance.DEFAULT,
+    configure_kitchen = True,
+    kitchen_emulate_gce = True,
+    os = os.LINUX_BIONIC_REMOVE,
+    reclient_rewrapper_env = {"RBE_compare": "true"},
+    description_html = "verify artifacts. removed after the migration. crbug.com/1235218",
+)
+
 ci.fyi_builder(
     name = "lacros-amd64-generic-rel (goma cache silo)",
     console_view_entry = consoles.console_view_entry(
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star
index 53ccc6b0..594c58a7 100644
--- a/infra/config/subprojects/chromium/try.star
+++ b/infra/config/subprojects/chromium/try.star
@@ -1289,7 +1289,7 @@
     },
     service_account = "chromium-mini-orchestrator@chops-service-accounts.iam.gserviceaccount.com",
     tryjob = try_.job(
-        experiment_percentage = 20,
+        experiment_percentage = 100,
     ),
 )
 
diff --git a/ios/chrome/app/application_delegate/metrics_mediator.mm b/ios/chrome/app/application_delegate/metrics_mediator.mm
index 1f641ad9..f064d10 100644
--- a/ios/chrome/app/application_delegate/metrics_mediator.mm
+++ b/ios/chrome/app/application_delegate/metrics_mediator.mm
@@ -105,6 +105,10 @@
         @"IOS.CredentialExtension.FetchPasswordFailure",
     app_group::kCredentialExtensionFetchPasswordNilArgumentCount :
         @"IOS.CredentialExtension.FetchPasswordNilArgument",
+    app_group::kCredentialExtensionKeychainSavePasswordFailureCount :
+        @"IOS.CredentialExtension.KeychainSavePasswordFailureCount",
+    app_group::kCredentialExtensionSaveCredentialFailureCount :
+        @"IOS.CredentialExtension.SaveCredentialFailureCount",
   };
 
   NSUserDefaults* shared_defaults = app_group::GetGroupUserDefaults();
diff --git a/ios/chrome/app/strings/ios_chromium_strings.grd b/ios/chrome/app/strings/ios_chromium_strings.grd
index 256d668..5619edb6 100644
--- a/ios/chrome/app/strings/ios_chromium_strings.grd
+++ b/ios/chrome/app/strings/ios_chromium_strings.grd
@@ -248,7 +248,7 @@
         Help improve Chromium by sending usage statistics and crash reports to Google
       </message>
       <message name="IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE" desc="The title of the welcome screen presented to the user on First Run when the browser is managed [iOS only]">
-        Get more done with Chromium
+        Get More Done with Chromium
       </message>
       <message name="IDS_IOS_FIRST_RUN_WELCOME_SCREEN_SUBTITLE" desc="The subtitle of the welcome screen presented to the user on First Run [iOS only]">
         Get more done with a simple, secure and faster-than-ever Chromium
diff --git a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1 b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1
index cdcb0af..acf44f0 100644
--- a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1
+++ b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1
@@ -1 +1 @@
-97fc733ecba3665821f12569c5ebb9f8648ef94d
\ No newline at end of file
+fceec4744069440900440e6e9072384ce6275156
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings.grd b/ios/chrome/app/strings/ios_google_chrome_strings.grd
index 149ee98..5a7fbdc 100644
--- a/ios/chrome/app/strings/ios_google_chrome_strings.grd
+++ b/ios/chrome/app/strings/ios_google_chrome_strings.grd
@@ -248,7 +248,7 @@
         Help improve Chrome by sending usage statistics and crash reports to Google
       </message>
       <message name="IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE" desc="The title of the welcome screen presented to the user on First Run when the browser is managed [iOS only]">
-        Get more done with Chrome
+        Get More Done with Chrome
       </message>
       <message name="IDS_IOS_FIRST_RUN_WELCOME_SCREEN_SUBTITLE" desc="The subtitle of the welcome screen presented to the user on First Run [iOS only]">
         Get more done with a simple, secure and faster-than-ever Google Chrome
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1 b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1
index 818c952..e4c3a412 100644
--- a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1
+++ b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_ENTERPRISE.png.sha1
@@ -1 +1 @@
-66dcda3a980a4013a303616b838e00b684b2e50b
\ No newline at end of file
+d3941ea3bef92b80be1f8467cf2752cfa77c8294
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd
index 0786088..c01896c 100644
--- a/ios/chrome/app/strings/ios_strings.grd
+++ b/ios/chrome/app/strings/ios_strings.grd
@@ -931,10 +931,10 @@
         By continuing, you agree to the <ph name="BEGIN_LINK">BEGIN_LINK</ph>Terms of Service<ph name="END_LINK">END_LINK</ph>
       </message>
       <message name="IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPAD" desc="The title of the welcome screen presented to the user on First Run when on iPad [iOS only]">
-        Built for your iPad
+        Built for Your iPad
       </message>
       <message name="IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPHONE" desc="The title of the welcome screen presented to the user on First Run when on iPhone [iOS only]">
-        Built for your iPhone
+        Built for Your iPhone
       </message>
       <message name="IDS_IOS_FIRST_RUN_WELCOME_SCREEN_MANAGED" desc="The disclaimer that the browser is managed on the welcome screen presented to the user on First Run when the browser is managed [iOS only]">
         Your administrator has control over Chrome and can access its data
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPAD.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPAD.png.sha1
index 164f403..fdfbc5f 100644
--- a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPAD.png.sha1
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPAD.png.sha1
@@ -1 +1 @@
-b79993768dba15db65f754488e9049e214d3becb
\ No newline at end of file
+c5634dbef5cf527cba81471fb7d32d605a5b3576
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPHONE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPHONE.png.sha1
index 9dc1fcd..86a157d 100644
--- a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPHONE.png.sha1
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_FIRST_RUN_WELCOME_SCREEN_TITLE_IPHONE.png.sha1
@@ -1 +1 @@
-de500fd36939845095fd3c3a211584f57bc5fa97
\ No newline at end of file
+f7364a141c612cf8e506b773716e52b42d5d673a
\ No newline at end of file
diff --git a/ios/chrome/browser/browser_state/browser_state_info_cache.cc b/ios/chrome/browser/browser_state/browser_state_info_cache.cc
index d633e4d..42e982e02 100644
--- a/ios/chrome/browser/browser_state/browser_state_info_cache.cc
+++ b/ios/chrome/browser/browser_state/browser_state_info_cache.cc
@@ -82,7 +82,7 @@
   DictionaryPrefUpdate update(prefs_, prefs::kBrowserStateInfoCache);
   base::DictionaryValue* cache = update.Get();
   std::string key = CacheKeyFromBrowserStatePath(browser_state_path);
-  cache->Remove(key, nullptr);
+  cache->RemoveKey(key);
   sorted_keys_.erase(std::find(sorted_keys_.begin(), sorted_keys_.end(), key));
 
   for (auto& observer : observer_list_)
diff --git a/ios/chrome/browser/crash_report/crash_report_multi_parameter.mm b/ios/chrome/browser/crash_report/crash_report_multi_parameter.mm
index f2f8704..bbc4a78 100644
--- a/ios/chrome/browser/crash_report/crash_report_multi_parameter.mm
+++ b/ios/chrome/browser/crash_report/crash_report_multi_parameter.mm
@@ -39,7 +39,7 @@
 }
 
 - (void)removeValue:(NSString*)key {
-  _dictionary->Remove(base::SysNSStringToUTF8(key).c_str(), nullptr);
+  _dictionary->RemoveKey(base::SysNSStringToUTF8(key).c_str());
   [self updateCrashReport];
 }
 
@@ -64,7 +64,7 @@
   std::string utf8_string = base::SysNSStringToUTF8(key);
   if (_dictionary->GetInteger(utf8_string.c_str(), &value)) {
     if (value <= 1) {
-      _dictionary->Remove(utf8_string.c_str(), nullptr);
+      _dictionary->RemoveKey(utf8_string.c_str());
     } else {
       _dictionary->SetInteger(utf8_string.c_str(), value - 1);
     }
diff --git a/ios/chrome/browser/optimization_guide/BUILD.gn b/ios/chrome/browser/optimization_guide/BUILD.gn
index bf67f24..1060f532 100644
--- a/ios/chrome/browser/optimization_guide/BUILD.gn
+++ b/ios/chrome/browser/optimization_guide/BUILD.gn
@@ -15,7 +15,6 @@
     "//components/keyed_service/ios",
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
-    "//ios/chrome/browser/google",
     "//ios/web",
   ]
 }
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_check_manager_unittest.mm b/ios/chrome/browser/passwords/ios_chrome_password_check_manager_unittest.mm
index 316f637..153f6a4 100644
--- a/ios/chrome/browser/passwords/ios_chrome_password_check_manager_unittest.mm
+++ b/ios/chrome/browser/passwords/ios_chrome_password_check_manager_unittest.mm
@@ -16,9 +16,11 @@
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind.h"
+#include "base/time/time.h"
 #include "components/password_manager/core/browser/bulk_leak_check_service.h"
 #include "components/password_manager/core/browser/mock_bulk_leak_check_service.h"
 #include "components/password_manager/core/browser/mock_password_store.h"
+#include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
 #include "components/password_manager/core/browser/test_password_store.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
@@ -104,16 +106,6 @@
               })));
 }
 
-InsecureCredential MakeInsecureCredential(
-    base::StringPiece signon_realm,
-    base::StringPiece16 username,
-    base::TimeDelta time_since_creation = base::TimeDelta(),
-    InsecureType compromise_type = InsecureType::kLeaked) {
-  return InsecureCredential(std::string(signon_realm), std::u16string(username),
-                            base::Time::Now() - time_since_creation,
-                            compromise_type, password_manager::IsMuted(false));
-}
-
 PasswordForm MakeSavedPassword(
     base::StringPiece signon_realm,
     base::StringPiece16 username,
@@ -133,6 +125,15 @@
   return form;
 }
 
+void AddIssueToForm(PasswordForm* form,
+                    InsecureType type = InsecureType::kLeaked,
+                    base::TimeDelta time_since_creation = base::TimeDelta()) {
+  form->password_issues->insert_or_assign(
+      type, password_manager::InsecurityMetadata(
+                base::Time::Now() - time_since_creation,
+                password_manager::IsMuted(false)));
+}
+
 // Creates matcher for a given compromised credential
 auto ExpectCompromisedCredential(const std::string& signon_realm,
                                  const base::StringPiece16& username,
@@ -194,12 +195,11 @@
 // Sets up the password store with a password and compromised
 // credential. Verifies that the result is matching expectation.
 TEST_F(IOSChromePasswordCheckManagerTest, GetCompromisedCredentials) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername116));
-
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername116, base::TimeDelta::FromMinutes(1),
-      InsecureType::kLeaked));
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername116);
+  AddIssueToForm(&form, InsecureType::kLeaked, base::TimeDelta::FromMinutes(1));
+  store().AddLogin(form);
   RunUntilIdle();
+
   EXPECT_THAT(manager().GetCompromisedCredentials(),
               ElementsAre(ExpectCompromisedCredential(
                   kExampleCom, kUsername116, kPassword116,
@@ -277,9 +277,10 @@
 // Tests whether adding and removing an observer works as expected.
 TEST_F(IOSChromePasswordCheckManagerTest,
        NotifyObserversAboutCompromisedCredentialChanges) {
-  store().AddLogin(MakeSavedPassword(kExampleCom, kUsername116));
-
+  PasswordForm form = MakeSavedPassword(kExampleCom, kUsername116);
+  store().AddLogin(form);
   RunUntilIdle();
+
   StrictMock<MockPasswordCheckManagerObserver> observer;
   manager().AddObserver(&observer);
 
@@ -291,16 +292,16 @@
           kExampleCom, kUsername116, kPassword116,
           base::TimeDelta::FromMinutes(1),
           InsecureCredentialTypeFlags::kCredentialLeaked))));
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername116, base::TimeDelta::FromMinutes(1)));
+  AddIssueToForm(&form, InsecureType::kLeaked, base::TimeDelta::FromMinutes(1));
+  store().UpdateLogin(form);
   RunUntilIdle();
 
   // After an observer is removed it should no longer receive notifications.
   manager().RemoveObserver(&observer);
   EXPECT_CALL(observer, CompromisedCredentialsChanged).Times(0);
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername116, base::TimeDelta::FromMinutes(1),
-      InsecureType::kPhished));
+  AddIssueToForm(&form, InsecureType::kPhished,
+                 base::TimeDelta::FromMinutes(1));
+  store().UpdateLogin(form);
   RunUntilIdle();
 }
 
@@ -330,13 +331,10 @@
 // Tests password deleted.
 TEST_F(IOSChromePasswordCheckManagerTest, DeletePassword) {
   PasswordForm form = MakeSavedPassword(kExampleCom, kUsername116);
+  AddIssueToForm(&form, InsecureType::kLeaked, base::TimeDelta::FromMinutes(1));
   store().AddLogin(form);
   RunUntilIdle();
 
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername116, base::TimeDelta::FromMinutes(1),
-      InsecureType::kLeaked));
-  RunUntilIdle();
   EXPECT_THAT(manager().GetCompromisedCredentials(),
               ElementsAre(ExpectCompromisedCredential(
                   kExampleCom, kUsername116, kPassword116,
@@ -413,14 +411,10 @@
 // Tests compromised password value is updated properly.
 TEST_F(IOSChromePasswordCheckManagerTest, EditCompromisedPassword) {
   PasswordForm form = MakeSavedPassword(kExampleCom, kUsername116);
+  AddIssueToForm(&form, InsecureType::kLeaked, base::TimeDelta::FromMinutes(1));
   store().AddLogin(form);
   RunUntilIdle();
 
-  store().AddInsecureCredential(MakeInsecureCredential(
-      kExampleCom, kUsername116, base::TimeDelta::FromMinutes(1),
-      InsecureType::kLeaked));
-  RunUntilIdle();
-
   manager().EditCompromisedPasswordForm(form, kPassword2);
   RunUntilIdle();
 
diff --git a/ios/chrome/browser/ui/authentication/BUILD.gn b/ios/chrome/browser/ui/authentication/BUILD.gn
index a60df3b..aa98765 100644
--- a/ios/chrome/browser/ui/authentication/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/BUILD.gn
@@ -230,6 +230,7 @@
     "//ios/chrome/browser/ui/authentication/unified_consent:constants",
     "//ios/chrome/browser/ui/authentication/views:views_constants",
     "//ios/chrome/browser/ui/recent_tabs:recent_tabs_ui_constants",
+    "//ios/chrome/browser/ui/settings:constants",
     "//ios/chrome/browser/ui/settings/google_services:constants",
     "//ios/chrome/test:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_egtest.mm b/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_egtest.mm
index 27b7b8e2..90dd4962 100644
--- a/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_egtest.mm
+++ b/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_egtest.mm
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/ios/ios_util.h"
+#import "base/test/ios/wait_util.h"
 #import "components/signin/public/base/account_consistency_method.h"
 #import "ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_constants.h"
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h"
@@ -34,6 +35,8 @@
 using chrome_test_util::SyncSettingsConfirmButton;
 using l10n_util::GetNSString;
 using testing::ButtonWithAccessibilityLabel;
+using base::test::ios::WaitUntilConditionOrTimeout;
+using base::test::ios::kWaitForUIElementTimeout;
 
 namespace {
 
@@ -214,10 +217,18 @@
   // Test the sync error message is visible.
   [[EarlGrey selectElementWithMatcher:GoogleServicesSettingsButton()]
       performAction:grey_tap()];
-  [[EarlGrey
-      selectElementWithMatcher:grey_accessibilityLabel(l10n_util::GetNSString(
-                                   IDS_IOS_SYNC_ERROR_TITLE))]
-      assertWithMatcher:grey_sufficientlyVisible()];
+
+  ConditionBlock condition = ^{
+    NSError* error = nil;
+    [[EarlGrey
+        selectElementWithMatcher:grey_accessibilityLabel(l10n_util::GetNSString(
+                                     IDS_IOS_SYNC_ERROR_TITLE))]
+        assertWithMatcher:grey_sufficientlyVisible()
+                    error:&error];
+    return error == nil;
+  };
+  GREYAssert(WaitUntilConditionOrTimeout(kWaitForUIElementTimeout, condition),
+             @"Could not find the Sync Error text");
 }
 
 // Verifies that advanced sign-in shows an alert dialog when being swiped to
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_mice_egtest.mm b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_mice_egtest.mm
index 6f5b364d..b2f2c0fe 100644
--- a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_mice_egtest.mm
+++ b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_mice_egtest.mm
@@ -9,6 +9,7 @@
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h"
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h"
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h"
+#import "ios/chrome/browser/ui/settings/google_services/google_services_settings_constants.h"
 #import "ios/chrome/browser/ui/settings/google_services/manage_sync_settings_constants.h"
 #import "ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h"
 #include "ios/chrome/grit/ios_strings.h"
@@ -35,6 +36,10 @@
 using chrome_test_util::SettingsMenuPrivacyButton;
 using chrome_test_util::SettingsCollectionView;
 
+namespace {
+NSString* const kPassphrase = @"hello";
+}
+
 // Sign-in interaction tests that work with |kMobileIdentityConsistency|
 // enabled.
 @interface SigninCoordinatorMICETestCase : ChromeTestCase
@@ -239,4 +244,44 @@
   [SigninEarlGrey verifySignedOut];
 }
 
+// Tests that Sync is on when introducing passphrase from settings, after
+// logging in.
+- (void)testSyncOnWhenPassphraseIntroducedAfterSignIn {
+  [ChromeEarlGrey addBookmarkWithSyncPassphrase:kPassphrase];
+  FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1];
+  [SigninEarlGrey addFakeIdentity:fakeIdentity];
+
+  [ChromeEarlGreyUI openSettingsMenu];
+  [ChromeEarlGreyUI tapSettingsMenuButton:PrimarySignInButton()];
+  [SigninEarlGreyUI tapSigninConfirmationDialog];
+
+  [[EarlGrey
+      selectElementWithMatcher:
+          grey_allOf(grey_accessibilityValue(l10n_util::GetNSString(
+                         IDS_IOS_SYNC_ENCRYPTION_DESCRIPTION)),
+                     grey_accessibilityID(kSettingsGoogleSyncAndServicesCellId),
+                     nil)] performAction:grey_tap()];
+
+  // Scroll to bottom of Manage Sync Settings, if necessary.
+  [[EarlGrey selectElementWithMatcher:
+                 grey_allOf(grey_accessibilityID(
+                                kManageSyncTableViewAccessibilityIdentifier),
+                            grey_sufficientlyVisible(), nil)]
+      performAction:grey_scrollToContentEdge(kGREYContentEdgeBottom)];
+
+  // Select Encryption item.
+  [[EarlGrey selectElementWithMatcher:ButtonWithAccessibilityLabelId(
+                                          IDS_IOS_MANAGE_SYNC_ENCRYPTION)]
+      performAction:grey_tap()];
+
+  // Type and submit the sync passphrase.
+  [SigninEarlGreyUI submitSyncPassphrase:kPassphrase];
+
+  [[EarlGrey selectElementWithMatcher:SettingsDoneButton()]
+      performAction:grey_tap()];
+  [ChromeEarlGreyUI openSettingsMenu];
+
+  // Check Sync On label is visible.
+  [SigninEarlGrey verifySyncUIEnabled:YES];
+}
 @end
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey.h b/ios/chrome/browser/ui/authentication/signin_earl_grey.h
index 78a7202..138ba79f 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey.h
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey.h
@@ -54,6 +54,9 @@
 // Induces a GREYAssert if there are no signed-in identities.
 - (void)verifyAuthenticated;
 
+// Induces a GREYAssert if the Sync state does not match |enabled|.
+- (void)verifySyncUIEnabled:(BOOL)enabled;
+
 // Triggers the reauth dialog. This is done through SigninEarlGreyAppInterface,
 // with ShowSigninCommand sent to SceneController, without any UI interaction
 // to open the dialog.
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey.mm b/ios/chrome/browser/ui/authentication/signin_earl_grey.mm
index b4fa80f3..42b41c9 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey.mm
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey.mm
@@ -6,8 +6,11 @@
 
 #import "base/test/ios/wait_util.h"
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey_app_interface.h"
+#import "ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h"
+#include "ios/chrome/grit/ios_strings.h"
 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity.h"
 #import "ios/testing/earl_grey/earl_grey_test.h"
+#include "ui/base/l10n/l10n_util_mac.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -96,6 +99,19 @@
                              @"User is not signed in");
 }
 
+- (void)verifySyncUIEnabled:(BOOL)enabled {
+  NSString* accessibilityString =
+      enabled ? l10n_util::GetNSString(IDS_IOS_SETTING_ON)
+              : l10n_util::GetNSString(IDS_IOS_SETTING_OFF);
+
+  id<GREYMatcher> GetSettingsGoogleSyncAndServicesCellMatcher = grey_allOf(
+      grey_accessibilityValue(accessibilityString),
+      grey_accessibilityID(kSettingsGoogleSyncAndServicesCellId), nil);
+
+  [[EarlGrey
+      selectElementWithMatcher:GetSettingsGoogleSyncAndServicesCellMatcher]
+      assertWithMatcher:grey_sufficientlyVisible()];
+}
 - (void)triggerReauthDialogWithFakeIdentity:(FakeChromeIdentity*)identity {
   [SigninEarlGreyAppInterface triggerReauthDialogWithFakeIdentity:identity];
   GREYWaitForAppToIdle(@"App failed to idle");
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h
index 2b5aab5..5588a1c 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h
@@ -100,6 +100,9 @@
 // Checks that the web sign-in consistency sheet visibility matches |isVisible|.
 + (void)verifyWebSigninIsVisible:(BOOL)isVisible;
 
+// Submits encryption passphrase, if the user is on the Encryption page.
++ (void)submitSyncPassphrase:(NSString*)passphrase;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_EARL_GREY_UI_H_
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm
index 760eb14..e4564ea 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm
@@ -15,6 +15,7 @@
 #import "ios/chrome/browser/ui/authentication/views/views_constants.h"
 #import "ios/chrome/browser/ui/recent_tabs/recent_tabs_constants.h"
 #import "ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller_constants.h"
+#import "ios/chrome/browser/ui/settings/google_services/google_services_settings_constants.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
@@ -315,6 +316,20 @@
       assertWithMatcher:visibilityMatcher];
 }
 
++ (void)submitSyncPassphrase:(NSString*)passphrase {
+  [[EarlGrey selectElementWithMatcher:
+                 grey_accessibilityID(
+                     kSyncEncryptionPassphraseTextFieldAccessibilityIdentifier)]
+      performAction:grey_typeText(passphrase)];
+
+  [[EarlGrey
+      selectElementWithMatcher:grey_allOf(
+                                   grey_kindOfClassName(@"_UIButtonBarButton"),
+                                   ButtonWithAccessibilityLabel(
+                                       l10n_util::GetNSString(
+                                           IDS_IOS_SYNC_DECRYPT_BUTTON)),
+                                   nil)] performAction:grey_tap()];
+}
 #pragma mark - Private
 
 + (void)signOutWithButton:(id<GREYMatcher>)buttonMatcher
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
index 4cce1cd..7fb7478 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -3778,17 +3778,20 @@
 
     if (web::UrlHasWebScheme(link)) {
       // Open in New Tab.
+      UrlLoadParams loadParams = UrlLoadParams::InNewTab(link);
+      loadParams.SetInBackground(YES);
+      loadParams.in_incognito = self.isOffTheRecord;
+      loadParams.append_to = kCurrentTab;
+      loadParams.web_params.referrer = referrer;
+      loadParams.origin_point = [params.view convertPoint:params.location
+                                                   toView:nil];
       UIAction* openNewTab = [actionFactory actionToOpenInNewTabWithBlock:^{
         BrowserViewController* strongSelf = weakSelf;
         if (!strongSelf)
           return;
-        UrlLoadParams params = UrlLoadParams::InNewTab(link);
-        params.SetInBackground(YES);
-        params.in_incognito = strongSelf.isOffTheRecord;
-        params.append_to = kCurrentTab;
-        UrlLoadingBrowserAgent::FromBrowser(strongSelf.browser)->Load(params);
+        UrlLoadingBrowserAgent::FromBrowser(strongSelf.browser)
+            ->Load(loadParams);
       }];
-
       [menuElements addObject:openNewTab];
 
       if (!_isOffTheRecord) {
diff --git a/ios/chrome/browser/ui/browser_view/hider/browser_view_hider_view_controller.mm b/ios/chrome/browser/ui/browser_view/hider/browser_view_hider_view_controller.mm
index 4515f37..58d8bd5 100644
--- a/ios/chrome/browser/ui/browser_view/hider/browser_view_hider_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/hider/browser_view_hider_view_controller.mm
@@ -45,7 +45,7 @@
   self.steadyView.translatesAutoresizingMaskIntoConstraints = NO;
   [self.view addSubview:self.steadyView];
   self.steadyView.colorScheme =
-      [LocationBarSteadyViewColorScheme incognitoScheme];
+      [LocationBarSteadyViewColorScheme standardScheme];
   self.steadyView.locationButton.enabled = NO;
 }
 
diff --git a/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.mm b/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.mm
index 58d92974..2eef5c7b 100644
--- a/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.mm
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.mm
@@ -19,6 +19,7 @@
 namespace {
 // Width of the identity control if nothing is contraining it.
 const CGFloat kIdentityControlMaxWidth = 327;
+const CGFloat kIdentityTopMargin = 16;
 }  // namespace
 
 @interface SigninScreenViewController ()
@@ -62,7 +63,8 @@
 
   [NSLayoutConstraint activateConstraints:@[
     [self.identityControl.topAnchor
-        constraintEqualToAnchor:self.specificContentView.topAnchor],
+        constraintEqualToAnchor:self.specificContentView.topAnchor
+                       constant:kIdentityTopMargin],
     [self.identityControl.centerXAnchor
         constraintEqualToAnchor:self.specificContentView.centerXAnchor],
     [self.identityControl.widthAnchor
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h
index 9c4f046..60ff89a 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h
+++ b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h
@@ -18,7 +18,6 @@
 @property(nonatomic, strong) UIColor* trailingButtonColor;
 
 + (LocationBarSteadyViewColorScheme*)standardScheme;
-+ (LocationBarSteadyViewColorScheme*)incognitoScheme;
 
 @end
 
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm
index def7ec8..51a60ef0 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm
@@ -100,20 +100,6 @@
   return scheme;
 }
 
-+ (instancetype)incognitoScheme {
-  LocationBarSteadyViewColorScheme* scheme =
-      [[LocationBarSteadyViewColorScheme alloc] init];
-
-  // In iOS 12, the overridePreferredInterfaceStyle API is unavailable, so
-  // incognito colors need to be set specifically.
-  // TODO(crbug.com/981889): Clean up after iOS 12 support is dropped.
-  scheme.fontColor = [UIColor colorNamed:kTextPrimaryDarkColor];
-  scheme.placeholderColor = [UIColor colorNamed:kTextfieldPlaceholderDarkColor];
-  scheme.trailingButtonColor = [UIColor colorNamed:kToolbarButtonDarkColor];
-
-  return scheme;
-}
-
 @end
 
 #pragma mark - LocationBarSteadyButton
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm b/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm
index 1144ae6..4bbc83a 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm
@@ -142,8 +142,7 @@
 - (void)setIncognito:(BOOL)incognito {
   _incognito = incognito;
   self.locationBarSteadyView.colorScheme =
-      incognito ? [LocationBarSteadyViewColorScheme incognitoScheme]
-                : [LocationBarSteadyViewColorScheme standardScheme];
+      [LocationBarSteadyViewColorScheme standardScheme];
 }
 
 - (void)setDispatcher:(id<ActivityServiceCommands,
diff --git a/ios/chrome/browser/ui/menu/tab_context_menu_delegate.h b/ios/chrome/browser/ui/menu/tab_context_menu_delegate.h
index 5bdc748..9d7560a 100644
--- a/ios/chrome/browser/ui/menu/tab_context_menu_delegate.h
+++ b/ios/chrome/browser/ui/menu/tab_context_menu_delegate.h
@@ -45,6 +45,9 @@
 // Tells the delegate to edit the bookmark for |URL|.
 - (void)editBookmarkWithURL:(const GURL&)URL;
 
+// Tells the delegate to open the tab grid selection mode.
+- (void)selectTabs;
+
 // Tells the delegate to close the tab with the item identifier |identifier|.
 - (void)closeTabWithIdentifier:(NSString*)identifier incognito:(BOOL)incognito;
 
diff --git a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
index 9ebe999..fc5d219 100644
--- a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
+++ b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
@@ -922,32 +922,13 @@
   [self updateLayerColors];
 }
 
-// CGColor doesn't support iOS 13 dynamic colors, so those must be resolved
-// more often.
+// Updates the colors based on the current trait collection. CGColor doesn't
+// support iOS 13 dynamic colors, so those must be resolved more often.
 - (void)updateLayerColors {
-  if (@available(iOS 13, *)) {
-    [self.traitCollection performAsCurrentTraitCollection:^{
-      _selectionCircleLayer.fillColor =
-          [UIColor colorNamed:kTextfieldBackgroundColor].CGColor;
-    }];
-    return;
-  }
-
-  // Fallback for iOS 12.
-  if (self.incognito) {
-    UIColor* buttonColor = [UIColor colorNamed:kToolbarButtonDarkColor];
-    _addTabActionImageView.tintColor = buttonColor;
-    _reloadActionImageView.tintColor = buttonColor;
-    _closeTabActionImageView.tintColor = buttonColor;
-    _addTabLabel.textColor = buttonColor;
-    _reloadLabel.textColor = buttonColor;
-    _closeTabLabel.textColor = buttonColor;
-    _selectionCircleLayer.fillColor =
-        [UIColor colorNamed:kTextfieldBackgroundDarkColor].CGColor;
-  } else {
+  [self.traitCollection performAsCurrentTraitCollection:^{
     _selectionCircleLayer.fillColor =
         [UIColor colorNamed:kTextfieldBackgroundColor].CGColor;
-  }
+  }];
 }
 
 - (OverscrollAction)actionAtLocation:(CGPoint)location {
diff --git a/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm
index 2f6c552e..4c5e4d9 100644
--- a/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm
+++ b/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm
@@ -619,6 +619,7 @@
   syncErrorItem.text = GetNSString(IDS_IOS_SYNC_ERROR_TITLE);
   syncErrorItem.detailText =
       GetSyncErrorDescriptionForSyncSetupService(self.syncSetupService);
+  syncErrorItem.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
   switch (itemType) {
     case ShowPassphraseDialogErrorItemType:
       // Special case only for the sync passphrase error message. The regular
diff --git a/ios/chrome/browser/ui/settings/password/password_issues_mediator_unittest.mm b/ios/chrome/browser/ui/settings/password/password_issues_mediator_unittest.mm
index 31b1d84..e290dac 100644
--- a/ios/chrome/browser/ui/settings/password/password_issues_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/settings/password/password_issues_mediator_unittest.mm
@@ -38,7 +38,6 @@
 
 using password_manager::PasswordForm;
 using password_manager::InsecureCredential;
-using password_manager::InsecureType;
 using password_manager::TestPasswordStore;
 
 // Sets test password store and returns pointer to it.
@@ -53,14 +52,6 @@
           .get()));
 }
 
-// Returns compromised credential structure.
-InsecureCredential MakeInsecureCredential(base::StringPiece signon_realm,
-                                          base::StringPiece username) {
-  return InsecureCredential(std::string(signon_realm),
-                            base::ASCIIToUTF16(username), base::Time::Now(),
-                            InsecureType::kLeaked,
-                            password_manager::IsMuted(false));
-}
 }  // namespace
 
 // Test class that conforms to PasswordIssuesConsumer in order to test the
@@ -114,13 +105,11 @@
     form.url = GURL(website + "/login");
     form.action = GURL(website + "/action");
     form.username_element = u"email";
-    // TODO(crbug.com/1223022): Once all places that operate changes on forms
-    // via UpdateLogin properly set |password_issues|, setting them to an empty
-    // map should be part of the default constructor.
-    form.password_issues =
-        base::flat_map<InsecureType, password_manager::InsecurityMetadata>();
+    form.password_issues = {
+        {password_manager::InsecureType::kLeaked,
+         password_manager::InsecurityMetadata(
+             base::Time::Now(), password_manager::IsMuted(false))}};
     store()->AddLogin(form);
-    store()->AddInsecureCredential(MakeInsecureCredential(website, username));
   }
 
   TestPasswordStore* store() { return store_.get(); }
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm
index fb4bc58..1499719 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm
+++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm
@@ -49,6 +49,7 @@
 #endif
 
 using password_manager::InsecureType;
+using password_manager::PasswordForm;
 using password_manager::TestPasswordStore;
 using password_manager::MockBulkLeakCheckService;
 using ::testing::Return;
@@ -149,7 +150,14 @@
   void ChangePasswordCheckState(PasswordCheckUIState state) {
     PasswordsTableViewController* passwords_controller =
         static_cast<PasswordsTableViewController*>(controller());
-    NSInteger count = GetTestStore().insecure_credentials().size();
+    NSInteger count = 0;
+    for (const auto& signon_realm_forms : GetTestStore().stored_passwords()) {
+      count += base::ranges::count_if(signon_realm_forms.second,
+                                      [](const PasswordForm& form) {
+                                        return !form.password_issues->empty();
+                                      });
+    }
+
     [passwords_controller setPasswordCheckUIState:state
                         compromisedPasswordsCount:count];
   }
@@ -160,8 +168,9 @@
     RunUntilIdle();
   }
 
-  // Creates and adds a saved password form.
-  void AddSavedForm1() {
+  // Creates and adds a saved password form.  If `is_leakd` is true it marks the
+  // credential as leaked.
+  void AddSavedForm1(bool is_leaked = false) {
     auto form = std::make_unique<password_manager::PasswordForm>();
     form->url = GURL("http://www.example.com/accounts/LoginAuth");
     form->action = GURL("http://www.example.com/accounts/Login");
@@ -173,11 +182,19 @@
     form->signon_realm = "http://www.example.com/";
     form->scheme = password_manager::PasswordForm::Scheme::kHtml;
     form->blocked_by_user = false;
-    // TODO(crbug.com/1223022): Once all places that operate changes on forms
-    // via UpdateLogin properly set |password_issues|, setting them to an empty
-    // map should be part of the default constructor.
-    form->password_issues =
-        base::flat_map<InsecureType, password_manager::InsecurityMetadata>();
+
+    if (is_leaked) {
+      form->password_issues = {
+          {InsecureType::kLeaked,
+           password_manager::InsecurityMetadata(
+               base::Time::Now(), password_manager::IsMuted(false))}};
+    } else {
+      // TODO(crbug.com/1223022): Once all places that operate changes on forms
+      // via UpdateLogin properly set |password_issues|, setting them to an
+      // empty map should be part of the default constructor.
+      form->password_issues =
+          base::flat_map<InsecureType, password_manager::InsecurityMetadata>();
+    }
     AddPasswordForm(std::move(form));
   }
 
@@ -246,13 +263,6 @@
     AddPasswordForm(std::move(form));
   }
 
-  void AddCompromisedCredential() {
-    GetTestStore().AddInsecureCredential(password_manager::InsecureCredential(
-        "http://www.example.com/", u"test@egmail.com", base::Time::Now(),
-        InsecureType::kLeaked, password_manager::IsMuted(false)));
-    RunUntilIdle();
-  }
-
   // Deletes the item at (row, section) and wait util idle.
   void deleteItemAndWait(int section, int row) {
     PasswordsTableViewController* passwords_controller =
@@ -640,8 +650,7 @@
 
 // Test verifies unsafe state of password check cell.
 TEST_F(PasswordsTableViewControllerTest, PasswordCheckStateUnSafe) {
-  AddSavedForm1();
-  AddCompromisedCredential();
+  AddSavedForm1(/*has_password_issues=*/true);
   ChangePasswordCheckState(PasswordCheckStateUnSafe);
 
   CheckTextCellTextWithId(IDS_IOS_CHECK_PASSWORDS_NOW_BUTTON,
diff --git a/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator_unittest.mm b/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator_unittest.mm
index 58757f5..037f04d 100644
--- a/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator_unittest.mm
@@ -177,8 +177,9 @@
     [defaults removeObjectForKey:kIOSChromeUpgradeURLKey];
   }
 
-  // Creates and adds a saved password form.
-  void AddSavedForm() {
+  // Creates and adds a saved password form. If `is_leaked` is true it marks the
+  // credential as leaked.
+  void AddSavedForm(bool is_leaked = false) {
     auto form = std::make_unique<password_manager::PasswordForm>();
     form->url = GURL("http://www.example.com/accounts/LoginAuth");
     form->action = GURL("http://www.example.com/accounts/Login");
@@ -190,11 +191,18 @@
     form->signon_realm = "http://www.example.com/";
     form->scheme = password_manager::PasswordForm::Scheme::kHtml;
     form->blocked_by_user = false;
-    // TODO(crbug.com/1223022): Once all places that operate changes on forms
-    // via UpdateLogin properly set |password_issues|, setting them to an empty
-    // map should be part of the default constructor.
-    form->password_issues =
-        base::flat_map<InsecureType, password_manager::InsecurityMetadata>();
+    if (is_leaked) {
+      form->password_issues = {
+          {InsecureType::kLeaked,
+           password_manager::InsecurityMetadata(
+               base::Time::Now(), password_manager::IsMuted(false))}};
+    } else {
+      // TODO(crbug.com/1223022): Once all places that operate changes on forms
+      // via UpdateLogin properly set |password_issues|, setting them to an
+      // empty map should be part of the default constructor.
+      form->password_issues =
+          base::flat_map<InsecureType, password_manager::InsecurityMetadata>();
+    }
     AddPasswordForm(std::move(form));
   }
 
@@ -205,13 +213,6 @@
             .get());
   }
 
-  void AddCompromisedCredential() {
-    GetTestStore().AddInsecureCredential(password_manager::InsecureCredential(
-        "http://www.example.com/", u"test@egmail.com", base::Time::Now(),
-        InsecureType::kLeaked, password_manager::IsMuted(false)));
-    RunUntilIdle();
-  }
-
  protected:
   web::WebTaskEnvironment environment_;
   std::unique_ptr<TestChromeBrowserState> browser_state_;
@@ -376,16 +377,14 @@
 }
 
 TEST_F(SafetyCheckMediatorTest, PasswordCheckUnSafeCheck) {
-  AddSavedForm();
-  AddCompromisedCredential();
+  AddSavedForm(/*is_leaked=*/true);
   mediator_.currentPasswordCheckState = PasswordCheckState::kRunning;
   [mediator_ passwordCheckStateDidChange:PasswordCheckState::kIdle];
   EXPECT_EQ(mediator_.passwordCheckRowState, PasswordCheckRowStateUnSafe);
 }
 
 TEST_F(SafetyCheckMediatorTest, PasswordCheckUnSafeUI) {
-  AddSavedForm();
-  AddCompromisedCredential();
+  AddSavedForm(/*is_leaked=*/true);
   mediator_.passwordCheckRowState = PasswordCheckRowStateUnSafe;
   [mediator_ reconfigurePasswordCheckItem];
   EXPECT_NSEQ(mediator_.passwordCheckItem.detailText,
diff --git a/ios/chrome/browser/ui/settings/sync/BUILD.gn b/ios/chrome/browser/ui/settings/sync/BUILD.gn
index 992e8a2..b66ca64 100644
--- a/ios/chrome/browser/ui/settings/sync/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/sync/BUILD.gn
@@ -114,6 +114,7 @@
     "//components/strings:components_strings_grit",
     "//ios/chrome/app/strings",
     "//ios/chrome/browser/ui/authentication:eg_test_support+eg2",
+    "//ios/chrome/browser/ui/settings:constants",
     "//ios/chrome/browser/ui/settings/google_services:constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller_egtest.mm b/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller_egtest.mm
index 5eb9edf..765fa27 100644
--- a/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller_egtest.mm
+++ b/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller_egtest.mm
@@ -8,6 +8,7 @@
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h"
 #import "ios/chrome/browser/ui/settings/google_services/google_services_settings_constants.h"
 #import "ios/chrome/browser/ui/settings/google_services/manage_sync_settings_constants.h"
+#import "ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
@@ -29,6 +30,10 @@
 using chrome_test_util::SyncSettingsConfirmButton;
 using chrome_test_util::PrimarySignInButton;
 
+namespace {
+NSString* const kPassphrase = @"hello";
+}
+
 @interface SyncEncryptionPassphraseTestCase : ChromeTestCase
 @end
 
@@ -36,7 +41,7 @@
 
 // Tests to open the sync passphrase view, and to close it.
 - (void)testShowSyncPassphraseAndDismiss {
-  [ChromeEarlGrey addBookmarkWithSyncPassphrase:@"hello"];
+  [ChromeEarlGrey addBookmarkWithSyncPassphrase:kPassphrase];
   // Signin.
   FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1];
   [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity];
@@ -56,7 +61,7 @@
   if (![ChromeEarlGrey areMultipleWindowsSupported])
     EARL_GREY_TEST_DISABLED(@"Multiple windows can't be opened.");
 
-  [ChromeEarlGrey addBookmarkWithSyncPassphrase:@"hello"];
+  [ChromeEarlGrey addBookmarkWithSyncPassphrase:kPassphrase];
   // Signin.
   FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1];
   [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity];
@@ -85,7 +90,7 @@
 
 // Tests entering sync passphrase from the sign-in flow.
 - (void)testEnterSyncPassphraseInSignIn {
-  [ChromeEarlGrey addBookmarkWithSyncPassphrase:@"hello"];
+  [ChromeEarlGrey addBookmarkWithSyncPassphrase:kPassphrase];
   // Access advanced settings sign-in.
   FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1];
   [SigninEarlGrey addFakeIdentity:fakeIdentity];
@@ -105,18 +110,9 @@
                                           IDS_IOS_MANAGE_SYNC_ENCRYPTION)]
       performAction:grey_tap()];
 
-  [[EarlGrey selectElementWithMatcher:
-                 grey_accessibilityID(
-                     kSyncEncryptionPassphraseTextFieldAccessibilityIdentifier)]
-      performAction:grey_typeText(@"hello")];
+  // Type and submit the sync passphrase.
+  [SigninEarlGreyUI submitSyncPassphrase:kPassphrase];
 
-  [[EarlGrey
-      selectElementWithMatcher:grey_allOf(
-                                   grey_kindOfClassName(@"_UIButtonBarButton"),
-                                   ButtonWithAccessibilityLabel(
-                                       l10n_util::GetNSString(
-                                           IDS_IOS_SYNC_DECRYPT_BUTTON)),
-                                   nil)] performAction:grey_tap()];
   [[EarlGrey selectElementWithMatcher:SyncSettingsConfirmButton()]
       performAction:grey_tap()];
 
@@ -124,4 +120,23 @@
   [SigninEarlGrey verifySignedInWithFakeIdentity:fakeIdentity];
 }
 
+// Tests Sync is on after opening settings from the Infobar and entering the
+// passphrase.
+- (void)testShowAddSyncPassphrphrase {
+  [ChromeEarlGrey addBookmarkWithSyncPassphrase:kPassphrase];
+  // Signin.
+  FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1];
+  [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity];
+  [ChromeEarlGrey openNewTab];
+  [[EarlGrey selectElementWithMatcher:ButtonWithAccessibilityLabelId(
+                                          IDS_IOS_SYNC_ENTER_PASSPHRASE_BUTTON)]
+      performAction:grey_tap()];
+
+  // Type and submit the sync passphrase.
+  [SigninEarlGreyUI submitSyncPassphrase:kPassphrase];
+  [ChromeEarlGreyUI openSettingsMenu];
+  // Check Sync On label is visible and user is signed in.
+  [SigninEarlGrey verifySignedInWithFakeIdentity:fakeIdentity];
+  [SigninEarlGrey verifySyncUIEnabled:YES];
+}
 @end
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm
index 5c404ed..d6858d4e 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm
@@ -191,7 +191,13 @@
 }
 
 - (NSArray*)accessibilityCustomActions {
-  // Each cell has 2 custom actions, which is accessible through swiping. The
+  if (IsTabsBulkActionsEnabled() && self.isInSelectionMode) {
+    // If the cell is in tab grid selection mode, only allow toggling the
+    // selection state.
+    return nil;
+  }
+
+  // In normal cell mode, there are 2 actions, accessible through swiping. The
   // default is to select the cell. Another is to close the cell.
   return @[ [[UIAccessibilityCustomAction alloc]
       initWithName:l10n_util::GetNSString(IDS_IOS_TAB_SWITCHER_CLOSE_TAB)
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_context_menu_helper.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_context_menu_helper.mm
index 1e8ca56..a5c2c4f6 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_context_menu_helper.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_context_menu_helper.mm
@@ -141,6 +141,12 @@
         }
 
         if ([weakSelf.contextMenuDelegate
+                respondsToSelector:@selector(selectTabs)]) {
+          [menuElements addObject:[actionFactory actionToSelectTabsWithBlock:^{
+                          [weakSelf.contextMenuDelegate selectTabs];
+                        }]];
+        }
+        if ([weakSelf.contextMenuDelegate
                 respondsToSelector:@selector(closeTabWithIdentifier:
                                                           incognito:)]) {
           [menuElements addObject:[actionFactory actionToCloseTabWithBlock:^{
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
index 90d57e4..ec51ab1 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
@@ -1025,6 +1025,12 @@
   }
 }
 
+- (void)selectTabs {
+  base::RecordAction(
+      base::UserMetricsAction("MobileTabGridTabContextMenuSelectTabs"));
+  self.baseViewController.tabGridMode = TabGridModeSelection;
+}
+
 - (void)removeSessionAtTableSectionWithIdentifier:(NSInteger)sectionIdentifier {
   [self.baseViewController.remoteTabsViewController
       removeSessionAtTableSectionWithIdentifier:sectionIdentifier];
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm
index edd4c68e..6a4b157 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm
@@ -9,6 +9,7 @@
 #include <memory>
 
 #include "base/bind.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics.h"
 #include "base/metrics/user_metrics_action.h"
@@ -370,6 +371,8 @@
 - (void)closeItemsWithIDs:(NSArray<NSString*>*)itemIDs {
   __block bool allTabsClosed = true;
 
+  base::UmaHistogramCounts100("IOS.TabGrid.Selection.CloseTabs", itemIDs.count);
+
   self.webStateList->PerformBatchOperation(
       base::BindOnce(^(WebStateList* list) {
         for (NSString* itemID in itemIDs) {
@@ -470,7 +473,9 @@
                                                     title:item.title];
     [URLs addObject:URL];
   }
-
+  base::RecordAction(
+      base::UserMetricsAction("MobileTabGridSelectionShareTabs"));
+  base::UmaHistogramCounts100("IOS.TabGrid.Selection.ShareTabs", items.count);
   [self.delegate tabGridMediator:self shareURLs:URLs anchor:buttonAnchor];
 }
 
@@ -738,6 +743,8 @@
   if (!_readingListHandler) {
     return;
   }
+  base::UmaHistogramCounts100("IOS.TabGrid.Selection.AddToReadingList",
+                              items.count);
 
   NSArray<URLWithTitle*>* URLs = [self urlsWithTitleFromItemIDs:items];
 
@@ -753,6 +760,8 @@
   if (!bookmarkHandler) {
     return;
   }
+  base::UmaHistogramCounts100("IOS.TabGrid.Selection.AddToBookmarks",
+                              items.count);
 
   NSArray<URLWithTitle*>* URLs = [self urlsWithTitleFromItemIDs:items];
 
diff --git a/ios/chrome/common/app_group/app_group_metrics.h b/ios/chrome/common/app_group/app_group_metrics.h
index 7ce9738..6509197 100644
--- a/ios/chrome/common/app_group/app_group_metrics.h
+++ b/ios/chrome/common/app_group/app_group_metrics.h
@@ -70,6 +70,13 @@
 // for a password with a nil argument.
 extern NSString* const kCredentialExtensionFetchPasswordNilArgumentCount;
 
+// An app_group key for the number of times saving a newly generated password
+// to the keychain failed.
+extern NSString* const kCredentialExtensionKeychainSavePasswordFailureCount;
+
+// An app_group key for the number of times saving a new credential failed.
+extern NSString* const kCredentialExtensionSaveCredentialFailureCount;
+
 // Offsets the sessionID to avoid collision. The sessionID is limited to 1<<23.
 int AppGroupSessionID(int sessionID, AppGroupApplications application);
 
diff --git a/ios/chrome/common/app_group/app_group_metrics.mm b/ios/chrome/common/app_group/app_group_metrics.mm
index f9c9ac1..dd37a60 100644
--- a/ios/chrome/common/app_group/app_group_metrics.mm
+++ b/ios/chrome/common/app_group/app_group_metrics.mm
@@ -53,6 +53,12 @@
 NSString* const kCredentialExtensionFetchPasswordNilArgumentCount =
     @"CredentialExtensionFetchPasswordNilArgumentCount";
 
+NSString* const kCredentialExtensionKeychainSavePasswordFailureCount =
+    @"CredentialExtensionKeychainSavePasswordFailureCount";
+
+NSString* const kCredentialExtensionSaveCredentialFailureCount =
+    @"CredentialExtensionSaveCredentialFailureCount";
+
 // To avoid collision between session_ids from chrome or external
 // components, the session ID is offset depending on the application.
 int AppGroupSessionID(int session_id, AppGroupApplications application) {
diff --git a/ios/chrome/common/ui/colors/resources/BUILD.gn b/ios/chrome/common/ui/colors/resources/BUILD.gn
index 815f931..cb8d303 100644
--- a/ios/chrome/common/ui/colors/resources/BUILD.gn
+++ b/ios/chrome/common/ui/colors/resources/BUILD.gn
@@ -7,16 +7,12 @@
 group("resources") {
   deps = [
     ":background_color",
-    ":background_dark_color",
     ":blue_color",
-    ":blue_dark_color",
     ":blue_halo_color",
     ":close_button_color",
-    ":close_button_dark_color",
     ":disabled_tint_color",
     ":favicon_background_color",
     ":green_color",
-    ":green_dark_color",
     ":grey_100_color",
     ":grey_200_color",
     ":grey_300_color",
@@ -34,27 +30,18 @@
     ":placeholder_image_tint_color",
     ":primary_background_color",
     ":red_color",
-    ":red_dark_color",
     ":scrim_background_color",
     ":secondary_background_color",
-    ":secondary_background_dark_color",
     ":separator_color",
     ":solid_button_text_color",
     ":table_view_row_highlight_color",
-    ":table_view_row_highlight_dark_color",
     ":tertiary_background_color",
-    ":tertiary_background_dark_color",
     ":text_primary_color",
-    ":text_primary_dark_color",
     ":text_secondary_color",
-    ":text_secondary_dark_color",
     ":text_tertiary_color",
     ":textfield_background_color",
-    ":textfield_background_dark_color",
     ":textfield_placeholder_color",
-    ":textfield_placeholder_dark_color",
     ":toolbar_button_color",
-    ":toolbar_button_dark_color",
     ":toolbar_shadow_color",
   ]
 }
@@ -63,18 +50,10 @@
   sources = [ "background_color.colorset/Contents.json" ]
 }
 
-colorset("background_dark_color") {
-  sources = [ "background_dark_color.colorset/Contents.json" ]
-}
-
 colorset("blue_color") {
   sources = [ "blue_color.colorset/Contents.json" ]
 }
 
-colorset("blue_dark_color") {
-  sources = [ "blue_dark_color.colorset/Contents.json" ]
-}
-
 colorset("blue_halo_color") {
   sources = [ "blue_halo_color.colorset/Contents.json" ]
 }
@@ -83,10 +62,6 @@
   sources = [ "close_button_color.colorset/Contents.json" ]
 }
 
-colorset("close_button_dark_color") {
-  sources = [ "close_button_dark_color.colorset/Contents.json" ]
-}
-
 colorset("disabled_tint_color") {
   sources = [ "disabled_tint_color.colorset/Contents.json" ]
 }
@@ -99,10 +74,6 @@
   sources = [ "green_color.colorset/Contents.json" ]
 }
 
-colorset("green_dark_color") {
-  sources = [ "green_dark_color.colorset/Contents.json" ]
-}
-
 colorset("grey_50_color") {
   sources = [ "grey_50_color.colorset/Contents.json" ]
 }
@@ -147,10 +118,6 @@
   sources = [ "red_color.colorset/Contents.json" ]
 }
 
-colorset("red_dark_color") {
-  sources = [ "red_dark_color.colorset/Contents.json" ]
-}
-
 colorset("mdc_ink_color") {
   sources = [ "mdc_ink_color.colorset/Contents.json" ]
 }
@@ -179,18 +146,10 @@
   sources = [ "table_view_row_highlight_color.colorset/Contents.json" ]
 }
 
-colorset("table_view_row_highlight_dark_color") {
-  sources = [ "table_view_row_highlight_dark_color.colorset/Contents.json" ]
-}
-
 colorset("tertiary_background_color") {
   sources = [ "tertiary_background_color.colorset/Contents.json" ]
 }
 
-colorset("tertiary_background_dark_color") {
-  sources = [ "tertiary_background_dark_color.colorset/Contents.json" ]
-}
-
 colorset("text_tertiary_color") {
   sources = [ "text_tertiary_color.colorset/Contents.json" ]
 }
@@ -199,42 +158,22 @@
   sources = [ "text_primary_color.colorset/Contents.json" ]
 }
 
-colorset("text_primary_dark_color") {
-  sources = [ "text_primary_dark_color.colorset/Contents.json" ]
-}
-
 colorset("text_secondary_color") {
   sources = [ "text_secondary_color.colorset/Contents.json" ]
 }
 
-colorset("text_secondary_dark_color") {
-  sources = [ "text_secondary_dark_color.colorset/Contents.json" ]
-}
-
 colorset("textfield_placeholder_color") {
   sources = [ "textfield_placeholder_color.colorset/Contents.json" ]
 }
 
-colorset("textfield_placeholder_dark_color") {
-  sources = [ "textfield_placeholder_dark_color.colorset/Contents.json" ]
-}
-
 colorset("textfield_background_color") {
   sources = [ "textfield_background_color.colorset/Contents.json" ]
 }
 
-colorset("textfield_background_dark_color") {
-  sources = [ "textfield_background_dark_color.colorset/Contents.json" ]
-}
-
 colorset("toolbar_button_color") {
   sources = [ "toolbar_button_color.colorset/Contents.json" ]
 }
 
-colorset("toolbar_button_dark_color") {
-  sources = [ "toolbar_button_dark_color.colorset/Contents.json" ]
-}
-
 colorset("toolbar_shadow_color") {
   sources = [ "toolbar_shadow_color.colorset/Contents.json" ]
 }
@@ -243,10 +182,6 @@
   sources = [ "secondary_background_color.colorset/Contents.json" ]
 }
 
-colorset("secondary_background_dark_color") {
-  sources = [ "secondary_background_dark_color.colorset/Contents.json" ]
-}
-
 colorset("primary_background_color") {
   sources = [ "primary_background_color.colorset/Contents.json" ]
 }
diff --git a/ios/chrome/common/ui/colors/resources/background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/background_color.colorset/Contents.json
index 0da6db5..241c3635 100644
--- a/ios/chrome/common/ui/colors/resources/background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "1.000",
           "alpha" : "1.000",
-          "blue" : "1.000",
-          "green" : "1.000"
+          "red" : "1.000",
+          "green" : "1.000",
+          "blue" : "1.000"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0.208",
           "alpha" : "1.000",
-          "blue" : "0.227",
-          "green" : "0.216"
+          "red" : "0.208",
+          "green" : "0.216",
+          "blue" : "0.227"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/background_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/background_dark_color.colorset/Contents.json
deleted file mode 100644
index 4fa1733..0000000
--- a/ios/chrome/common/ui/colors/resources/background_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0.208",
-          "alpha" : "1.000",
-          "blue" : "0.227",
-          "green" : "0.216"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/blue_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/blue_color.colorset/Contents.json
index b094de8..45d81e3 100644
--- a/ios/chrome/common/ui/colors/resources/blue_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/blue_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x1A",
           "alpha" : "1.000",
-          "blue" : "0xE8",
-          "green" : "0x73"
+          "red" : "0x1A",
+          "green" : "0x73",
+          "blue" : "0xE8"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x8A",
           "alpha" : "1.000",
-          "blue" : "0xF8",
-          "green" : "0xB4"
+          "red" : "0x8A",
+          "green" : "0xB4",
+          "blue" : "0xF8"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/blue_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/blue_dark_color.colorset/Contents.json
deleted file mode 100644
index a1400f73..0000000
--- a/ios/chrome/common/ui/colors/resources/blue_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0x8A",
-          "alpha" : "1.000",
-          "blue" : "0xF8",
-          "green" : "0xB4"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/blue_halo_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/blue_halo_color.colorset/Contents.json
index 3da42cb..a0afa05e 100644
--- a/ios/chrome/common/ui/colors/resources/blue_halo_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/blue_halo_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xE8",
           "alpha" : "1.000",
-          "blue" : "0xFE",
-          "green" : "0xF0"
+          "red" : "0xE8",
+          "green" : "0xF0",
+          "blue" : "0xFE"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x8A",
           "alpha" : "0.240",
-          "blue" : "0xF9",
-          "green" : "0xB4"
+          "red" : "0x8A",
+          "green" : "0xB4",
+          "blue" : "0xF9"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/close_button_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/close_button_color.colorset/Contents.json
index ebc0872..d4be10e 100644
--- a/ios/chrome/common/ui/colors/resources/close_button_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/close_button_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x5F",
           "alpha" : "1.000",
-          "blue" : "0x67",
-          "green" : "0x63"
+          "red" : "0x5F",
+          "green" : "0x63",
+          "blue" : "0x67"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xBD",
           "alpha" : "1.000",
-          "blue" : "0xC5",
-          "green" : "0xC1"
+          "red" : "0xBD",
+          "green" : "0xC1",
+          "blue" : "0xC5"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/close_button_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/close_button_dark_color.colorset/Contents.json
deleted file mode 100644
index bcadcb8..0000000
--- a/ios/chrome/common/ui/colors/resources/close_button_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0.855",
-          "alpha" : "1.000",
-          "blue" : "0.878",
-          "green" : "0.863"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/disabled_tint_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/disabled_tint_color.colorset/Contents.json
index e80d39e..8d46b73 100644
--- a/ios/chrome/common/ui/colors/resources/disabled_tint_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/disabled_tint_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xA0",
           "alpha" : "1.000",
-          "blue" : "0xA0",
-          "green" : "0xA0"
+          "red" : "0xA0",
+          "green" : "0xA0",
+          "blue" : "0xA0"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x70",
           "alpha" : "1.000",
-          "blue" : "0x70",
-          "green" : "0x70"
+          "red" : "0x70",
+          "green" : "0x70",
+          "blue" : "0x70"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/favicon_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/favicon_background_color.colorset/Contents.json
index cdaf02a..27917399 100644
--- a/ios/chrome/common/ui/colors/resources/favicon_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/favicon_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xF1",
           "alpha" : "1.000",
-          "blue" : "0xF4",
-          "green" : "0xF3"
+          "red" : "0xF1",
+          "green" : "0xF3",
+          "blue" : "0xF4"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x33",
           "alpha" : "1.000",
-          "blue" : "0x33",
-          "green" : "0x33"
+          "red" : "0x33",
+          "green" : "0x33",
+          "blue" : "0x33"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/green_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/green_color.colorset/Contents.json
index ca15f7d..4ee737fa 100644
--- a/ios/chrome/common/ui/colors/resources/green_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/green_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x16",
           "alpha" : "1.000",
-          "blue" : "0x37",
-          "green" : "0x80"
+          "red" : "0x16",
+          "green" : "0x80",
+          "blue" : "0x37"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x5B",
           "alpha" : "1.000",
-          "blue" : "0x74",
-          "green" : "0xB9"
+          "red" : "0x5B",
+          "green" : "0xB9",
+          "blue" : "0x74"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/green_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/green_dark_color.colorset/Contents.json
deleted file mode 100644
index 60a05784..0000000
--- a/ios/chrome/common/ui/colors/resources/green_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0x5B",
-          "alpha" : "1.000",
-          "blue" : "0x74",
-          "green" : "0xB9"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/grey_100_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_100_color.colorset/Contents.json
index 0184abb..57af440 100644
--- a/ios/chrome/common/ui/colors/resources/grey_100_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_100_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0xF1",
           "alpha": "1.000",
-          "blue": "0xF4",
-          "green": "0xF3"
+          "red": "0xF1",
+          "green": "0xF3",
+          "blue": "0xF4"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0x46",
           "alpha": "1.000",
-          "blue": "0x4E",
-          "green": "0x4B"
+          "red": "0x46",
+          "green": "0x4B",
+          "blue": "0x4E"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_200_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_200_color.colorset/Contents.json
index 759844c..d9f11df 100644
--- a/ios/chrome/common/ui/colors/resources/grey_200_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_200_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xE8",
           "alpha" : "1.000",
-          "blue" : "0xED",
-          "green" : "0xEA"
+          "red" : "0xE8",
+          "green" : "0xEA",
+          "blue" : "0xED"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x5F",
           "alpha" : "1.000",
-          "blue" : "0x67",
-          "green" : "0x63"
+          "red" : "0x5F",
+          "green" : "0x63",
+          "blue" : "0x67"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_300_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_300_color.colorset/Contents.json
index edc3511..d4d2c3a 100644
--- a/ios/chrome/common/ui/colors/resources/grey_300_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_300_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xDA",
           "alpha" : "1.000",
-          "blue" : "0xE0",
-          "green" : "0xDC"
+          "red" : "0xDA",
+          "green" : "0xDC",
+          "blue" : "0xE0"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x80",
           "alpha" : "1.000",
-          "blue" : "0x8A",
-          "green" : "0x86"
+          "red" : "0x80",
+          "green" : "0x86",
+          "blue" : "0x8A"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_400_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_400_color.colorset/Contents.json
index 6ec34fe..38a84ba 100644
--- a/ios/chrome/common/ui/colors/resources/grey_400_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_400_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xBD",
           "alpha" : "1.000",
-          "blue" : "0xC5",
-          "green" : "0xC1"
+          "red" : "0xBD",
+          "green" : "0xC1",
+          "blue" : "0xC5"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x9A",
           "alpha" : "1.000",
-          "blue" : "0xA6",
-          "green" : "0xA0"
+          "red" : "0x9A",
+          "green" : "0xA0",
+          "blue" : "0xA6"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_500_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_500_color.colorset/Contents.json
index 5517055..5129798 100644
--- a/ios/chrome/common/ui/colors/resources/grey_500_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_500_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x9A",
           "alpha" : "1.000",
-          "blue" : "0xA6",
-          "green" : "0xA0"
+          "red" : "0x9A",
+          "green" : "0xA0",
+          "blue" : "0xA6"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xBD",
           "alpha" : "1.000",
-          "blue" : "0xC5",
-          "green" : "0xC1"
+          "red" : "0xBD",
+          "green" : "0xC1",
+          "blue" : "0xC5"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_50_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_50_color.colorset/Contents.json
index 2811f9c..a9a6780 100644
--- a/ios/chrome/common/ui/colors/resources/grey_50_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_50_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xF8",
           "alpha" : "1.000",
-          "blue" : "0xFA",
-          "green" : "0xF9"
+          "red" : "0xF8",
+          "green" : "0xF9",
+          "blue" : "0xFA"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x3C",
           "alpha" : "1.000",
-          "blue" : "0x43",
-          "green" : "0x40"
+          "red" : "0x3C",
+          "green" : "0x40",
+          "blue" : "0x43"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_600_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_600_color.colorset/Contents.json
index dd9f456..12e5711 100644
--- a/ios/chrome/common/ui/colors/resources/grey_600_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_600_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x80",
           "alpha" : "1.000",
-          "blue" : "0x8A",
-          "green" : "0x86"
+          "red" : "0x80",
+          "green" : "0x86",
+          "blue" : "0x8A"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xDA",
           "alpha" : "1.000",
-          "blue" : "0xE0",
-          "green" : "0xDC"
+          "red" : "0xDA",
+          "green" : "0xDC",
+          "blue" : "0xE0"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_700_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_700_color.colorset/Contents.json
index da9b166..cd11e70 100644
--- a/ios/chrome/common/ui/colors/resources/grey_700_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_700_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x5F",
           "alpha" : "1.000",
-          "blue" : "0x67",
-          "green" : "0x63"
+          "red" : "0x5F",
+          "green" : "0x63",
+          "blue" : "0x67"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xE8",
           "alpha" : "1.000",
-          "blue" : "0xED",
-          "green" : "0xEA"
+          "red" : "0xE8",
+          "green" : "0xEA",
+          "blue" : "0xED"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_800_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_800_color.colorset/Contents.json
index 6d0be7f..8780345 100644
--- a/ios/chrome/common/ui/colors/resources/grey_800_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_800_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x3C",
           "alpha" : "1.000",
-          "blue" : "0x43",
-          "green" : "0x40"
+          "red" : "0x3C",
+          "green" : "0x40",
+          "blue" : "0x43"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xF1",
           "alpha" : "1.000",
-          "blue" : "0xF4",
-          "green" : "0xF3"
+          "red" : "0xF1",
+          "green" : "0xF3",
+          "blue" : "0xF4"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grey_900_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_900_color.colorset/Contents.json
index 53a771e..544b98f 100644
--- a/ios/chrome/common/ui/colors/resources/grey_900_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grey_900_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x20",
           "alpha" : "1.000",
-          "blue" : "0x24",
-          "green" : "0x21"
+          "red" : "0x20",
+          "green" : "0x21",
+          "blue" : "0x24"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xF8",
           "alpha" : "1.000",
-          "blue" : "0xFA",
-          "green" : "0xF9"
+          "red" : "0xF8",
+          "green" : "0xF9",
+          "blue" : "0xFA"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grouped_primary_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grouped_primary_background_color.colorset/Contents.json
index f1f5bfa..cb96176 100644
--- a/ios/chrome/common/ui/colors/resources/grouped_primary_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grouped_primary_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0xF1",
           "alpha": "1.000",
-          "blue": "0xF4",
-          "green": "0xF3"
+          "red": "0xF1",
+          "green": "0xF3",
+          "blue": "0xF4"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0x20",
           "alpha": "1.000",
-          "blue": "0x24",
-          "green": "0x21"
+          "red": "0x20",
+          "green": "0x21",
+          "blue": "0x24"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/grouped_secondary_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grouped_secondary_background_color.colorset/Contents.json
index 0d5ff736..011aa719 100644
--- a/ios/chrome/common/ui/colors/resources/grouped_secondary_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/grouped_secondary_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0xFF",
           "alpha": "1.000",
-          "blue": "0xFF",
-          "green": "0xFF"
+          "red": "0xFF",
+          "green": "0xFF",
+          "blue": "0xFF"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0x35",
           "alpha": "1.000",
-          "blue": "0x39",
-          "green": "0x37"
+          "red": "0x35",
+          "green": "0x37",
+          "blue": "0x39"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/mdc_ink_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/mdc_ink_color.colorset/Contents.json
index a5fefee..fc0cb9e 100644
--- a/ios/chrome/common/ui/colors/resources/mdc_ink_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/mdc_ink_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xFF",
           "alpha" : "0.200",
-          "blue" : "0xFF",
-          "green" : "0xFF"
+          "red" : "0xFF",
+          "green" : "0xFF",
+          "blue" : "0xFF"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/mdc_secondary_ink_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/mdc_secondary_ink_color.colorset/Contents.json
index 0c7d5e9..945f190a 100644
--- a/ios/chrome/common/ui/colors/resources/mdc_secondary_ink_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/mdc_secondary_ink_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x00",
           "alpha" : "0.06",
-          "blue" : "0x00",
-          "green" : "0x00"
+          "red" : "0x00",
+          "green" : "0x00",
+          "blue" : "0x00"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xFF",
           "alpha" : "0.06",
-          "blue" : "0xFF",
-          "green" : "0xFF"
+          "red" : "0xFF",
+          "green" : "0xFF",
+          "blue" : "0xFF"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/placeholder_image_tint_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/placeholder_image_tint_color.colorset/Contents.json
index 510d42f..9ecc3e99 100644
--- a/ios/chrome/common/ui/colors/resources/placeholder_image_tint_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/placeholder_image_tint_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xBD",
           "alpha" : "1.000",
-          "blue" : "0xC5",
-          "green" : "0xC1"
+          "red" : "0xBD",
+          "green" : "0xC1",
+          "blue" : "0xC5"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x5F",
           "alpha" : "1.000",
-          "blue" : "0x67",
-          "green" : "0x63"
+          "red" : "0x5F",
+          "green" : "0x63",
+          "blue" : "0x67"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/primary_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/primary_background_color.colorset/Contents.json
index a66621c8..50d871a6 100644
--- a/ios/chrome/common/ui/colors/resources/primary_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/primary_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0xFF",
           "alpha": "1.000",
-          "blue": "0xFF",
-          "green": "0xFF"
+          "red": "0xFF",
+          "green": "0xFF",
+          "blue": "0xFF"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0x20",
           "alpha": "1.000",
-          "blue": "0x24",
-          "green": "0x21"
+          "red": "0x20",
+          "green": "0x21",
+          "blue": "0x24"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/red_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/red_color.colorset/Contents.json
index f534a807..6aa231d 100644
--- a/ios/chrome/common/ui/colors/resources/red_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/red_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xD9",
           "alpha" : "1.000",
-          "blue" : "0x25",
-          "green" : "0x30"
+          "red" : "0xD9",
+          "green" : "0x30",
+          "blue" : "0x25"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xF2",
           "alpha" : "1.000",
-          "blue" : "0x82",
-          "green" : "0x8B"
+          "red" : "0xF2",
+          "green" : "0x8B",
+          "blue" : "0x82"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/red_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/red_dark_color.colorset/Contents.json
deleted file mode 100644
index 39e898e..0000000
--- a/ios/chrome/common/ui/colors/resources/red_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0xF2",
-          "alpha" : "1.000",
-          "blue" : "0x82",
-          "green" : "0x8B"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/scrim_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/scrim_background_color.colorset/Contents.json
index 3f60141..a3da89db 100644
--- a/ios/chrome/common/ui/colors/resources/scrim_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/scrim_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x00",
           "alpha" : "0.400",
-          "blue" : "0x00",
-          "green" : "0x00"
+          "red" : "0x00",
+          "green" : "0x00",
+          "blue" : "0x00"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/secondary_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/secondary_background_color.colorset/Contents.json
index 44e7ad3f..e098fc0 100644
--- a/ios/chrome/common/ui/colors/resources/secondary_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/secondary_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0xF1",
           "alpha": "1.000",
-          "blue": "0xF4",
-          "green": "0xF3"
+          "red": "0xF1",
+          "green": "0xF3",
+          "blue": "0xF4"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0x35",
           "alpha": "1.000",
-          "blue": "0x39",
-          "green": "0x37"
+          "red": "0x35",
+          "green": "0x37",
+          "blue": "0x39"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/secondary_background_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/secondary_background_dark_color.colorset/Contents.json
deleted file mode 100644
index 7485f772..0000000
--- a/ios/chrome/common/ui/colors/resources/secondary_background_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info": {
-    "version": 1,
-    "author": "xcode"
-  },
-  "colors": [
-    {
-      "idiom": "universal",
-      "color": {
-        "color-space": "display-p3",
-        "components": {
-          "red": "0x20",
-          "alpha": "1.000",
-          "blue": "0x24",
-          "green": "0x21"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/separator_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/separator_color.colorset/Contents.json
index 5c1e209..79ecbac 100644
--- a/ios/chrome/common/ui/colors/resources/separator_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/separator_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xE8",
           "alpha" : "1.000",
-          "blue" : "0xEC",
-          "green" : "0xEA"
+          "red" : "0xE8",
+          "green" : "0xEA",
+          "blue" : "0xEC"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x47",
           "alpha" : "1.000",
-          "blue" : "0x50",
-          "green" : "0x4C"
+          "red" : "0x47",
+          "green" : "0x4C",
+          "blue" : "0x50"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/solid_button_text_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/solid_button_text_color.colorset/Contents.json
index c6bef79..200ab8b 100644
--- a/ios/chrome/common/ui/colors/resources/solid_button_text_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/solid_button_text_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xFF",
           "alpha" : "1.000",
-          "blue" : "0xFF",
-          "green" : "0xFF"
+          "red" : "0xFF",
+          "green" : "0xFF",
+          "blue" : "0xFF"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x20",
           "alpha" : "1.000",
-          "blue" : "0x24",
-          "green" : "0x21"
+          "red" : "0x20",
+          "green" : "0x21",
+          "blue" : "0x24"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/table_view_row_highlight_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/table_view_row_highlight_color.colorset/Contents.json
index 6032667..d905593 100644
--- a/ios/chrome/common/ui/colors/resources/table_view_row_highlight_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/table_view_row_highlight_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xF1",
           "alpha" : "1.000",
-          "blue" : "0xF4",
-          "green" : "0xF3"
+          "red" : "0xF1",
+          "green" : "0xF3",
+          "blue" : "0xF4"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xFF",
           "alpha" : "0.050",
-          "blue" : "0xFF",
-          "green" : "0xFF"
+          "red" : "0xFF",
+          "green" : "0xFF",
+          "blue" : "0xFF"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/table_view_row_highlight_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/table_view_row_highlight_dark_color.colorset/Contents.json
deleted file mode 100644
index 183981e..0000000
--- a/ios/chrome/common/ui/colors/resources/table_view_row_highlight_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0xFF",
-          "alpha" : "0.050",
-          "blue" : "0xFF",
-          "green" : "0xFF"
-        }
-      }
-    }
-  ]
-}
\ No newline at end of file
diff --git a/ios/chrome/common/ui/colors/resources/tertiary_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/tertiary_background_color.colorset/Contents.json
index 7b47a4a..d2fa96c 100644
--- a/ios/chrome/common/ui/colors/resources/tertiary_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/tertiary_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0xF1",
           "alpha": "1.000",
-          "blue": "0xF4",
-          "green": "0xF3"
+          "red": "0xF1",
+          "green": "0xF3",
+          "blue": "0xF4"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0x46",
           "alpha": "1.000",
-          "blue": "0x4E",
-          "green": "0x4A"
+          "red": "0x46",
+          "green": "0x4A",
+          "blue": "0x4E"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/tertiary_background_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/tertiary_background_dark_color.colorset/Contents.json
deleted file mode 100644
index d601f496b..0000000
--- a/ios/chrome/common/ui/colors/resources/tertiary_background_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info": {
-    "version": 1,
-    "author": "xcode"
-  },
-  "colors": [
-    {
-      "idiom": "universal",
-      "color": {
-        "color-space": "display-p3",
-        "components": {
-          "red": "0x46",
-          "alpha": "1.000",
-          "blue": "0x4E",
-          "green": "0x4A"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/text_primary_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_primary_color.colorset/Contents.json
index 3f7c94b8..1087615 100644
--- a/ios/chrome/common/ui/colors/resources/text_primary_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/text_primary_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x20",
           "alpha" : "1.000",
-          "blue" : "0x24",
-          "green" : "0x21"
+          "red" : "0x20",
+          "green" : "0x21",
+          "blue" : "0x24"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xE8",
           "alpha" : "1.000",
-          "blue" : "0xED",
-          "green" : "0xEA"
+          "red" : "0xE8",
+          "green" : "0xEA",
+          "blue" : "0xED"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/text_primary_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_primary_dark_color.colorset/Contents.json
deleted file mode 100644
index f8fc14c8..0000000
--- a/ios/chrome/common/ui/colors/resources/text_primary_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0xE8",
-          "alpha" : "1.000",
-          "blue" : "0xED",
-          "green" : "0xEA"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/text_secondary_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_secondary_color.colorset/Contents.json
index 66368757..3b46075 100644
--- a/ios/chrome/common/ui/colors/resources/text_secondary_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/text_secondary_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x73",
           "alpha" : "1.000",
-          "blue" : "0x7B",
-          "green" : "0x77"
+          "red" : "0x73",
+          "green" : "0x77",
+          "blue" : "0x7B"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x9A",
           "alpha" : "1.000",
-          "blue" : "0xA6",
-          "green" : "0x9F"
+          "red" : "0x9A",
+          "green" : "0x9F",
+          "blue" : "0xA6"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/text_secondary_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_secondary_dark_color.colorset/Contents.json
deleted file mode 100644
index 2ea5221e..0000000
--- a/ios/chrome/common/ui/colors/resources/text_secondary_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0x9A",
-          "alpha" : "1.000",
-          "blue" : "0xA6",
-          "green" : "0x9F"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/text_tertiary_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_tertiary_color.colorset/Contents.json
index bbef72f..65cc8b4 100644
--- a/ios/chrome/common/ui/colors/resources/text_tertiary_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/text_tertiary_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0x3C",
           "alpha": "0.3",
-          "blue": "0x43",
-          "green": "0x3C"
+          "red": "0x3C",
+          "green": "0x3C",
+          "blue": "0x43"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color": {
         "color-space": "display-p3",
         "components": {
-          "red": "0xEB",
           "alpha": "0.3",
-          "blue": "0xF5",
-          "green": "0xEB"
+          "red": "0xEB",
+          "green": "0xEB",
+          "blue": "0xF5"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/textfield_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_background_color.colorset/Contents.json
index 759844c..d9f11df 100644
--- a/ios/chrome/common/ui/colors/resources/textfield_background_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/textfield_background_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xE8",
           "alpha" : "1.000",
-          "blue" : "0xED",
-          "green" : "0xEA"
+          "red" : "0xE8",
+          "green" : "0xEA",
+          "blue" : "0xED"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x5F",
           "alpha" : "1.000",
-          "blue" : "0x67",
-          "green" : "0x63"
+          "red" : "0x5F",
+          "green" : "0x63",
+          "blue" : "0x67"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/textfield_background_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_background_dark_color.colorset/Contents.json
deleted file mode 100644
index e0dc4c76..0000000
--- a/ios/chrome/common/ui/colors/resources/textfield_background_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0x5F",
-          "alpha" : "1.000",
-          "blue" : "0x67",
-          "green" : "0x63"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/textfield_placeholder_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_placeholder_color.colorset/Contents.json
index 52d7bbaa..b744521 100644
--- a/ios/chrome/common/ui/colors/resources/textfield_placeholder_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/textfield_placeholder_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x80",
           "alpha" : "1.000",
-          "blue" : "0x8A",
-          "green" : "0x86"
+          "red" : "0x80",
+          "green" : "0x86",
+          "blue" : "0x8A"
         }
       }
     },
@@ -27,12 +27,12 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xBD",
           "alpha" : "1.000",
-          "blue" : "0xC5",
-          "green" : "0xC1"
+          "red" : "0xBD",
+          "green" : "0xC1",
+          "blue" : "0xC5"
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/ios/chrome/common/ui/colors/resources/textfield_placeholder_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_placeholder_dark_color.colorset/Contents.json
deleted file mode 100644
index baa3fb1..0000000
--- a/ios/chrome/common/ui/colors/resources/textfield_placeholder_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0xBD",
-          "alpha" : "1.000",
-          "blue" : "0xC5",
-          "green" : "0xC1"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/tint_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/tint_dark_color.colorset/Contents.json
deleted file mode 100644
index 2f40cc2..0000000
--- a/ios/chrome/common/ui/colors/resources/tint_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0x8A",
-          "alpha" : "1.000",
-          "blue" : "0xF9",
-          "green" : "0xB4"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/toolbar_button_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/toolbar_button_color.colorset/Contents.json
index 4b476100..a8812187 100644
--- a/ios/chrome/common/ui/colors/resources/toolbar_button_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/toolbar_button_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x80",
           "alpha" : "1.000",
-          "blue" : "0x8A",
-          "green" : "0x86"
+          "red" : "0x80",
+          "green" : "0x86",
+          "blue" : "0x8A"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0xE8",
           "alpha" : "1.000",
-          "blue" : "0xED",
-          "green" : "0xEA"
+          "red" : "0xE8",
+          "green" : "0xEA",
+          "blue" : "0xED"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/resources/toolbar_button_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/toolbar_button_dark_color.colorset/Contents.json
deleted file mode 100644
index f8fc14c8..0000000
--- a/ios/chrome/common/ui/colors/resources/toolbar_button_dark_color.colorset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  },
-  "colors" : [
-    {
-      "idiom" : "universal",
-      "color" : {
-        "color-space" : "display-p3",
-        "components" : {
-          "red" : "0xE8",
-          "alpha" : "1.000",
-          "blue" : "0xED",
-          "green" : "0xEA"
-        }
-      }
-    }
-  ]
-}
diff --git a/ios/chrome/common/ui/colors/resources/toolbar_shadow_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/toolbar_shadow_color.colorset/Contents.json
index 8752f64..0dbeea7 100644
--- a/ios/chrome/common/ui/colors/resources/toolbar_shadow_color.colorset/Contents.json
+++ b/ios/chrome/common/ui/colors/resources/toolbar_shadow_color.colorset/Contents.json
@@ -9,10 +9,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x00",
           "alpha" : "0.200",
-          "blue" : "0x00",
-          "green" : "0x00"
+          "red" : "0x00",
+          "green" : "0x00",
+          "blue" : "0x00"
         }
       }
     },
@@ -27,10 +27,10 @@
       "color" : {
         "color-space" : "display-p3",
         "components" : {
-          "red" : "0x00",
           "alpha" : "0.900",
-          "blue" : "0x00",
-          "green" : "0x00"
+          "red" : "0x00",
+          "green" : "0x00",
+          "blue" : "0x00"
         }
       }
     }
diff --git a/ios/chrome/common/ui/colors/semantic_color_names.h b/ios/chrome/common/ui/colors/semantic_color_names.h
index cf21fa5..d7b6965 100644
--- a/ios/chrome/common/ui/colors/semantic_color_names.h
+++ b/ios/chrome/common/ui/colors/semantic_color_names.h
@@ -71,24 +71,4 @@
 extern NSString* const kGrey800Color;
 extern NSString* const kGrey900Color;
 
-// Temporary colors for iOS 12. Because overridePreferredInterfaceStyle isn't
-// available in iOS 12, any views that should always be dark (e.g. incognito)
-// need to use colorsets that always use the dark variant.
-// TODO(crbug.com/981889): Clean up after iOS 12 support is dropped.
-
-extern NSString* const kBackgroundDarkColor;
-extern NSString* const kSecondaryBackgroundDarkColor;
-extern NSString* const kTertiaryBackgroundDarkColor;
-extern NSString* const kCloseButtonDarkColor;
-extern NSString* const kTableViewRowHighlightDarkColor;
-extern NSString* const kTextPrimaryDarkColor;
-extern NSString* const kTextSecondaryDarkColor;
-extern NSString* const kTextfieldBackgroundDarkColor;
-extern NSString* const kTextfieldPlaceholderDarkColor;
-extern NSString* const kToolbarButtonDarkColor;
-
-extern NSString* const kBlueDarkColor;
-extern NSString* const kGreenDarkColor;
-extern NSString* const kRedDarkColor;
-
 #endif  // IOS_CHROME_COMMON_UI_COLORS_SEMANTIC_COLOR_NAMES_H_
diff --git a/ios/chrome/common/ui/colors/semantic_color_names.mm b/ios/chrome/common/ui/colors/semantic_color_names.mm
index 3c87515..e6ad0dc 100644
--- a/ios/chrome/common/ui/colors/semantic_color_names.mm
+++ b/ios/chrome/common/ui/colors/semantic_color_names.mm
@@ -52,25 +52,3 @@
 NSString* const kGrey700Color = @"grey_700_color";
 NSString* const kGrey800Color = @"grey_800_color";
 NSString* const kGrey900Color = @"grey_900_color";
-
-// Temporary for iOS 12
-
-NSString* const kBackgroundDarkColor = @"background_dark_color";
-NSString* const kSecondaryBackgroundDarkColor =
-    @"secondary_background_dark_color";
-NSString* const kTertiaryBackgroundDarkColor =
-    @"tertiary_background_dark_color";
-NSString* const kCloseButtonDarkColor = @"close_button_dark_color";
-NSString* const kTableViewRowHighlightDarkColor =
-    @"table_view_row_highlight_dark_color";
-NSString* const kTextPrimaryDarkColor = @"text_primary_dark_color";
-NSString* const kTextSecondaryDarkColor = @"text_secondary_dark_color";
-NSString* const kTextfieldBackgroundDarkColor =
-    @"textfield_background_dark_color";
-NSString* const kTextfieldPlaceholderDarkColor =
-    @"textfield_placeholder_dark_color";
-NSString* const kToolbarButtonDarkColor = @"toolbar_button_dark_color";
-
-NSString* const kBlueDarkColor = @"blue_dark_color";
-NSString* const kGreenDarkColor = @"green_dark_color";
-NSString* const kRedDarkColor = @"red_dark_color";
diff --git a/ios/chrome/credential_provider_extension/credential_provider_extension_localize_strings_config.plist b/ios/chrome/credential_provider_extension/credential_provider_extension_localize_strings_config.plist
index aa2941a0..df2bca4 100644
--- a/ios/chrome/credential_provider_extension/credential_provider_extension_localize_strings_config.plist
+++ b/ios/chrome/credential_provider_extension/credential_provider_extension_localize_strings_config.plist
@@ -30,6 +30,8 @@
 				<string>IDS_IOS_CREDENTIAL_PROVIDER_ENTER</string>
 				<string>IDS_IOS_CREDENTIAL_PROVIDER_EXTENSION_CANCEL</string>
 				<string>IDS_IOS_CREDENTIAL_PROVIDER_HELP_ACCESSIBILITY_LABEL</string>
+				<string>IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_MESSAGE</string>
+				<string>IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_TITLE</string>
 				<string>IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_FOOTER</string>
 				<string>IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_FOOTER_NO_EMAIL</string>
 				<string>IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_SUGGEST_STRONG_PASSWORD</string>
diff --git a/ios/chrome/credential_provider_extension/password_util.h b/ios/chrome/credential_provider_extension/password_util.h
index d35e63fb..d47d7d5e 100644
--- a/ios/chrome/credential_provider_extension/password_util.h
+++ b/ios/chrome/credential_provider_extension/password_util.h
@@ -10,4 +10,8 @@
 // Queries Keychain Services for the passed identifier password.
 NSString* PasswordWithKeychainIdentifier(NSString* identifier);
 
+// Stores |password| in Keychain Services using |identifier| as its identifier
+// for later query. Returns |YES| if saving was successful and |NO| otherwise.
+BOOL StorePasswordInKeychain(NSString* password, NSString* identifier);
+
 #endif  // IOS_CHROME_CREDENTIAL_PROVIDER_EXTENSION_PASSWORD_UTIL_H_
diff --git a/ios/chrome/credential_provider_extension/password_util.mm b/ios/chrome/credential_provider_extension/password_util.mm
index 4faf39f..f587cfb 100644
--- a/ios/chrome/credential_provider_extension/password_util.mm
+++ b/ios/chrome/credential_provider_extension/password_util.mm
@@ -39,3 +39,28 @@
   DLOG(ERROR) << "Error retrieving password, OSStatus: " << status;
   return @"";
 }
+
+BOOL StorePasswordInKeychain(NSString* password, NSString* identifier) {
+  if (!identifier || identifier.length == 0) {
+    return NO;
+  }
+
+  NSData* passwordData = [password dataUsingEncoding:NSUTF8StringEncoding];
+
+  NSDictionary* query = @{
+    (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword,
+    (__bridge id)
+    kSecAttrAccessible : (__bridge id)kSecAttrAccessibleWhenUnlocked,
+    (__bridge id)kSecValueData : passwordData,
+    (__bridge id)kSecAttrAccount : identifier,
+  };
+
+  OSStatus status = SecItemAdd((__bridge CFDictionaryRef)query, NULL);
+
+  if (status != errSecSuccess) {
+    UpdateUMACountForKey(
+        app_group::kCredentialExtensionKeychainSavePasswordFailureCount);
+  }
+
+  return status == errSecSuccess;
+}
diff --git a/ios/chrome/credential_provider_extension/password_util_unittest.mm b/ios/chrome/credential_provider_extension/password_util_unittest.mm
index 6e8a500..ddad5a7 100644
--- a/ios/chrome/credential_provider_extension/password_util_unittest.mm
+++ b/ios/chrome/credential_provider_extension/password_util_unittest.mm
@@ -112,4 +112,26 @@
   ASSERT_TRUE([PasswordWithKeychainIdentifier(nil) isEqualToString:@""]);
 }
 
+// Tests storing passwords with StorePassword.
+TEST_F(PasswordUtilKeychainTest, CheckSavingPasswords) {
+  EXPECT_TRUE(StorePasswordInKeychain(kCredentialPassword1,
+                                      KeyWithPrefix(kCredentialKey1)));
+  EXPECT_TRUE(StorePasswordInKeychain(kCredentialPassword2,
+                                      KeyWithPrefix(kCredentialKey2)));
+
+  ASSERT_TRUE([PasswordWithKeychainIdentifier(KeyWithPrefix(kCredentialKey2))
+      isEqualToString:kCredentialPassword2]);
+  ASSERT_TRUE([PasswordWithKeychainIdentifier(KeyWithPrefix(kCredentialKey1))
+      isEqualToString:kCredentialPassword1]);
+  RemovePasswordForKey(kCredentialKey1);
+  ASSERT_TRUE([PasswordWithKeychainIdentifier(KeyWithPrefix(kCredentialKey2))
+      isEqualToString:kCredentialPassword2]);
+  RemovePasswordForKey(kCredentialKey2);
+}
+
+// Tests storing a password with an empty identifier
+TEST_F(PasswordUtilKeychainTest, StoreEmptyIdentifier) {
+  EXPECT_FALSE(StorePasswordInKeychain(kCredentialPassword1, @""));
+}
+
 }  // credential_provider_extension
diff --git a/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings.grd b/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings.grd
index 325d4e370..a264aa71 100644
--- a/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings.grd
+++ b/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings.grd
@@ -212,6 +212,12 @@
       <message name="IDS_IOS_CREDENTIAL_PROVIDER_HELP_ACCESSIBILITY_LABEL" desc="Used as the accessibility label read by screen readers for a Help button." meaning="[iOS only][CHAR_LIMIT=30]">
         Help
       </message>
+      <message name="IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_MESSAGE" desc="Message for error message if password saving fails">
+        Something went wrong. Try again later.
+      </message>
+      <message name="IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_TITLE" desc="Title for error message if password saving fails">
+        Can't Save Password
+      </message>
       <message name="IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_FOOTER" desc="Disclaimer telling users what will happen to their passwords">
         Your password will be saved in your Google Account (<ph name="EMAIL">$1<ex>example@google.com</ex></ph>) when you come back to Chrome
       </message>
diff --git a/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings_grd/IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_MESSAGE.png.sha1 b/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings_grd/IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_MESSAGE.png.sha1
new file mode 100644
index 0000000..24e930f1
--- /dev/null
+++ b/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings_grd/IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_MESSAGE.png.sha1
@@ -0,0 +1 @@
+267741fa283975c069b6d373eb2d43d0eaae20f2
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings_grd/IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_TITLE.png.sha1 b/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings_grd/IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_TITLE.png.sha1
new file mode 100644
index 0000000..24e930f1
--- /dev/null
+++ b/ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings_grd/IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_TITLE.png.sha1
@@ -0,0 +1 @@
+267741fa283975c069b6d373eb2d43d0eaae20f2
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/ui/credential_list_coordinator.mm b/ios/chrome/credential_provider_extension/ui/credential_list_coordinator.mm
index 5c7734a..49b3b73b 100644
--- a/ios/chrome/credential_provider_extension/ui/credential_list_coordinator.mm
+++ b/ios/chrome/credential_provider_extension/ui/credential_list_coordinator.mm
@@ -173,7 +173,8 @@
 - (void)showCreateNewPasswordUI {
   self.createPasswordCoordinator = [[NewPasswordCoordinator alloc]
       initWithBaseViewController:self.viewController
-                         context:self.context];
+                         context:self.context
+              serviceIdentifiers:self.serviceIdentifiers];
   [self.createPasswordCoordinator start];
 }
 
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_coordinator.h b/ios/chrome/credential_provider_extension/ui/new_password_coordinator.h
index 8453a21..02346d67 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_coordinator.h
+++ b/ios/chrome/credential_provider_extension/ui/new_password_coordinator.h
@@ -8,6 +8,7 @@
 #import <UIKit/UIKit.h>
 
 @class ASCredentialProviderExtensionContext;
+@class ASCredentialServiceIdentifier;
 
 // The coordinator for the new password feature.
 @interface NewPasswordCoordinator : NSObject
@@ -17,6 +18,8 @@
 - (instancetype)
     initWithBaseViewController:(UIViewController*)baseViewController
                        context:(ASCredentialProviderExtensionContext*)context
+            serviceIdentifiers:
+                (NSArray<ASCredentialServiceIdentifier*>*)serviceIdentifiers
     NS_DESIGNATED_INITIALIZER;
 
 - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_coordinator.mm b/ios/chrome/credential_provider_extension/ui/new_password_coordinator.mm
index 98fa0bb..dadaf99 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_coordinator.mm
+++ b/ios/chrome/credential_provider_extension/ui/new_password_coordinator.mm
@@ -4,6 +4,11 @@
 
 #import "ios/chrome/credential_provider_extension/ui/new_password_coordinator.h"
 
+#import <AuthenticationServices/AuthenticationServices.h>
+
+#import "ios/chrome/common/credential_provider/credential.h"
+#import "ios/chrome/credential_provider_extension/password_util.h"
+#import "ios/chrome/credential_provider_extension/ui/new_password_mediator.h"
 #import "ios/chrome/credential_provider_extension/ui/new_password_view_controller.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -21,25 +26,39 @@
 // The extension context for the credential provider.
 @property(nonatomic, weak) ASCredentialProviderExtensionContext* context;
 
+// The mediator for this coordinator.
+@property(nonatomic, strong) NewPasswordMediator* mediator;
+
+// The service identifiers this password is being created for.
+@property(nonatomic, strong)
+    NSArray<ASCredentialServiceIdentifier*>* serviceIdentifiers;
+
 @end
 
 @implementation NewPasswordCoordinator
 
 - (instancetype)
     initWithBaseViewController:(UIViewController*)baseViewController
-                       context:(ASCredentialProviderExtensionContext*)context {
+                       context:(ASCredentialProviderExtensionContext*)context
+            serviceIdentifiers:
+                (NSArray<ASCredentialServiceIdentifier*>*)serviceIdentifiers {
   self = [super init];
   if (self) {
     _baseViewController = baseViewController;
     _context = context;
+    _serviceIdentifiers = serviceIdentifiers;
   }
   return self;
 }
 
 - (void)start {
+  self.mediator = [[NewPasswordMediator alloc]
+      initWithServiceIdentifier:self.serviceIdentifiers.firstObject];
+
   NewPasswordViewController* newPasswordViewController =
       [[NewPasswordViewController alloc] init];
   newPasswordViewController.delegate = self;
+  newPasswordViewController.credentialHandler = self.mediator;
   self.viewController = [[UINavigationController alloc]
       initWithRootViewController:newPasswordViewController];
   [self.baseViewController presentViewController:self.viewController
@@ -61,4 +80,14 @@
   [self.baseViewController dismissViewControllerAnimated:YES completion:nil];
 }
 
+- (void)userSelectedCredential:(id<Credential>)credential {
+  NSString* password =
+      PasswordWithKeychainIdentifier(credential.keychainIdentifier);
+  ASPasswordCredential* ASCredential =
+      [ASPasswordCredential credentialWithUser:credential.user
+                                      password:password];
+  [self.context completeRequestWithSelectedCredential:ASCredential
+                                    completionHandler:nil];
+}
+
 @end
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_mediator.h b/ios/chrome/credential_provider_extension/ui/new_password_mediator.h
index be34ab4..2fefa747 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_mediator.h
+++ b/ios/chrome/credential_provider_extension/ui/new_password_mediator.h
@@ -7,9 +7,18 @@
 
 #import <Foundation/Foundation.h>
 
+#import "ios/chrome/credential_provider_extension/ui/new_password_view_controller.h"
+
+@class ASCredentialServiceIdentifier;
+
 // This mediator fetches requirements and saves new credentials for its
 // consumer.
-@interface NewPasswordMediator : NSObject
+@interface NewPasswordMediator : NSObject <NewCredentialHandler>
+
+- (instancetype)initWithServiceIdentifier:
+    (ASCredentialServiceIdentifier*)serviceIdentifier NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)init NS_UNAVAILABLE;
 @end
 
 #endif  // IOS_CHROME_CREDENTIAL_PROVIDER_EXTENSION_UI_NEW_PASSWORD_MEDIATOR_H_
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_mediator.mm b/ios/chrome/credential_provider_extension/ui/new_password_mediator.mm
index e25ed1e..4bab35859 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_mediator.mm
+++ b/ios/chrome/credential_provider_extension/ui/new_password_mediator.mm
@@ -4,9 +4,72 @@
 
 #import "ios/chrome/credential_provider_extension/ui/new_password_mediator.h"
 
+#import <AuthenticationServices/AuthenticationServices.h>
+
+#include "ios/chrome/common/app_group/app_group_constants.h"
+#import "ios/chrome/common/credential_provider/archivable_credential.h"
+#import "ios/chrome/common/credential_provider/constants.h"
+#import "ios/chrome/common/credential_provider/user_defaults_credential_store.h"
+#import "ios/chrome/credential_provider_extension/password_util.h"
+
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
+@interface NewPasswordMediator ()
+
+// The service identifier the password is being created for,
+@property(nonatomic, strong) ASCredentialServiceIdentifier* serviceIdentifier;
+
+@end
+
 @implementation NewPasswordMediator
+
+- (instancetype)initWithServiceIdentifier:
+    (ASCredentialServiceIdentifier*)serviceIdentifier {
+  self = [super init];
+  if (self) {
+    _serviceIdentifier = serviceIdentifier;
+  }
+  return self;
+}
+
+#pragma mark - NewCredentialHandler
+
+- (ArchivableCredential*)createNewCredentialWithUsername:(NSString*)username
+                                                password:(NSString*)password {
+  NSString* uuid = [[NSUUID UUID] UUIDString];
+  if (!StorePasswordInKeychain(password, uuid)) {
+    return nil;
+  }
+
+  NSURL* url = [NSURL URLWithString:self.serviceIdentifier.identifier];
+  NSString* recordIdentifier =
+      [NSString stringWithFormat:@"CPE|%@|%@|%@", url.host, username,
+                                 self.serviceIdentifier.identifier];
+  NSString* validationIdentifier =
+      AppGroupUserDefaultsCredentialProviderUserID();
+
+  return [[ArchivableCredential alloc]
+           initWithFavicon:nil
+        keychainIdentifier:uuid
+                      rank:1
+          recordIdentifier:recordIdentifier
+         serviceIdentifier:self.serviceIdentifier.identifier
+               serviceName:url.host
+                      user:username
+      validationIdentifier:validationIdentifier];
+}
+
+- (void)saveNewCredential:(ArchivableCredential*)credential
+               completion:(void (^)(NSError* error))completion {
+  NSString* key = AppGroupUserDefaultsCredentialProviderNewCredentials();
+  UserDefaultsCredentialStore* store = [[UserDefaultsCredentialStore alloc]
+      initWithUserDefaults:app_group::GetGroupUserDefaults()
+                       key:key];
+
+  [store addCredential:credential];
+  [store saveDataWithCompletion:completion];
+}
+
 @end
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_table_cell.h b/ios/chrome/credential_provider_extension/ui/new_password_table_cell.h
index 616322d9..0289fe2 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_table_cell.h
+++ b/ios/chrome/credential_provider_extension/ui/new_password_table_cell.h
@@ -14,6 +14,15 @@
   NewPasswordTableCellTypeNumRows,
 };
 
+@class NewPasswordTableCell;
+
+@protocol NewPasswordTableCellDelegate
+
+// Alerts the delegate every time the text field changes in this cell.
+- (void)textFieldDidChangeInCell:(NewPasswordTableCell*)cell;
+
+@end
+
 @interface NewPasswordTableCell : UITableViewCell
 
 // Reuse ID for registering this class in table views.
@@ -22,6 +31,9 @@
 // Field that holds the user-entered text.
 @property(nonatomic, strong) UITextField* textField;
 
+// Delegate for this cell.
+@property(nonatomic, weak) id<NewPasswordTableCellDelegate> delegate;
+
 // Sets the cell up to show the given type.
 - (void)setCellType:(NewPasswordTableCellType)cellType;
 
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_table_cell.mm b/ios/chrome/credential_provider_extension/ui/new_password_table_cell.mm
index ed4b3d9..b453166 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_table_cell.mm
+++ b/ios/chrome/credential_provider_extension/ui/new_password_table_cell.mm
@@ -86,6 +86,9 @@
     _textField.hidden = YES;
     _textField.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
     _textField.textColor = [UIColor colorNamed:kTextPrimaryColor];
+    [_textField addTarget:self
+                   action:@selector(textFieldDidChange:)
+         forControlEvents:UIControlEventEditingChanged];
 
     _hidePasswordButton = [UIButton buttonWithType:UIButtonTypeSystem];
     _hidePasswordButton.translatesAutoresizingMaskIntoConstraints = NO;
@@ -141,6 +144,8 @@
 - (void)prepareForReuse {
   [super prepareForReuse];
 
+  self.delegate = nil;
+
   self.titleLabel.text = @"";
   self.titleLabel.textColor = [UIColor colorNamed:kTextPrimaryColor];
   self.textField.hidden = YES;
@@ -180,6 +185,10 @@
   self.passwordHidden = !self.passwordHidden;
 }
 
+- (void)textFieldDidChange:(id)sender {
+  [self.delegate textFieldDidChangeInCell:self];
+}
+
 #pragma mark - Accessors
 
 - (UIImage*)hidePasswordImage {
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_view_controller.h b/ios/chrome/credential_provider_extension/ui/new_password_view_controller.h
index ccde1ce..e56f544 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_view_controller.h
+++ b/ios/chrome/credential_provider_extension/ui/new_password_view_controller.h
@@ -7,6 +7,8 @@
 
 #import <UIKit/UIKit.h>
 
+@class ArchivableCredential;
+@protocol Credential;
 @class NewPasswordViewController;
 
 @protocol NewPasswordViewControllerDelegate <NSObject>
@@ -15,6 +17,22 @@
 - (void)navigationCancelButtonWasPressedInNewPasswordViewController:
     (NewPasswordViewController*)viewController;
 
+// Called when the user selects a given credential
+- (void)userSelectedCredential:(id<Credential>)credential;
+
+@end
+
+@protocol NewCredentialHandler
+
+// Called when the user wants to create a new credential.
+- (ArchivableCredential*)createNewCredentialWithUsername:(NSString*)username
+                                                password:(NSString*)password;
+
+// Saves the given credential to disk and calls |completion| once the operation
+// is finished.
+- (void)saveNewCredential:(ArchivableCredential*)credential
+               completion:(void (^)(NSError* error))completion;
+
 @end
 
 // View Controller where a user can create a new credential and use a suggested
@@ -23,6 +41,8 @@
 
 @property(nonatomic, weak) id<NewPasswordViewControllerDelegate> delegate;
 
+@property(nonatomic, weak) id<NewCredentialHandler> credentialHandler;
+
 @end
 
 #endif  // IOS_CHROME_CREDENTIAL_PROVIDER_EXTENSION_UI_NEW_PASSWORD_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/credential_provider_extension/ui/new_password_view_controller.mm b/ios/chrome/credential_provider_extension/ui/new_password_view_controller.mm
index fcccd4dc..ae31844 100644
--- a/ios/chrome/credential_provider_extension/ui/new_password_view_controller.mm
+++ b/ios/chrome/credential_provider_extension/ui/new_password_view_controller.mm
@@ -5,14 +5,18 @@
 #import "ios/chrome/credential_provider_extension/ui/new_password_view_controller.h"
 
 #include "base/notreached.h"
+#include "ios/chrome/common/app_group/app_group_metrics.h"
+#import "ios/chrome/common/credential_provider/archivable_credential.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
+#import "ios/chrome/credential_provider_extension/metrics_util.h"
 #import "ios/chrome/credential_provider_extension/ui/new_password_table_cell.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
-@interface NewPasswordViewController () <UITableViewDataSource>
+@interface NewPasswordViewController () <UITableViewDataSource,
+                                         NewPasswordTableCellDelegate>
 @end
 
 @implementation NewPasswordViewController
@@ -78,6 +82,7 @@
   }
 
   [cell setCellType:cellType];
+  cell.delegate = self;
 
   return cell;
 }
@@ -121,18 +126,42 @@
     didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
   // There is no need to check which cell has been selected because all the
   // other cells are unselectable from |-tableView:willSelectRowAtIndexPath:|.
-  NSIndexPath* passwordIndexPath =
-      [NSIndexPath indexPathForRow:NewPasswordTableCellTypePassword
-                         inSection:0];
-  NewPasswordTableCell* passwordCell =
-      [tableView cellForRowAtIndexPath:passwordIndexPath];
+
+  NewPasswordTableCell* passwordCell = [self passwordCell];
 
   // TODO(crbug.com/1224986): Generate password and fill it in.
   passwordCell.textField.text = @"";
 
+  [self updateSaveButtonState];
+
   [tableView deselectRowAtIndexPath:indexPath animated:YES];
 }
 
+- (NewPasswordTableCell*)passwordCell {
+  NSIndexPath* passwordIndexPath =
+      [NSIndexPath indexPathForRow:NewPasswordTableCellTypePassword
+                         inSection:0];
+  NewPasswordTableCell* passwordCell =
+      [self.tableView cellForRowAtIndexPath:passwordIndexPath];
+
+  return passwordCell;
+}
+
+#pragma mark - NewPasswordTableCellDelegate
+
+- (void)textFieldDidChangeInCell:(NewPasswordTableCell*)cell {
+  if (cell == [self passwordCell]) {
+    [self updateSaveButtonState];
+  }
+}
+
+// Updates the save button state based on whether there is text in the password
+// cell.
+- (void)updateSaveButtonState {
+  self.navigationItem.rightBarButtonItem.enabled =
+      [self passwordCell].textField.text.length > 0;
+}
+
 #pragma mark - Private
 
 // Action for cancel button.
@@ -141,6 +170,66 @@
       navigationCancelButtonWasPressedInNewPasswordViewController:self];
 }
 
+// Action for save button.
+- (void)saveButtonWasPressed {
+  NSIndexPath* usernameIndexPath =
+      [NSIndexPath indexPathForRow:NewPasswordTableCellTypeUsername
+                         inSection:0];
+  NewPasswordTableCell* usernameCell =
+      [self.tableView cellForRowAtIndexPath:usernameIndexPath];
+  NSString* username = usernameCell.textField.text;
+
+  NSIndexPath* passwordIndexPath =
+      [NSIndexPath indexPathForRow:NewPasswordTableCellTypePassword
+                         inSection:0];
+  NewPasswordTableCell* passwordCell =
+      [self.tableView cellForRowAtIndexPath:passwordIndexPath];
+  NSString* password = passwordCell.textField.text;
+
+  ArchivableCredential* credential =
+      [self.credentialHandler createNewCredentialWithUsername:username
+                                                     password:password];
+
+  if (!credential) {
+    [self savePasswordFailed];
+    return;
+  }
+
+  [self.credentialHandler
+      saveNewCredential:credential
+             completion:^(NSError* error) {
+               if (error) {
+                 UpdateUMACountForKey(
+                     app_group::kCredentialExtensionSaveCredentialFailureCount);
+                 [self savePasswordFailed];
+                 return;
+               }
+               [self.delegate userSelectedCredential:credential];
+             }];
+}
+
+// Alerts the user that saving their password failed.
+- (void)savePasswordFailed {
+  UIAlertController* ac = [UIAlertController
+      alertControllerWithTitle:
+          NSLocalizedString(
+              @"IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_ERROR_TITLE",
+              @"Title for password save error")
+                       message:NSLocalizedString(
+                                   @"IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_"
+                                   @"ERROR_MESSAGE",
+                                   @"Message for password save error")
+                preferredStyle:UIAlertControllerStyleAlert];
+  UIAlertAction* defaultAction = [UIAlertAction
+      actionWithTitle:NSLocalizedString(@"IDS_IOS_CREDENTIAL_PROVIDER_OK",
+                                        @"OK")
+                style:UIAlertActionStyleDefault
+              handler:^(UIAlertAction* action){
+              }];
+  [ac addAction:defaultAction];
+  [self presentViewController:ac animated:YES completion:nil];
+}
+
 // Returns a new cancel button for the navigation bar.
 - (UIBarButtonItem*)navigationCancelButton {
   UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc]
@@ -153,12 +242,15 @@
 
 // Returns a new save button for the navigation bar.
 - (UIBarButtonItem*)navigationSaveButton {
-  UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc]
+  UIBarButtonItem* saveButton = [[UIBarButtonItem alloc]
       initWithBarButtonSystemItem:UIBarButtonSystemItemSave
-                           target:nil
-                           action:nil];
-  cancelButton.tintColor = [UIColor colorNamed:kBlueColor];
-  return cancelButton;
+                           target:self
+                           action:@selector(saveButtonWasPressed)];
+  saveButton.tintColor = [UIColor colorNamed:kBlueColor];
+
+  // Save button should start disabled because no password has been entered.
+  saveButton.enabled = NO;
+  return saveButton;
 }
 
 @end
diff --git a/ios/web/web_state/ui/crw_context_menu_controller.mm b/ios/web/web_state/ui/crw_context_menu_controller.mm
index d7aed08..8d136d3 100644
--- a/ios/web/web_state/ui/crw_context_menu_controller.mm
+++ b/ios/web/web_state/ui/crw_context_menu_controller.mm
@@ -4,6 +4,7 @@
 
 #import "ios/web/web_state/ui/crw_context_menu_controller.h"
 
+#import "base/values.h"
 #import "ios/web/js_features/context_menu/context_menu_params_utils.h"
 #import "ios/web/public/ui/context_menu_params.h"
 #import "ios/web/public/web_state.h"
@@ -20,8 +21,6 @@
 
 @interface CRWContextMenuController () <UIContextMenuInteractionDelegate>
 
-@property(nonatomic, assign) web::ContextMenuParams params;
-
 // The context menu responsible for the interaction.
 @property(nonatomic, strong) UIContextMenuInteraction* contextMenu;
 
@@ -39,7 +38,12 @@
 
 @end
 
-@implementation CRWContextMenuController
+@implementation CRWContextMenuController {
+  // This is an ivar instead of a property. As a property, the struct gets
+  // copied whenever an inner field is to be changed. The change happens in the
+  // copy, which is then dropped right after, leaving the original intact.
+  absl::optional<web::ContextMenuParams> _contextMenuParams;
+}
 
 @synthesize highlightView = _highlightView;
 @synthesize dismissView = _dismissView;
@@ -103,8 +107,7 @@
 
   // Clear params in case elementFetcher fails, which would lead to a popping
   // a context menu with the previous context menu params.
-  self.params.link_url = GURL();
-  self.params.src_url = GURL();
+  _contextMenuParams.reset();
 
   __weak __typeof(self) weakSelf = self;
   [self.elementFetcher
@@ -112,7 +115,9 @@
            completionHandler:^(const web::ContextMenuParams& params) {
              __typeof(self) strongSelf = weakSelf;
              javascriptEvaluationComplete = YES;
-             strongSelf.params = params;
+             if (!strongSelf)
+               return;
+             strongSelf->_contextMenuParams = params;
              if (isRunLoopNested) {
                CFRunLoopStop(CFRunLoopGetCurrent());
              }
@@ -144,8 +149,10 @@
 
   isRunLoopComplete = YES;
 
-  if (!web::CanShowContextMenuForParams(self.params))
+  if (!_contextMenuParams.has_value() ||
+      !web::CanShowContextMenuForParams(_contextMenuParams.value())) {
     return nil;
+  }
 
   // Adding the highlight/dismiss view here so they can be used in the
   // delegate's methods.
@@ -154,12 +161,12 @@
   self.highlightView.center = location;
   self.dismissView.center = location;
 
-  self.params.location = [self.webView convertPoint:location
-                                           fromView:interaction.view];
+  _contextMenuParams.value().location =
+      [self.webView convertPoint:location fromView:interaction.view];
 
   __block UIContextMenuConfiguration* configuration;
   self.webState->GetDelegate()->ContextMenuConfiguration(
-      self.webState, self.params, /*preview_provider=*/nil,
+      self.webState, _contextMenuParams.value(), /*preview_provider=*/nil,
       ^(UIContextMenuConfiguration* conf) {
         configuration = conf;
       });
diff --git a/media/gpu/mac/vt_video_decode_accelerator_mac.cc b/media/gpu/mac/vt_video_decode_accelerator_mac.cc
index 428dd4e8..89d91a1 100644
--- a/media/gpu/mac/vt_video_decode_accelerator_mac.cc
+++ b/media/gpu/mac/vt_video_decode_accelerator_mac.cc
@@ -1586,13 +1586,22 @@
       gl_params.is_cleared = true;
       gpu::SharedImageBackingGLCommon::UnpackStateAttribs gl_attribs;
 
+      // A GL texture id is needed to create the legacy mailbox, which requires
+      // that the GL context be made current.
+      const bool kCreateLegacyMailbox = true;
+      if (!gl_client_.make_context_current.Run()) {
+        DLOG(ERROR) << "Failed to make context current";
+        NotifyError(PLATFORM_FAILURE, SFT_PLATFORM_ERROR);
+        return false;
+      }
+
       auto shared_image = std::make_unique<gpu::SharedImageBackingGLImage>(
           gl_image, mailbox, viz_resource_format, plane_size, color_space,
           kTopLeft_GrSurfaceOrigin, kOpaque_SkAlphaType, shared_image_usage,
           gl_params, gl_attribs, gl_client_.is_passthrough);
 
       const bool success = shared_image_stub->factory()->RegisterBacking(
-          std::move(shared_image), /*allow_legacy_mailbox=*/false);
+          std::move(shared_image), kCreateLegacyMailbox);
       if (!success) {
         DLOG(ERROR) << "Failed to register shared image";
         NotifyError(PLATFORM_FAILURE, SFT_PLATFORM_ERROR);
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc
index efc4ea22..71a0372d 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
@@ -50,7 +50,7 @@
 
 bool GpuMemoryBufferVideoFramePool::MultiPlaneVideoSharedImagesEnabled() {
 #if defined(OS_MAC)
-  return base::mac::IsAtMostOS10_15();
+  return true;
 #else
   return false;
 #endif
diff --git a/native_client_sdk/src/libraries/nacl_io/ostermios.h b/native_client_sdk/src/libraries/nacl_io/ostermios.h
index f0fc5f6..44a506a 100644
--- a/native_client_sdk/src/libraries/nacl_io/ostermios.h
+++ b/native_client_sdk/src/libraries/nacl_io/ostermios.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef LIBRARIES_NACL_IO_OSTERMIOS_H
-#define LIBRARIES_NACL_IO_OSTERMIOS_H
+#ifndef LIBRARIES_NACL_IO_OSTERMIOS_H_
+#define LIBRARIES_NACL_IO_OSTERMIOS_H_
 
 #if defined(WIN32)
 
@@ -39,4 +39,4 @@
 #endif
 
 
-#endif  /* LIBRARIES_NACL_IO_OSTERMIOS_H */
+#endif  // LIBRARIES_NACL_IO_OSTERMIOS_H_
diff --git a/native_client_sdk/src/libraries/nacl_io/ostime.h b/native_client_sdk/src/libraries/nacl_io/ostime.h
index 5ae8397f..a0087866 100644
--- a/native_client_sdk/src/libraries/nacl_io/ostime.h
+++ b/native_client_sdk/src/libraries/nacl_io/ostime.h
@@ -36,4 +36,4 @@
 
 #endif
 
-#endif  /* LIBRARIES_NACL_IO_OSUNISTD_H_ */
+#endif  // LIBRARIES_NACL_IO_OSTIME_H_
diff --git a/native_client_sdk/src/libraries/nacl_io/ostypes.h b/native_client_sdk/src/libraries/nacl_io/ostypes.h
index cc9b6de..e27fc8d 100644
--- a/native_client_sdk/src/libraries/nacl_io/ostypes.h
+++ b/native_client_sdk/src/libraries/nacl_io/ostypes.h
@@ -18,4 +18,4 @@
 
 #endif
 
-#endif  /* LIBRARIES_NACL_IO_OSTYPES_H_ */
+#endif  // LIBRARIES_NACL_IO_OSTYPES_H_
diff --git a/native_client_sdk/src/libraries/nacl_io/osunistd.h b/native_client_sdk/src/libraries/nacl_io/osunistd.h
index 9c0dbca5..a285a181 100644
--- a/native_client_sdk/src/libraries/nacl_io/osunistd.h
+++ b/native_client_sdk/src/libraries/nacl_io/osunistd.h
@@ -18,4 +18,4 @@
 
 #endif
 
-#endif  /* LIBRARIES_NACL_IO_OSUNISTD_H_ */
+#endif  // LIBRARIES_NACL_IO_OSUNISTD_H_
diff --git a/native_client_sdk/src/libraries/nacl_io/osutime.h b/native_client_sdk/src/libraries/nacl_io/osutime.h
index 8e849d7..df48bd5 100644
--- a/native_client_sdk/src/libraries/nacl_io/osutime.h
+++ b/native_client_sdk/src/libraries/nacl_io/osutime.h
@@ -11,4 +11,4 @@
 
 struct utimbuf;
 
-#endif  /* LIBRARIES_NACL_IO_OSUTIME_H_ */
+#endif  // LIBRARIES_NACL_IO_OSUTIME_H_
diff --git a/native_client_sdk/src/libraries/nacl_io/path.h b/native_client_sdk/src/libraries/nacl_io/path.h
index 737e8f1..2f552e9 100644
--- a/native_client_sdk/src/libraries/nacl_io/path.h
+++ b/native_client_sdk/src/libraries/nacl_io/path.h
@@ -61,4 +61,4 @@
 
 }  // namespace nacl_io
 
-#endif  // PACKAGES_LIBRARIES_NACL_IO_PATH_H_
+#endif  // LIBRARIES_NACL_IO_PATH_H_
diff --git a/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.h b/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.h
index 30a25a9..2b0f485 100644
--- a/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.h
+++ b/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_FIFO_PACKET_H_
-#define LIBRARIES_NACL_IO_FIFO_PACKET_H_
+#ifndef LIBRARIES_NACL_IO_SOCKET_FIFO_PACKET_H_
+#define LIBRARIES_NACL_IO_SOCKET_FIFO_PACKET_H_
 
 #include <stdint.h>
 #include <string.h>
@@ -62,4 +62,4 @@
 
 }  // namespace nacl_io
 
-#endif  // LIBRARIES_NACL_IO_FIFO_PACKET_H_
+#endif  // LIBRARIES_NACL_IO_SOCKET_FIFO_PACKET_H_
diff --git a/native_client_sdk/src/libraries/nacl_io/stream/stream_fs.h b/native_client_sdk/src/libraries/nacl_io/stream/stream_fs.h
index c4c40fe..ec562176 100644
--- a/native_client_sdk/src/libraries/nacl_io/stream/stream_fs.h
+++ b/native_client_sdk/src/libraries/nacl_io/stream/stream_fs.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_STREAM_STREAM_H_
-#define LIBRARIES_NACL_IO_STREAM_STREAM_H_
+#ifndef LIBRARIES_NACL_IO_STREAM_STREAM_FS_H_
+#define LIBRARIES_NACL_IO_STREAM_STREAM_FS_H_
 
 #include "nacl_io/filesystem.h"
 
@@ -75,4 +75,4 @@
 
 }  // namespace nacl_io
 
-#endif  // LIBRARIES_NACL_IO_STREAM_STREAM_H_
+#endif  // LIBRARIES_NACL_IO_STREAM_STREAM_FS_H_
diff --git a/native_client_sdk/src/libraries/ppapi_simple/ps.h b/native_client_sdk/src/libraries/ppapi_simple/ps.h
index c1030f74..bf1446eb 100644
--- a/native_client_sdk/src/libraries/ppapi_simple/ps.h
+++ b/native_client_sdk/src/libraries/ppapi_simple/ps.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef PPAPI_SIMPLE_PS_H_
-#define PPAPI_SIMPLE_PS_H_
+#ifndef LIBRARIES_PPAPI_SIMPLE_PS_H_
+#define LIBRARIES_PPAPI_SIMPLE_PS_H_
 
 #include "ppapi/c/pp_instance.h"
 #include "sdk_util/macros.h"
@@ -55,4 +55,4 @@
 
 EXTERN_C_END
 
-#endif  /* PPAPI_SIMPLE_PS_H_ */
+#endif  // LIBRARIES_PPAPI_SIMPLE_PS_H_
diff --git a/native_client_sdk/src/libraries/ppapi_simple/ps_context_2d.h b/native_client_sdk/src/libraries/ppapi_simple/ps_context_2d.h
index 74541ec..3b2e902 100644
--- a/native_client_sdk/src/libraries/ppapi_simple/ps_context_2d.h
+++ b/native_client_sdk/src/libraries/ppapi_simple/ps_context_2d.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef PPAPI_SIMPLE_PS_CONTEXT_2D_H_
-#define PPAPI_SIMPLE_PS_CONTEXT_2D_H_
+#ifndef LIBRARIES_PPAPI_SIMPLE_PS_CONTEXT_2D_H_
+#define LIBRARIES_PPAPI_SIMPLE_PS_CONTEXT_2D_H_
 
 #include "ppapi/c/pp_resource.h"
 #include "ppapi/c/ppb_graphics_2d.h"
@@ -71,4 +71,4 @@
 
 EXTERN_C_END
 
-#endif  /* PPAPI_SIMPLE_PS_CONTEXT_2D_H_ */
+#endif  // LIBRARIES_PPAPI_SIMPLE_PS_CONTEXT_2D_H_
diff --git a/native_client_sdk/src/libraries/ppapi_simple/ps_event.h b/native_client_sdk/src/libraries/ppapi_simple/ps_event.h
index 7c2f0d4d..4c079433 100644
--- a/native_client_sdk/src/libraries/ppapi_simple/ps_event.h
+++ b/native_client_sdk/src/libraries/ppapi_simple/ps_event.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef PPAPI_SIMPLE_PS_EVENT_H_
-#define PPAPI_SIMPLE_PS_EVENT_H_
+#ifndef LIBRARIES_PPAPI_SIMPLE_PS_EVENT_H_
+#define LIBRARIES_PPAPI_SIMPLE_PS_EVENT_H_
 
 #include "ppapi/c/pp_bool.h"
 #include "ppapi/c/pp_resource.h"
@@ -122,4 +122,4 @@
 
 EXTERN_C_END
 
-#endif  /* PPAPI_SIMPLE_PS_EVENT_H_ */
+#endif  // LIBRARIES_PPAPI_SIMPLE_PS_EVENT_H_
diff --git a/native_client_sdk/src/libraries/ppapi_simple/ps_instance.h b/native_client_sdk/src/libraries/ppapi_simple/ps_instance.h
index 0def929..585ef1c 100644
--- a/native_client_sdk/src/libraries/ppapi_simple/ps_instance.h
+++ b/native_client_sdk/src/libraries/ppapi_simple/ps_instance.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef PPAPI_SIMPLE_PS_INSTANCE_H_
-#define PPAPI_SIMPLE_PS_INSTANCE_H_
+#ifndef LIBRARIES_PPAPI_SIMPLE_PS_INSTANCE_H_
+#define LIBRARIES_PPAPI_SIMPLE_PS_INSTANCE_H_
 
 #include <stdarg.h>
 
@@ -31,4 +31,4 @@
 
 EXTERN_C_END
 
-#endif  /* PPAPI_SIMPLE_PS_INSTANCE_H_ */
+#endif  // LIBRARIES_PPAPI_SIMPLE_PS_INSTANCE_H_
diff --git a/native_client_sdk/src/libraries/ppapi_simple/ps_interface.h b/native_client_sdk/src/libraries/ppapi_simple/ps_interface.h
index 53ba836..74a1ee77 100644
--- a/native_client_sdk/src/libraries/ppapi_simple/ps_interface.h
+++ b/native_client_sdk/src/libraries/ppapi_simple/ps_interface.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef PPAPI_SIMPLE_PS_INTERFACE_H_
-#define PPAPI_SIMPLE_PS_INTERFACE_H_
+#ifndef LIBRARIES_PPAPI_SIMPLE_PS_INTERFACE_H_
+#define LIBRARIES_PPAPI_SIMPLE_PS_INTERFACE_H_
 
 #include "ppapi/c/pp_bool.h"
 #include "ppapi/c/pp_resource.h"
@@ -75,4 +75,4 @@
 
 EXTERN_C_END
 
-#endif  /* PPAPI_SIMPLE_PS_INTERFACE_H */
+#endif  // LIBRARIES_PPAPI_SIMPLE_PS_INTERFACE_H_
diff --git a/native_client_sdk/src/libraries/ppapi_simple/ps_internal.h b/native_client_sdk/src/libraries/ppapi_simple/ps_internal.h
index 360b1193..65854ca 100644
--- a/native_client_sdk/src/libraries/ppapi_simple/ps_internal.h
+++ b/native_client_sdk/src/libraries/ppapi_simple/ps_internal.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef PPAPI_SIMPLE_PS_INTERNAL_H_
-#define PPAPI_SIMPLE_PS_INTERNAL_H_
+#ifndef LIBRARIES_PPAPI_SIMPLE_PS_INTERNAL_H_
+#define LIBRARIES_PPAPI_SIMPLE_PS_INTERNAL_H_
 
 #include "ppapi/c/ppb.h"
 
@@ -15,4 +15,4 @@
 
 EXTERN_C_END
 
-#endif  /* PPAPI_SIMPLE_PS_INTERNAL_H_ */
+#endif  // LIBRARIES_PPAPI_SIMPLE_PS_INTERNAL_H_
diff --git a/native_client_sdk/src/libraries/ppapi_simple/ps_main.h b/native_client_sdk/src/libraries/ppapi_simple/ps_main.h
index 22975ca..19f3bbf 100644
--- a/native_client_sdk/src/libraries/ppapi_simple/ps_main.h
+++ b/native_client_sdk/src/libraries/ppapi_simple/ps_main.h
@@ -2,8 +2,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
-#ifndef PPAPI_SIMPLE_PS_MAIN_H_
-#define PPAPI_SIMPLE_PS_MAIN_H_
+#ifndef LIBRARIES_PPAPI_SIMPLE_PS_MAIN_H_
+#define LIBRARIES_PPAPI_SIMPLE_PS_MAIN_H_
 
 #include "ppapi_simple/ps.h"
 #include "ppapi_simple/ps_event.h"
@@ -35,4 +35,4 @@
 
 EXTERN_C_END
 
-#endif  /* PPAPI_SIMPLE_PS_MAIN_H_ */
+#endif  // LIBRARIES_PPAPI_SIMPLE_PS_MAIN_H_
diff --git a/native_client_sdk/src/libraries/sdk_util/atomicops.h b/native_client_sdk/src/libraries/sdk_util/atomicops.h
index 5a0c019..f2e1160 100644
--- a/native_client_sdk/src/libraries/sdk_util/atomicops.h
+++ b/native_client_sdk/src/libraries/sdk_util/atomicops.h
@@ -106,4 +106,4 @@
 
 #endif  // ifndef WIN32
 
-#endif  /* LIBRARIES_SDK_UTIL_ATOMICOPS_H_ */
+#endif  // LIBRARIES_SDK_UTIL_ATOMICOPS_H_
diff --git a/native_client_sdk/src/libraries/sdk_util/macros.h b/native_client_sdk/src/libraries/sdk_util/macros.h
index 1f50340..3263abd9 100644
--- a/native_client_sdk/src/libraries/sdk_util/macros.h
+++ b/native_client_sdk/src/libraries/sdk_util/macros.h
@@ -46,4 +46,4 @@
 #define PRINTF_LIKE(a, b)
 #endif
 
-#endif  /* LIBRARIES_SDK_UTIL_MACROS_H_ */
+#endif  // LIBRARIES_SDK_UTIL_MACROS_H_
diff --git a/native_client_sdk/src/libraries/sdk_util/ref_object.h b/native_client_sdk/src/libraries/sdk_util/ref_object.h
index 707a335e..30d88328 100644
--- a/native_client_sdk/src/libraries/sdk_util/ref_object.h
+++ b/native_client_sdk/src/libraries/sdk_util/ref_object.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_SDK_UTIL_REF_OBJECT
-#define LIBRARIES_SDK_UTIL_REF_OBJECT
+#ifndef LIBRARIES_SDK_UTIL_REF_OBJECT_H_
+#define LIBRARIES_SDK_UTIL_REF_OBJECT_H_
 
 #include <stdlib.h>
 #include "pthread.h"
@@ -70,5 +70,5 @@
 
 }  // namespace sdk_util
 
-#endif  // LIBRARIES_SDK_UTIL_REF_OBJECT
+#endif  // LIBRARIES_SDK_UTIL_REF_OBJECT_H_
 
diff --git a/native_client_sdk/src/libraries/xray/xray.h b/native_client_sdk/src/libraries/xray/xray.h
index 32feed0..2b62e88 100644
--- a/native_client_sdk/src/libraries/xray/xray.h
+++ b/native_client_sdk/src/libraries/xray/xray.h
@@ -114,4 +114,4 @@
 }
 #endif
 
-#endif  /* LIBRARIES_XRAY_XRAY_H_ */
+#endif  // LIBRARIES_XRAY_XRAY_H_
diff --git a/native_client_sdk/src/libraries/xray/xray_priv.h b/native_client_sdk/src/libraries/xray/xray_priv.h
index 714c91d..c9b300d 100644
--- a/native_client_sdk/src/libraries/xray/xray_priv.h
+++ b/native_client_sdk/src/libraries/xray/xray_priv.h
@@ -204,4 +204,4 @@
 }
 #endif
 
-#endif  /* LIBRARIES_XRAY_XRAY_PRIV_H_ */
+#endif  // LIBRARIES_XRAY_XRAY_PRIV_H_
diff --git a/native_client_sdk/src/tests/nacl_io_socket_test/echo_server.h b/native_client_sdk/src/tests/nacl_io_socket_test/echo_server.h
index 435160d4..c8f633a 100644
--- a/native_client_sdk/src/tests/nacl_io_socket_test/echo_server.h
+++ b/native_client_sdk/src/tests/nacl_io_socket_test/echo_server.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ECHO_SERVER_H_
-#define ECHO_SERVER_H_
+#ifndef TESTS_NACL_IO_SOCKET_TEST_ECHO_SERVER_H_
+#define TESTS_NACL_IO_SOCKET_TEST_ECHO_SERVER_H_
 
 #include "ppapi/cpp/instance.h"
 #include "ppapi/cpp/tcp_socket.h"
@@ -62,4 +62,4 @@
   LogFunction log_function_;
 };
 
-#endif  // ECHO_SERVER_H_
+#endif  // TESTS_NACL_IO_SOCKET_TEST_ECHO_SERVER_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_core_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_core_interface.h
index acab5b9..6579862f 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_core_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_core_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_CORE_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_CORE_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_CORE_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_CORE_INTERFACE_H_
 
 #include "fake_ppapi/fake_resource_manager.h"
 #include "nacl_io/pepper_interface.h"
@@ -25,4 +25,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeCoreInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_CORE_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_CORE_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_io_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_io_interface.h
index cc5beda3..ad6d713 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_io_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_io_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_FILE_IO_INTERFACE_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_FILE_IO_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_IO_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_IO_INTERFACE_H_
 
 #include "fake_ppapi/fake_core_interface.h"
 #include "sdk_util/macros.h"
@@ -42,4 +42,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeFileIoInterface);
 };
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_FILE_IO_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_IO_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_ref_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_ref_interface.h
index cb8dc36..86322b1 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_ref_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_ref_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_FILE_REF_INTERFACE_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_FILE_REF_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_REF_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_REF_INTERFACE_H_
 
 #include "fake_ppapi/fake_core_interface.h"
 #include "fake_ppapi/fake_var_interface.h"
@@ -39,4 +39,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeFileRefInterface);
 };
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_FILE_REF_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_REF_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_system_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_system_interface.h
index 3284734..d51fea0 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_system_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_file_system_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_FILE_SYSTEM_INTERFACE_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_FILE_SYSTEM_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_SYSTEM_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_SYSTEM_INTERFACE_H_
 
 #include "fake_ppapi/fake_core_interface.h"
 #include "sdk_util/macros.h"
@@ -24,4 +24,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeFileSystemInterface);
 };
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_FILE_SYSTEM_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILE_SYSTEM_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_filesystem.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_filesystem.h
index 15c24892..a63ac4c2 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_filesystem.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_filesystem.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_FILESYSTEM_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_FILESYSTEM_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILESYSTEM_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILESYSTEM_H_
 
 #include <map>
 #include <string>
@@ -50,4 +50,4 @@
   PP_FileSystemType filesystem_type_;
 };
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_FILESYSTEM_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_FILESYSTEM_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_host_resolver_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_host_resolver_interface.h
index 1c838901..abe9931 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_host_resolver_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_host_resolver_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_HOST_RESOLVER_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_HOST_RESOLVER_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_HOST_RESOLVER_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_HOST_RESOLVER_INTERFACE_H_
 
 #include <ppapi/c/ppb_host_resolver.h>
 
@@ -42,4 +42,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeHostResolverInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_HOST_RESOLVER_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_HOST_RESOLVER_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_messaging_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_messaging_interface.h
index 8ae42d5..e7fca89 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_messaging_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_messaging_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_MESSAGING_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_MESSAGING_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_MESSAGING_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_MESSAGING_INTERFACE_H_
 
 #include <string>
 #include <vector>
@@ -31,4 +31,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeMessagingInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_MESSAGING_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_MESSAGING_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_net_address_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_net_address_interface.h
index 1ff29c1..6ec872f 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_net_address_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_net_address_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_NET_ADDRESS_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_NET_ADDRESS_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_NET_ADDRESS_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_NET_ADDRESS_INTERFACE_H_
 
 #include <ppapi/c/ppb_host_resolver.h>
 
@@ -30,4 +30,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeNetAddressInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_NET_ADDRESS_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_NET_ADDRESS_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_node.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_node.h
index 9afc3fa..73dcdde 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_node.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_node.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_NODE_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_NODE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_NODE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_NODE_H_
 
 #include <string>
 #include <vector>
@@ -37,4 +37,4 @@
   std::vector<uint8_t> contents_;
 };
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_NODE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_NODE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface.h
index 1e6786c..3693619 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_H_
 
 #include "fake_ppapi/fake_core_interface.h"
 #include "fake_ppapi/fake_host_resolver_interface.h"
@@ -52,4 +52,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakePepperInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_googledrivefs.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_googledrivefs.h
index 1a36d82..df59b08 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_googledrivefs.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_googledrivefs.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_GOOGLEDRIVEFS_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_GOOGLEDRIVEFS_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_GOOGLEDRIVEFS_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_GOOGLEDRIVEFS_H_
 
 #include <string>
 
@@ -130,4 +130,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakePepperInterfaceGoogleDriveFs);
 };
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_GOOGLEDRIVEFS_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_GOOGLEDRIVEFS_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.h
index 15bbf714..f4b29692 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_HTML5_FS_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_HTML5_FS_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_HTML5_FS_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_HTML5_FS_H_
 
 #include "fake_ppapi/fake_core_interface.h"
 #include "fake_ppapi/fake_file_io_interface.h"
@@ -59,4 +59,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakePepperInterfaceHtml5Fs);
 };
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_HTML5_FS_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_HTML5_FS_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_url_loader.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_url_loader.h
index fd22c78..0cab8a54 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_url_loader.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_url_loader.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_URL_LOADER_H_
-#define TESTS_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_URL_LOADER_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_URL_LOADER_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_URL_LOADER_H_
 
 #include <map>
 #include <string>
@@ -180,4 +180,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakePepperInterfaceURLLoader);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_URL_LOADER_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_PEPPER_INTERFACE_URL_LOADER_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_resource_manager.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_resource_manager.h
index 2ddd468..9f47da40 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_resource_manager.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_resource_manager.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_
-#define TESTS_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_RESOURCE_MANAGER_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_RESOURCE_MANAGER_H_
 
 #include <map>
 
@@ -113,4 +113,4 @@
 #define CREATE_RESOURCE(MANAGER, TYPE, RESOURCE) \
   (MANAGER)->Create((RESOURCE), #TYPE, __FILE__, __LINE__)
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_RESOURCE_MANAGER_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.h
index 0e77fd1..c9a2278 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBRARIES_NACL_IO_TEST_FAKE_UTIL_H_
-#define LIBRARIES_NACL_IO_TEST_FAKE_UTIL_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_UTIL_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_UTIL_H_
 
 #include <string>
 
@@ -72,4 +72,4 @@
                const std::string& value,
                std::string* out_headers);
 
-#endif  // LIBRARIES_NACL_IO_TEST_FAKE_UTIL_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_UTIL_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_buffer_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_buffer_interface.h
index 8f0d23e..5d53e66d 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_buffer_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_buffer_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_VAR_ARRAY_BUFFER_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_VAR_ARRAY_BUFFER_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_ARRAY_BUFFER_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_ARRAY_BUFFER_INTERFACE_H_
 
 #include "nacl_io/pepper_interface.h"
 #include "sdk_util/macros.h"
@@ -25,4 +25,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeVarArrayBufferInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_VAR_ARRAY_BUFFER_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_ARRAY_BUFFER_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_interface.h
index 1c815833..0c021f3 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_array_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_VAR_ARRAY_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_VAR_ARRAY_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_ARRAY_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_ARRAY_INTERFACE_H_
 
 #include "nacl_io/pepper_interface.h"
 #include "sdk_util/macros.h"
@@ -26,4 +26,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeVarArrayInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_VAR_ARRAY_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_ARRAY_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_dictionary_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_dictionary_interface.h
index 5199863..11f39b9 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_dictionary_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_dictionary_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_VAR_DICTIONARY_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_VAR_DICTIONARY_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_DICTIONARY_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_DICTIONARY_INTERFACE_H_
 
 #include "nacl_io/pepper_interface.h"
 #include "sdk_util/macros.h"
@@ -31,4 +31,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeVarDictionaryInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_VAR_DICTIONARY_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_DICTIONARY_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_interface.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_interface.h
index c6dd4ea..d5b7702 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_interface.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_interface.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_VAR_INTERFACE_H_
-#define TESTS_NACL_IO_TEST_FAKE_VAR_INTERFACE_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_INTERFACE_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_INTERFACE_H_
 
 #include "nacl_io/pepper_interface.h"
 #include "sdk_util/macros.h"
@@ -25,4 +25,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeVarInterface);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_VAR_INTERFACE_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_INTERFACE_H_
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_manager.h b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_manager.h
index 5c7909f8..5186363 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_manager.h
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_var_manager.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_
-#define TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_
+#ifndef TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_MANAGER_H_
+#define TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_MANAGER_H_
 
 #include <map>
 #include <ppapi/c/pp_var.h>
@@ -56,4 +56,4 @@
   DISALLOW_COPY_AND_ASSIGN(FakeVarManager);
 };
 
-#endif  // TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_
+#endif  // TESTS_NACL_IO_TEST_FAKE_PPAPI_FAKE_VAR_MANAGER_H_
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 8520d2e..7b48eb1 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -3279,7 +3279,9 @@
                            base::StringPiece debug_data) {
   CHECK(in_io_loop_);
 
-  // TODO(jgraettinger): UMA histogram on |error_code|.
+  // Use sparse histogram to record the unlikely case that a server sends
+  // an unknown error code.
+  base::UmaHistogramSparse("Net.SpdySession.GoAwayReceived", error_code);
 
   net_log_.AddEvent(
       NetLogEventType::HTTP2_SESSION_RECV_GOAWAY,
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 7b9c54de..7364a6f 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -592,11 +592,12 @@
 void PDFiumEngine::ScrolledToXPosition(int position) {
   CancelPaints();
 
-  gfx::Vector2d diff(position_.x() - position, 0);
+  int old_x = position_.x();
   position_.set_x(position);
   CalculateVisiblePages();
 
-  client_->DidScroll(diff);
+  gfx::Vector2d diff(position - old_x, 0);
+  client_->DidScroll(-diff);
   caret_rect_ += diff;
   client_->CaretChanged(caret_rect_);
 
@@ -606,11 +607,12 @@
 void PDFiumEngine::ScrolledToYPosition(int position) {
   CancelPaints();
 
-  gfx::Vector2d diff(0, position_.y() - position);
+  int old_y = position_.y();
   position_.set_y(position);
   CalculateVisiblePages();
 
-  client_->DidScroll(diff);
+  gfx::Vector2d diff(0, position - old_y);
+  client_->DidScroll(-diff);
   caret_rect_ += diff;
   client_->CaretChanged(caret_rect_);
 
@@ -3933,12 +3935,7 @@
                         rect_screen.y() - position_.y(), rect_screen.width(),
                         rect_screen.height());
 
-    // The caret rect will be cached in `TextInputManager`.
     client_->CaretChanged(caret_rect_);
-    // We need to explicitly clear the selected text, otherwise the selection
-    // range will be an InvalidRange, which does not match the cache in
-    // `TextInputManager`.
-    client_->SetSelectedText("");
   }
 }
 
diff --git a/remoting/host/pairing_registry_delegate_win.cc b/remoting/host/pairing_registry_delegate_win.cc
index 0f85af0..258ab4a 100644
--- a/remoting/host/pairing_registry_delegate_win.cc
+++ b/remoting/host/pairing_registry_delegate_win.cc
@@ -218,11 +218,13 @@
   std::unique_ptr<base::DictionaryValue> pairing_json = pairing.ToValue();
 
   // Extract the shared secret to a separate dictionary.
-  std::unique_ptr<base::Value> secret_key;
-  CHECK(pairing_json->Remove(PairingRegistry::kSharedSecretKey, &secret_key));
+  absl::optional<base::Value> secret_key =
+      pairing_json->ExtractKey(PairingRegistry::kSharedSecretKey);
+  CHECK(secret_key.has_value());
   std::unique_ptr<base::DictionaryValue> secret_json(
       new base::DictionaryValue());
-  secret_json->Set(PairingRegistry::kSharedSecretKey, std::move(secret_key));
+  secret_json->SetKey(PairingRegistry::kSharedSecretKey,
+                      std::move(*secret_key));
 
   // presubmit: allow wstring
   std::wstring value_name = base::UTF8ToWide(pairing.client_id());
diff --git a/remoting/host/policy_watcher_unittest.cc b/remoting/host/policy_watcher_unittest.cc
index 77e01f0..659afaa 100644
--- a/remoting/host/policy_watcher_unittest.cc
+++ b/remoting/host/policy_watcher_unittest.cc
@@ -79,31 +79,31 @@
     policy_watcher_default_values_ = PolicyWatcher::GetDefaultPolicies();
 
     base::ListValue host_domain;
-    host_domain.AppendString(kHostDomain);
+    host_domain.Append(kHostDomain);
     base::ListValue client_domain;
-    client_domain.AppendString(kClientDomain);
+    client_domain.Append(kClientDomain);
     base::ListValue multiple_host_domains;
-    multiple_host_domains.AppendString("a.com");
-    multiple_host_domains.AppendString("b.com");
-    multiple_host_domains.AppendString("c.com");
+    multiple_host_domains.Append("a.com");
+    multiple_host_domains.Append("b.com");
+    multiple_host_domains.Append("c.com");
     base::ListValue multiple_client_domains;
-    multiple_client_domains.AppendString("d.com");
-    multiple_client_domains.AppendString("e.com");
-    multiple_client_domains.AppendString("f.com");
+    multiple_client_domains.Append("d.com");
+    multiple_client_domains.Append("e.com");
+    multiple_client_domains.Append("f.com");
 
-    nat_true_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, true);
-    nat_false_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, false);
-    nat_one_.SetInteger(key::kRemoteAccessHostFirewallTraversal, 1);
-    nat_one_domain_full_.SetInteger(key::kRemoteAccessHostFirewallTraversal, 1);
+    nat_true_.SetBoolKey(key::kRemoteAccessHostFirewallTraversal, true);
+    nat_false_.SetBoolKey(key::kRemoteAccessHostFirewallTraversal, false);
+    nat_one_.SetIntKey(key::kRemoteAccessHostFirewallTraversal, 1);
+    nat_one_domain_full_.SetIntKey(key::kRemoteAccessHostFirewallTraversal, 1);
     nat_one_domain_full_.SetKey(key::kRemoteAccessHostDomainList,
                                 host_domain.Clone());
     domain_empty_.SetKey(key::kRemoteAccessHostDomainList, base::ListValue());
     domain_full_.SetKey(key::kRemoteAccessHostDomainList, host_domain.Clone());
     SetDefaults(nat_true_others_default_);
-    nat_true_others_default_.SetBoolean(key::kRemoteAccessHostFirewallTraversal,
+    nat_true_others_default_.SetBoolKey(key::kRemoteAccessHostFirewallTraversal,
                                         true);
     SetDefaults(nat_false_others_default_);
-    nat_false_others_default_.SetBoolean(
+    nat_false_others_default_.SetBoolKey(
         key::kRemoteAccessHostFirewallTraversal, false);
     SetDefaults(domain_empty_others_default_);
     domain_empty_others_default_.SetKey(key::kRemoteAccessHostDomainList,
@@ -111,70 +111,72 @@
     SetDefaults(domain_full_others_default_);
     domain_full_others_default_.SetKey(key::kRemoteAccessHostDomainList,
                                        host_domain.Clone());
-    nat_true_domain_empty_.SetBoolean(key::kRemoteAccessHostFirewallTraversal,
+    nat_true_domain_empty_.SetBoolKey(key::kRemoteAccessHostFirewallTraversal,
                                       true);
     nat_true_domain_empty_.SetKey(key::kRemoteAccessHostDomainList,
                                   base::ListValue());
-    nat_true_domain_full_.SetBoolean(key::kRemoteAccessHostFirewallTraversal,
+    nat_true_domain_full_.SetBoolKey(key::kRemoteAccessHostFirewallTraversal,
                                      true);
     nat_true_domain_full_.SetKey(key::kRemoteAccessHostDomainList,
                                  host_domain.Clone());
-    nat_false_domain_empty_.SetBoolean(key::kRemoteAccessHostFirewallTraversal,
+    nat_false_domain_empty_.SetBoolKey(key::kRemoteAccessHostFirewallTraversal,
                                        false);
     nat_false_domain_empty_.SetKey(key::kRemoteAccessHostDomainList,
                                    base::ListValue());
-    nat_false_domain_full_.SetBoolean(key::kRemoteAccessHostFirewallTraversal,
+    nat_false_domain_full_.SetBoolKey(key::kRemoteAccessHostFirewallTraversal,
                                       false);
     nat_false_domain_full_.SetKey(key::kRemoteAccessHostDomainList,
                                   host_domain.Clone());
     SetDefaults(nat_true_domain_empty_others_default_);
-    nat_true_domain_empty_others_default_.SetBoolean(
+    nat_true_domain_empty_others_default_.SetBoolKey(
         key::kRemoteAccessHostFirewallTraversal, true);
     nat_true_domain_empty_others_default_.SetKey(
         key::kRemoteAccessHostDomainList, base::ListValue());
-    unknown_policies_.SetString("UnknownPolicyOne", std::string());
-    unknown_policies_.SetString("UnknownPolicyTwo", std::string());
-    unknown_policies_.SetBoolean("RemoteAccessHostUnknownPolicyThree", true);
+    unknown_policies_.SetStringKey("UnknownPolicyOne", std::string());
+    unknown_policies_.SetStringKey("UnknownPolicyTwo", std::string());
+    unknown_policies_.SetBoolKey("RemoteAccessHostUnknownPolicyThree", true);
 
-    pairing_true_.SetBoolean(key::kRemoteAccessHostAllowClientPairing, true);
-    pairing_false_.SetBoolean(key::kRemoteAccessHostAllowClientPairing, false);
-    gnubby_auth_true_.SetBoolean(key::kRemoteAccessHostAllowGnubbyAuth, true);
-    gnubby_auth_false_.SetBoolean(key::kRemoteAccessHostAllowGnubbyAuth, false);
-    relay_true_.SetBoolean(key::kRemoteAccessHostAllowRelayedConnection, true);
-    relay_false_.SetBoolean(key::kRemoteAccessHostAllowRelayedConnection,
+    pairing_true_.SetBoolKey(key::kRemoteAccessHostAllowClientPairing, true);
+    pairing_false_.SetBoolKey(key::kRemoteAccessHostAllowClientPairing, false);
+    gnubby_auth_true_.SetBoolKey(key::kRemoteAccessHostAllowGnubbyAuth, true);
+    gnubby_auth_false_.SetBoolKey(key::kRemoteAccessHostAllowGnubbyAuth, false);
+    relay_true_.SetBoolKey(key::kRemoteAccessHostAllowRelayedConnection, true);
+    relay_false_.SetBoolKey(key::kRemoteAccessHostAllowRelayedConnection,
                             false);
-    port_range_full_.SetString(key::kRemoteAccessHostUdpPortRange, kPortRange);
-    port_range_empty_.SetString(key::kRemoteAccessHostUdpPortRange,
-                                std::string());
-    port_range_malformed_.SetString(key::kRemoteAccessHostUdpPortRange,
-                                    "malformed");
+    port_range_full_.SetStringKey(key::kRemoteAccessHostUdpPortRange,
+                                  kPortRange);
+    port_range_empty_.SetStringKey(key::kRemoteAccessHostUdpPortRange,
+                                   std::string());
+    port_range_malformed_.SetStringKey(key::kRemoteAccessHostUdpPortRange,
+                                       "malformed");
     port_range_malformed_domain_full_.MergeDictionary(&port_range_malformed_);
     port_range_malformed_domain_full_.SetKey(key::kRemoteAccessHostDomainList,
                                              host_domain.Clone());
 
-    curtain_true_.SetBoolean(key::kRemoteAccessHostRequireCurtain, true);
-    curtain_false_.SetBoolean(key::kRemoteAccessHostRequireCurtain, false);
-    username_true_.SetBoolean(key::kRemoteAccessHostMatchUsername, true);
-    username_false_.SetBoolean(key::kRemoteAccessHostMatchUsername, false);
-    third_party_auth_partial_.SetString(key::kRemoteAccessHostTokenUrl,
-                                        "https://token.com");
-    third_party_auth_partial_.SetString(
+    curtain_true_.SetBoolKey(key::kRemoteAccessHostRequireCurtain, true);
+    curtain_false_.SetBoolKey(key::kRemoteAccessHostRequireCurtain, false);
+    username_true_.SetBoolKey(key::kRemoteAccessHostMatchUsername, true);
+    username_false_.SetBoolKey(key::kRemoteAccessHostMatchUsername, false);
+    third_party_auth_partial_.SetStringKey(key::kRemoteAccessHostTokenUrl,
+                                           "https://token.com");
+    third_party_auth_partial_.SetStringKey(
         key::kRemoteAccessHostTokenValidationUrl, "https://validation.com");
     third_party_auth_full_.MergeDictionary(&third_party_auth_partial_);
-    third_party_auth_full_.SetString(
+    third_party_auth_full_.SetStringKey(
         key::kRemoteAccessHostTokenValidationCertificateIssuer,
         "certificate subject");
     third_party_auth_cert_empty_.MergeDictionary(&third_party_auth_partial_);
-    third_party_auth_cert_empty_.SetString(
+    third_party_auth_cert_empty_.SetStringKey(
         key::kRemoteAccessHostTokenValidationCertificateIssuer, "");
-    remote_assistance_uiaccess_true_.SetBoolean(
+    remote_assistance_uiaccess_true_.SetBoolKey(
         key::kRemoteAccessHostAllowUiAccessForRemoteAssistance, true);
-    remote_assistance_uiaccess_false_.SetBoolean(
+    remote_assistance_uiaccess_false_.SetBoolKey(
         key::kRemoteAccessHostAllowUiAccessForRemoteAssistance, false);
 
-    deprecated_policies_.SetString(key::kRemoteAccessHostDomain, kHostDomain);
-    deprecated_policies_.SetString(key::kRemoteAccessHostClientDomain,
-                                   kClientDomain);
+    deprecated_policies_.SetStringKey(key::kRemoteAccessHostDomain,
+                                      kHostDomain);
+    deprecated_policies_.SetStringKey(key::kRemoteAccessHostClientDomain,
+                                      kClientDomain);
     // Deprecated policies should get converted if new ones aren't present.
     SetDefaults(deprecated_policies_expected_);
     deprecated_policies_expected_.SetKey(key::kRemoteAccessHostDomainList,
@@ -182,10 +184,10 @@
     deprecated_policies_expected_.SetKey(key::kRemoteAccessHostClientDomainList,
                                          client_domain.Clone());
 
-    deprecated_and_new_policies_.SetString(key::kRemoteAccessHostDomain,
-                                           kHostDomain);
-    deprecated_and_new_policies_.SetString(key::kRemoteAccessHostClientDomain,
-                                           kClientDomain);
+    deprecated_and_new_policies_.SetStringKey(key::kRemoteAccessHostDomain,
+                                              kHostDomain);
+    deprecated_and_new_policies_.SetStringKey(
+        key::kRemoteAccessHostClientDomain, kClientDomain);
     deprecated_and_new_policies_.SetKey(key::kRemoteAccessHostDomainList,
                                         multiple_host_domains.Clone());
     deprecated_and_new_policies_.SetKey(key::kRemoteAccessHostClientDomainList,
@@ -199,8 +201,9 @@
         multiple_client_domains.Clone());
 
     // Empty strings should be treated as not set.
-    deprecated_empty_strings_.SetString(key::kRemoteAccessHostDomain, "");
-    deprecated_empty_strings_.SetString(key::kRemoteAccessHostClientDomain, "");
+    deprecated_empty_strings_.SetStringKey(key::kRemoteAccessHostDomain, "");
+    deprecated_empty_strings_.SetStringKey(key::kRemoteAccessHostClientDomain,
+                                           "");
   }
 
   void TearDown() override {
@@ -301,25 +304,26 @@
 
  private:
   void SetDefaults(base::DictionaryValue& dict) {
-    dict.SetBoolean(key::kRemoteAccessHostFirewallTraversal, true);
-    dict.SetBoolean(key::kRemoteAccessHostAllowRelayedConnection, true);
-    dict.SetString(key::kRemoteAccessHostUdpPortRange, "");
+    dict.SetBoolKey(key::kRemoteAccessHostFirewallTraversal, true);
+    dict.SetBoolKey(key::kRemoteAccessHostAllowRelayedConnection, true);
+    dict.SetStringKey(key::kRemoteAccessHostUdpPortRange, "");
     dict.SetKey(key::kRemoteAccessHostClientDomainList, base::ListValue());
     dict.SetKey(key::kRemoteAccessHostDomainList, base::ListValue());
-    dict.SetBoolean(key::kRemoteAccessHostMatchUsername, false);
-    dict.SetBoolean(key::kRemoteAccessHostRequireCurtain, false);
-    dict.SetString(key::kRemoteAccessHostTokenUrl, "");
-    dict.SetString(key::kRemoteAccessHostTokenValidationUrl, "");
-    dict.SetString(key::kRemoteAccessHostTokenValidationCertificateIssuer, "");
-    dict.SetBoolean(key::kRemoteAccessHostAllowClientPairing, true);
-    dict.SetBoolean(key::kRemoteAccessHostAllowGnubbyAuth, true);
-    dict.SetBoolean(key::kRemoteAccessHostAllowUiAccessForRemoteAssistance,
+    dict.SetBoolKey(key::kRemoteAccessHostMatchUsername, false);
+    dict.SetBoolKey(key::kRemoteAccessHostRequireCurtain, false);
+    dict.SetStringKey(key::kRemoteAccessHostTokenUrl, "");
+    dict.SetStringKey(key::kRemoteAccessHostTokenValidationUrl, "");
+    dict.SetStringKey(key::kRemoteAccessHostTokenValidationCertificateIssuer,
+                      "");
+    dict.SetBoolKey(key::kRemoteAccessHostAllowClientPairing, true);
+    dict.SetBoolKey(key::kRemoteAccessHostAllowGnubbyAuth, true);
+    dict.SetBoolKey(key::kRemoteAccessHostAllowUiAccessForRemoteAssistance,
                     false);
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
-    dict.SetBoolean(key::kRemoteAccessHostAllowFileTransfer, true);
-    dict.SetBoolean(key::kRemoteAccessHostEnableUserInterface, true);
-    dict.SetBoolean(key::kRemoteAccessHostAllowRemoteAccessConnections, true);
-    dict.SetInteger(key::kRemoteAccessHostMaximumSessionDurationMinutes, 0);
+    dict.SetBoolKey(key::kRemoteAccessHostAllowFileTransfer, true);
+    dict.SetBoolKey(key::kRemoteAccessHostEnableUserInterface, true);
+    dict.SetBoolKey(key::kRemoteAccessHostAllowRemoteAccessConnections, true);
+    dict.SetIntKey(key::kRemoteAccessHostMaximumSessionDurationMinutes, 0);
 #endif
 
     ASSERT_THAT(&dict, IsPolicies(&GetDefaultValues()))
@@ -515,7 +519,7 @@
               OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_)));
 
   base::DictionaryValue misspelled_policies;
-  misspelled_policies.SetString(misspelled_policy_name, "some test value");
+  misspelled_policies.SetStringKey(misspelled_policy_name, "some test value");
   mock_log.StartCapturingLogs();
 
   SetPolicies(misspelled_policies);
diff --git a/remoting/protocol/mouse_input_filter.cc b/remoting/protocol/mouse_input_filter.cc
index 787b400f..e4fa4aa 100644
--- a/remoting/protocol/mouse_input_filter.cc
+++ b/remoting/protocol/mouse_input_filter.cc
@@ -43,13 +43,15 @@
     int x = out_event.x();
     if (x_output_ != x_input_)
       x = ((x * x_output_) + (x_input_ / 2)) / x_input_;
-    out_event.set_x(output_offset_.x() + base::clamp(x, 0, x_output_));
+    out_event.set_x(output_offset_.x() +
+                    base::clamp(x, 0, std::max(x_output_, 0)));
   }
   if (out_event.has_y()) {
     int y = out_event.y();
     if (y_output_ != y_input_)
       y = ((y * y_output_) + (y_input_ / 2)) / y_input_;
-    out_event.set_y(output_offset_.y() + base::clamp(y, 0, y_output_));
+    out_event.set_y(output_offset_.y() +
+                    base::clamp(y, 0, std::max(y_output_, 0)));
   }
   InputFilter::InjectMouseEvent(out_event);
 }
diff --git a/services/device/generic_sensor/platform_sensor_chromeos.cc b/services/device/generic_sensor/platform_sensor_chromeos.cc
index 97f48fe..104fc4b 100644
--- a/services/device/generic_sensor/platform_sensor_chromeos.cc
+++ b/services/device/generic_sensor/platform_sensor_chromeos.cc
@@ -100,6 +100,7 @@
       break;
 
     case mojom::SensorType::ACCELEROMETER:
+    case mojom::SensorType::GRAVITY:
       DCHECK_EQ(channel_indices_.size(), 4u);
       reading.accel.x = GetScaledValue(sample.at(channel_indices_[0]));
       reading.accel.y = GetScaledValue(sample.at(channel_indices_[1]));
@@ -299,6 +300,10 @@
       axes_prefix = chromeos::sensors::mojom::kMagnetometerChannel;
       break;
 
+    case mojom::SensorType::GRAVITY:
+      axes_prefix = chromeos::sensors::mojom::kGravityChannel;
+      break;
+
     default:
       break;
   }
diff --git a/services/device/generic_sensor/platform_sensor_chromeos_unittest.cc b/services/device/generic_sensor/platform_sensor_chromeos_unittest.cc
index f13c50f..7c547693 100644
--- a/services/device/generic_sensor/platform_sensor_chromeos_unittest.cc
+++ b/services/device/generic_sensor/platform_sensor_chromeos_unittest.cc
@@ -29,6 +29,7 @@
 constexpr char kGyroscopeChannels[][10] = {"anglvel_x", "anglvel_y",
                                            "anglvel_z"};
 constexpr char kMagnetometerChannels[][10] = {"magn_x", "magn_y", "magn_z"};
+constexpr char kGravityChannels[][10] = {"gravity_x", "gravity_y", "gravity_z"};
 
 constexpr double kScaleValue = 10.0;
 
@@ -279,6 +280,7 @@
   SensorReadingXYZ& GetSensorReadingXYZ(SensorReading& reading) {
     switch (GetParam().first) {
       case mojom::SensorType::ACCELEROMETER:
+      case mojom::SensorType::GRAVITY:
         return reading.accel;
       case mojom::SensorType::GYROSCOPE:
         return reading.gyro;
@@ -299,6 +301,7 @@
 
     switch (GetParam().first) {
       case mojom::SensorType::ACCELEROMETER:
+      case mojom::SensorType::GRAVITY:
         RoundAccelerometerReading(reading_xyz);
         break;
       case mojom::SensorType::GYROSCOPE:
@@ -387,11 +390,11 @@
 INSTANTIATE_TEST_SUITE_P(
     PlatformSensorChromeOSAxesTestRun,
     PlatformSensorChromeOSAxesTest,
-    ::testing::Values(std::make_pair(mojom::SensorType::ACCELEROMETER,
-                                     kAccelerometerChannels),
-                      std::make_pair(mojom::SensorType::GYROSCOPE,
-                                     kGyroscopeChannels),
-                      std::make_pair(mojom::SensorType::MAGNETOMETER,
-                                     kMagnetometerChannels)));
+    ::testing::Values(
+        std::make_pair(mojom::SensorType::ACCELEROMETER,
+                       kAccelerometerChannels),
+        std::make_pair(mojom::SensorType::GYROSCOPE, kGyroscopeChannels),
+        std::make_pair(mojom::SensorType::MAGNETOMETER, kMagnetometerChannels),
+        std::make_pair(mojom::SensorType::GRAVITY, kGravityChannels)));
 
 }  // namespace device
diff --git a/services/device/generic_sensor/platform_sensor_provider_chromeos.cc b/services/device/generic_sensor/platform_sensor_provider_chromeos.cc
index 255ecdd..4aa19a93 100644
--- a/services/device/generic_sensor/platform_sensor_provider_chromeos.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_chromeos.cc
@@ -39,6 +39,9 @@
     case chromeos::sensors::mojom::DeviceType::MAGN:
       return mojom::SensorType::MAGNETOMETER;
 
+    case chromeos::sensors::mojom::DeviceType::GRAVITY:
+      return mojom::SensorType::GRAVITY;
+
     default:
       return absl::nullopt;
   }
@@ -51,6 +54,7 @@
       case mojom::SensorType::ACCELEROMETER:
       case mojom::SensorType::GYROSCOPE:
       case mojom::SensorType::MAGNETOMETER:
+      case mojom::SensorType::GRAVITY:
         return true;
       default:
         break;
@@ -151,6 +155,21 @@
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 }
 
+bool PlatformSensorProviderChromeOS::IsFusionSensorType(
+    mojom::SensorType type) const {
+  // Let iioservice provide the Gravity sensor.
+  switch (type) {
+    case mojom::SensorType::LINEAR_ACCELERATION:
+    case mojom::SensorType::ABSOLUTE_ORIENTATION_EULER_ANGLES:
+    case mojom::SensorType::ABSOLUTE_ORIENTATION_QUATERNION:
+    case mojom::SensorType::RELATIVE_ORIENTATION_EULER_ANGLES:
+    case mojom::SensorType::RELATIVE_ORIENTATION_QUATERNION:
+      return true;
+    default:
+      return false;
+  }
+}
+
 bool PlatformSensorProviderChromeOS::IsSensorTypeAvailable(
     mojom::SensorType type) const {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -449,6 +468,15 @@
           break;
         }
 
+        case mojom::SensorType::GRAVITY: {
+          auto& motion_sensor_info = motion_sensor_location_info[location];
+          // Don't need to increase |motion_sensor_info.count|, as gravity
+          // sensors shouldn't influence the decision.
+          motion_sensor_info.sensor_info_pairs.push_back(
+              std::make_pair(sensor.first, type));
+          break;
+        }
+
         default:
           break;
       }
diff --git a/services/device/generic_sensor/platform_sensor_provider_chromeos.h b/services/device/generic_sensor/platform_sensor_provider_chromeos.h
index 22b9aa0..2ded9d0 100644
--- a/services/device/generic_sensor/platform_sensor_provider_chromeos.h
+++ b/services/device/generic_sensor/platform_sensor_provider_chromeos.h
@@ -50,6 +50,8 @@
                             SensorReadingSharedBuffer* reading_buffer,
                             CreateSensorCallback callback) override;
   void FreeResources() override;
+
+  bool IsFusionSensorType(mojom::SensorType type) const override;
   bool IsSensorTypeAvailable(mojom::SensorType type) const override;
 
  private:
diff --git a/services/device/generic_sensor/platform_sensor_provider_linux_base.cc b/services/device/generic_sensor/platform_sensor_provider_linux_base.cc
index 1529adf..071b83d 100644
--- a/services/device/generic_sensor/platform_sensor_provider_linux_base.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_linux_base.cc
@@ -17,9 +17,8 @@
 
 namespace device {
 
-// static
 bool PlatformSensorProviderLinuxBase::IsFusionSensorType(
-    mojom::SensorType type) {
+    mojom::SensorType type) const {
   switch (type) {
     case mojom::SensorType::LINEAR_ACCELERATION:
     case mojom::SensorType::GRAVITY:
diff --git a/services/device/generic_sensor/platform_sensor_provider_linux_base.h b/services/device/generic_sensor/platform_sensor_provider_linux_base.h
index 338f712..f0d8148 100644
--- a/services/device/generic_sensor/platform_sensor_provider_linux_base.h
+++ b/services/device/generic_sensor/platform_sensor_provider_linux_base.h
@@ -11,7 +11,7 @@
 
 class PlatformSensorProviderLinuxBase : public PlatformSensorProvider {
  protected:
-  static bool IsFusionSensorType(mojom::SensorType type);
+  virtual bool IsFusionSensorType(mojom::SensorType type) const;
 
   void CreateFusionSensor(mojom::SensorType type,
                           SensorReadingSharedBuffer* reading_buffer,
diff --git a/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc b/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc
index 4393815..57829c8 100644
--- a/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc
+++ b/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc
@@ -189,9 +189,7 @@
   EXPECT_TRUE(mock_bindings.GetErrors().empty());
 }
 
-// TODO(pthier, v8:11365): Update error message and re-enable test once
-// https://crrev.com/c/2979599 is rolled into chromium.
-TEST_F(ProxyResolverV8TracingTest, DISABLED_JavascriptError) {
+TEST_F(ProxyResolverV8TracingTest, JavascriptError) {
   MockProxyHostResolver host_resolver;
   MockBindings mock_bindings(&host_resolver);
 
@@ -215,8 +213,9 @@
   EXPECT_EQ("Prepare to DIE!", mock_bindings.GetAlerts()[0]);
   ASSERT_EQ(1u, mock_bindings.GetErrors().size());
   EXPECT_EQ(5, mock_bindings.GetErrors()[0].first);
-  EXPECT_EQ("Uncaught TypeError: Cannot read property 'split' of null",
-            mock_bindings.GetErrors()[0].second);
+  EXPECT_EQ(
+      "Uncaught TypeError: Cannot read properties of null (reading 'split')",
+      mock_bindings.GetErrors()[0].second);
 }
 
 TEST_F(ProxyResolverV8TracingTest, TooManyAlerts) {
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc b/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
index 5795106a..b13b44f2 100644
--- a/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
+++ b/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
@@ -523,9 +523,21 @@
     return packet_index;
   }
 
+  struct StringOrIid {
+    // implicit
+    StringOrIid(uint32_t iid) : iid(iid) {}
+    // implicit
+    StringOrIid(std::string value) : value(value) {}
+    // implicit
+    StringOrIid(const char* value) : value(value) {}
+
+    std::string value;
+    uint32_t iid = 0;
+  };
+
   void ExpectTraceEvent(const perfetto::protos::TracePacket* packet,
                         uint32_t category_iid,
-                        uint32_t name_iid,
+                        StringOrIid name,
                         char phase,
                         uint32_t flags = 0,
                         uint64_t id = 0,
@@ -611,8 +623,10 @@
       EXPECT_EQ(packet->track_event().category_iids_size(), 0);
     }
 
-    if (name_iid > 0) {
-      EXPECT_EQ(packet->track_event().name_iid(), name_iid);
+    if (name.iid > 0) {
+      EXPECT_EQ(packet->track_event().name_iid(), name.iid);
+    } else if (!name.value.empty()) {
+      EXPECT_EQ(packet->track_event().name(), name.value);
     }
 
     TrackEvent::Type track_event_type;
@@ -770,7 +784,7 @@
 #endif
   }
 
-  void ExpectEventNames(
+  void ExpectInternedEventNames(
       const perfetto::protos::TracePacket* packet,
       std::initializer_list<std::pair<uint32_t, std::string>> entries,
       base::Location from_here = base::Location::Current()) {
@@ -778,7 +792,7 @@
                         from_here);
   }
 
-  void ExpectDebugAnnotationNames(
+  void ExpectInternedDebugAnnotationNames(
       const perfetto::protos::TracePacket* packet,
       std::initializer_list<std::pair<uint32_t, std::string>> entries,
       base::Location from_here = base::Location::Current()) {
@@ -791,6 +805,7 @@
       const google::protobuf::RepeatedPtrField<T>& field,
       std::initializer_list<std::pair<uint32_t, std::string>> expected_entries,
       base::Location from_here = base::Location::Current()) {
+    SCOPED_TRACE(from_here.ToString());
     std::vector<std::pair<uint32_t, std::string>> entries;
     for (int i = 0; i < field.size(); ++i) {
       entries.emplace_back(field[i].iid(), field[i].name());
@@ -1007,7 +1022,7 @@
                    TRACE_EVENT_PHASE_BEGIN);
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
 }
 
 TEST_F(TraceEventDataSourceTest, TimestampedTraceEvent) {
@@ -1032,7 +1047,7 @@
       perfetto::ThreadTrack::ForThread(4242));
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
 }
 
 TEST_F(TraceEventDataSourceTest, InstantTraceEvent) {
@@ -1047,7 +1062,7 @@
                    TRACE_EVENT_PHASE_INSTANT, TRACE_EVENT_SCOPE_THREAD);
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
 }
 
 TEST_F(TraceEventDataSourceTest, InstantTraceEventOnOtherThread) {
@@ -1075,7 +1090,7 @@
                    perfetto::ThreadTrack::ForThread(1));
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
 }
 
 TEST_F(TraceEventDataSourceTest, EventWithStringArgs) {
@@ -1098,8 +1113,9 @@
   EXPECT_EQ(annotations[1].string_value(), "arg2_val");
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
-  ExpectDebugAnnotationNames(e_packet, {{1u, "arg1_name"}, {2u, "arg2_name"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedDebugAnnotationNames(e_packet,
+                                     {{1u, "arg1_name"}, {2u, "arg2_name"}});
 }
 
 TEST_F(TraceEventDataSourceTest, EventWithCopiedStrings) {
@@ -1112,20 +1128,20 @@
   size_t packet_index = ExpectStandardPreamble();
 
   auto* e_packet = GetFinalizedPacket(packet_index++);
-  ExpectTraceEvent(e_packet, /*category_iid=*/1u, /*name_iid=*/1u,
+  ExpectTraceEvent(e_packet, /*category_iid=*/1u, /*name=*/"bar",
                    TRACE_EVENT_PHASE_INSTANT,
                    TRACE_EVENT_SCOPE_THREAD | TRACE_EVENT_FLAG_COPY);
 
+  EXPECT_EQ(e_packet->track_event().name(), "bar");
+
   const auto& annotations = e_packet->track_event().debug_annotations();
   EXPECT_EQ(annotations.size(), 2);
-  EXPECT_EQ(annotations[0].name_iid(), 1u);
+  EXPECT_EQ(annotations[0].name(), "arg1_name");
   EXPECT_EQ(annotations[0].string_value(), "arg1_val");
-  EXPECT_EQ(annotations[1].name_iid(), 2u);
+  EXPECT_EQ(annotations[1].name(), "arg2_name");
   EXPECT_EQ(annotations[1].string_value(), "arg2_val");
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
-  ExpectDebugAnnotationNames(e_packet, {{1u, "arg1_name"}, {2u, "arg2_name"}});
 }
 
 TEST_F(TraceEventDataSourceTest, EventWithUIntArgs) {
@@ -1181,7 +1197,7 @@
   EXPECT_TRUE(annotations[0].has_bool_value());
   EXPECT_EQ(annotations[0].bool_value(), true);
   EXPECT_TRUE(annotations[1].has_bool_value());
-  EXPECT_EQ(annotations[1].int_value(), false);
+  EXPECT_EQ(annotations[1].bool_value(), false);
 }
 
 TEST_F(TraceEventDataSourceTest, EventWithDoubleArgs) {
@@ -1534,7 +1550,7 @@
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 
   ExpectEventCategories(b_packet, {{1u, "browser"}});
-  ExpectEventNames(b_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(b_packet, {{1u, "bar"}});
 
 #if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY)
   auto* t_packet = GetFinalizedPacket(packet_index++);
@@ -1543,7 +1559,7 @@
 
   auto* e_packet = GetFinalizedPacket(packet_index++);
 
-  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0,
+  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0u,
                    TRACE_EVENT_PHASE_END, /*flags=*/0, /*id=*/0,
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 }
@@ -1570,7 +1586,7 @@
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 
   ExpectEventCategories(b_packet, {{1u, "browser"}});
-  ExpectEventNames(b_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(b_packet, {{1u, "bar"}});
 
 #if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY)
   auto* t_packet = GetFinalizedPacket(packet_index++);
@@ -1579,7 +1595,7 @@
 
   auto* e_packet = GetFinalizedPacket(packet_index++);
 
-  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0,
+  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0u,
                    TRACE_EVENT_PHASE_END, /*flags=*/0, /*id=*/0,
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 }
@@ -1609,7 +1625,7 @@
       /*tid_override=*/0, track);
 
   ExpectEventCategories(b_packet, {{1u, "browser"}});
-  ExpectEventNames(b_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(b_packet, {{1u, "bar"}});
 }
 
 TEST_F(TraceEventDataSourceTest, TrackSupportWithTimestampAndLambda) {
@@ -1641,7 +1657,7 @@
       /*tid_override=*/0, track);
 
   ExpectEventCategories(b_packet, {{1u, "browser"}});
-  ExpectEventNames(b_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(b_packet, {{1u, "bar"}});
 }
 
 // TODO(ddrone): following tests should be re-enabled once we figure out how
@@ -1661,10 +1677,10 @@
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 
   ExpectEventCategories(b_packet, {{1u, "browser"}});
-  ExpectEventNames(b_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(b_packet, {{1u, "bar"}});
 
   auto* e_packet = GetFinalizedPacket(packet_index++);
-  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0,
+  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0u,
                    TRACE_EVENT_PHASE_END, /*flags=*/0, /*id=*/0,
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 }
@@ -1690,10 +1706,10 @@
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 
   ExpectEventCategories(b_packet, {{1u, "browser"}});
-  ExpectEventNames(b_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(b_packet, {{1u, "bar"}});
 
   auto* e_packet = GetFinalizedPacket(packet_index++);
-  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0,
+  ExpectTraceEvent(e_packet, /*category_iid=*/0, /*name_iid=*/0u,
                    TRACE_EVENT_PHASE_END, /*flags=*/0, /*id=*/0,
                    /*absolute_timestamp=*/0, /*tid_override=*/0, track);
 }
@@ -1726,8 +1742,8 @@
     EXPECT_EQ(annotations1[0].int_value(), 4);
 
     ExpectEventCategories(e_packet1, {{1u, "browser"}});
-    ExpectEventNames(e_packet1, {{1u, "e1"}});
-    ExpectDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
+    ExpectInternedEventNames(e_packet1, {{1u, "e1"}});
+    ExpectInternedDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
 
     // Second packet refers to the interning entries from packet 1.
     auto* e_packet2 = GetFinalizedPacket(packet_index++);
@@ -1740,8 +1756,8 @@
     EXPECT_EQ(annotations2[0].int_value(), 2);
 
     ExpectEventCategories(e_packet2, {});
-    ExpectEventNames(e_packet2, {});
-    ExpectDebugAnnotationNames(e_packet2, {});
+    ExpectInternedEventNames(e_packet2, {});
+    ExpectInternedDebugAnnotationNames(e_packet2, {});
 
     // Third packet uses different names, so emits new entries.
     auto* e_packet3 = GetFinalizedPacket(packet_index++);
@@ -1754,8 +1770,8 @@
     EXPECT_EQ(annotations3[0].int_value(), 1);
 
     ExpectEventCategories(e_packet3, {{2u, "ui"}});
-    ExpectEventNames(e_packet3, {{2u, "e2"}});
-    ExpectDebugAnnotationNames(e_packet3, {{2u, "arg2"}});
+    ExpectInternedEventNames(e_packet3, {{2u, "e2"}});
+    ExpectInternedDebugAnnotationNames(e_packet3, {{2u, "arg2"}});
 
     // Resetting the interning state causes ThreadDescriptor and interning
     // entries to be emitted again, with the same interning IDs.
@@ -1785,8 +1801,8 @@
                    TRACE_EVENT_PHASE_BEGIN);
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
-  ExpectDebugAnnotationNames(e_packet, {});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedDebugAnnotationNames(e_packet, {});
 }
 
 TEST_F(TraceEventDataSourceTest, FilteringEventWithArgs) {
@@ -1806,8 +1822,8 @@
   EXPECT_EQ(annotations.size(), 0);
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
-  ExpectDebugAnnotationNames(e_packet, {});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedDebugAnnotationNames(e_packet, {});
 }
 
 TEST_F(TraceEventDataSourceTest, FilteringEventWithFlagCopy) {
@@ -1825,25 +1841,23 @@
       /*privacy_filtering_enabled=*/true);
 
   auto* e_packet = GetFinalizedPacket(packet_index++);
-  ExpectTraceEvent(e_packet, /*category_iid=*/1u, /*name_iid=*/1u,
+  ExpectTraceEvent(e_packet, /*category_iid=*/1u, "PRIVACY_FILTERED",
                    TRACE_EVENT_PHASE_INSTANT, TRACE_EVENT_SCOPE_THREAD);
 
   const auto& annotations = e_packet->track_event().debug_annotations();
   EXPECT_EQ(annotations.size(), 0);
 
   ExpectEventCategories(e_packet, {{1u, kCategoryGroup}});
-  ExpectEventNames(e_packet, {{1u, "PRIVACY_FILTERED"}});
-  ExpectDebugAnnotationNames(e_packet, {});
+  ExpectInternedDebugAnnotationNames(e_packet, {});
 
   e_packet = GetFinalizedPacket(packet_index++);
-  ExpectTraceEvent(e_packet, /*category_iid=*/1u, /*name_iid=*/2u,
+  ExpectTraceEvent(e_packet, /*category_iid=*/1u, "javaName",
                    TRACE_EVENT_PHASE_INSTANT, TRACE_EVENT_SCOPE_THREAD);
 
   const auto& annotations2 = e_packet->track_event().debug_annotations();
   EXPECT_EQ(annotations2.size(), 0);
 
-  ExpectEventNames(e_packet, {{2u, "javaName"}});
-  ExpectDebugAnnotationNames(e_packet, {});
+  ExpectInternedDebugAnnotationNames(e_packet, {});
 }
 #endif  // !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY)
 
@@ -1936,8 +1950,8 @@
   EXPECT_EQ(annotations1[0].int_value(), 4);
 
   ExpectEventCategories(e_packet1, {{1u, "browser"}});
-  ExpectEventNames(e_packet1, {{1u, "e1"}});
-  ExpectDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
+  ExpectInternedEventNames(e_packet1, {{1u, "e1"}});
+  ExpectInternedDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
 
   // Second packet reemits the entries the same way.
   auto* e_packet2 = GetFinalizedPacket(packet_index++);
@@ -1950,8 +1964,8 @@
   EXPECT_EQ(annotations2[0].int_value(), 2);
 
   ExpectEventCategories(e_packet1, {{1u, "browser"}});
-  ExpectEventNames(e_packet1, {{1u, "e1"}});
-  ExpectDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
+  ExpectInternedEventNames(e_packet1, {{1u, "e1"}});
+  ExpectInternedDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
 
   // Third packet emits entries with the same IDs but different strings.
   auto* e_packet3 = GetFinalizedPacket(packet_index++);
@@ -1964,8 +1978,8 @@
   EXPECT_EQ(annotations3[0].int_value(), 1);
 
   ExpectEventCategories(e_packet3, {{1u, "ui"}});
-  ExpectEventNames(e_packet3, {{1u, "e2"}});
-  ExpectDebugAnnotationNames(e_packet3, {{1u, "arg2"}});
+  ExpectInternedEventNames(e_packet3, {{1u, "e2"}});
+  ExpectInternedDebugAnnotationNames(e_packet3, {{1u, "arg2"}});
 }
 
 #if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY)
@@ -2084,7 +2098,7 @@
                    TRACE_EVENT_PHASE_BEGIN);
 
   ExpectEventCategories(e_packet, {{1u, "browser"}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
   ASSERT_TRUE(e_packet->track_event().has_log_message());
   EXPECT_EQ(e_packet->track_event().log_message().body_iid(), 42u);
 }
@@ -2128,7 +2142,7 @@
                    TRACE_EVENT_PHASE_BEGIN);
 
   ExpectEventCategories(e_packet, {{1u, "browser"}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
   ASSERT_TRUE(e_packet->track_event().has_log_message());
   EXPECT_EQ(e_packet->track_event().log_message().body_iid(), 42u);
 
@@ -2154,7 +2168,7 @@
                    TRACE_EVENT_PHASE_INSTANT, TRACE_EVENT_SCOPE_THREAD);
 
   ExpectEventCategories(e_packet, {{1u, "browser"}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
   ASSERT_TRUE(e_packet->track_event().has_log_message());
   EXPECT_EQ(e_packet->track_event().log_message().body_iid(), 42u);
 }
@@ -2177,7 +2191,7 @@
                    TRACE_EVENT_PHASE_BEGIN);
 
   ExpectEventCategories(e_packet, {{1u, "browser"}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
   ASSERT_TRUE(e_packet->track_event().has_log_message());
   EXPECT_EQ(e_packet->track_event().log_message().body_iid(), 42u);
 
@@ -2206,7 +2220,7 @@
                    TRACE_EVENT_PHASE_BEGIN);
 
   ExpectEventCategories(e_packet, {{1u, "browser"}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
   ASSERT_TRUE(e_packet->track_event().has_log_message());
   EXPECT_EQ(e_packet->track_event().log_message().body_iid(), 42u);
 
@@ -2238,7 +2252,7 @@
                    TRACE_EVENT_PHASE_BEGIN);
 
   ExpectEventCategories(e_packet, {{1u, "browser"}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
   ASSERT_TRUE(e_packet->track_event().has_log_message());
   EXPECT_EQ(e_packet->track_event().log_message().body_iid(), 42u);
 
@@ -2275,7 +2289,7 @@
 
   ExpectEventCategories(e_packet,
                         {{1u, TRACE_DISABLED_BY_DEFAULT("histogram_samples")}});
-  ExpectEventNames(e_packet, {{1u, "HistogramSample"}});
+  ExpectInternedEventNames(e_packet, {{1u, "HistogramSample"}});
   ASSERT_TRUE(e_packet->track_event().has_chrome_histogram_sample());
   EXPECT_EQ(e_packet->track_event().chrome_histogram_sample().sample(), 1u);
   ASSERT_TRUE(e_packet->has_interned_data());
@@ -2303,7 +2317,7 @@
 
   ExpectEventCategories(e_packet,
                         {{1u, TRACE_DISABLED_BY_DEFAULT("histogram_samples")}});
-  ExpectEventNames(e_packet, {{1u, "HistogramSample"}});
+  ExpectInternedEventNames(e_packet, {{1u, "HistogramSample"}});
   ASSERT_TRUE(e_packet->track_event().has_chrome_histogram_sample());
   EXPECT_EQ(e_packet->track_event().chrome_histogram_sample().name_hash(),
             base::HashMetricName("Foo1.Bar1"));
@@ -2316,7 +2330,7 @@
   e_packet = GetFinalizedPacket(packet_index++);
 
   ExpectEventCategories(e_packet, {});
-  ExpectEventNames(e_packet, {});
+  ExpectInternedEventNames(e_packet, {});
   ASSERT_TRUE(e_packet->track_event().has_chrome_histogram_sample());
   EXPECT_EQ(e_packet->track_event().chrome_histogram_sample().name_hash(),
             base::HashMetricName("Foo3.Bar3"));
@@ -2346,7 +2360,7 @@
 
   ExpectEventCategories(
       e_packet, {{1u, TRACE_DISABLED_BY_DEFAULT("user_action_samples")}});
-  ExpectEventNames(e_packet, {{1u, "UserAction"}});
+  ExpectInternedEventNames(e_packet, {{1u, "UserAction"}});
   ASSERT_TRUE(e_packet->track_event().has_chrome_user_event());
   EXPECT_EQ(e_packet->track_event().chrome_user_event().action_hash(),
             base::HashMetricName("Test_Action"));
@@ -2383,7 +2397,7 @@
   auto* e_packet = GetFinalizedPacket(packet_index++);
 
   ExpectEventCategories(e_packet, {{1u, "browser"}});
-  ExpectEventNames(e_packet, {{1u, "bar"}});
+  ExpectInternedEventNames(e_packet, {{1u, "bar"}});
   ASSERT_TRUE(e_packet->track_event().has_log_message());
   ASSERT_TRUE(e_packet->has_interned_data());
   EXPECT_EQ(e_packet->track_event().log_message().body_iid(),
@@ -2403,13 +2417,13 @@
   auto* e_packet1 = GetFinalizedPacket(packet_index++);
 
   ExpectEventCategories(e_packet1, {{1u, "browser"}});
-  ExpectEventNames(e_packet1, {{1u, "Event1"}});
-  ExpectDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
+  ExpectInternedEventNames(e_packet1, {{1u, "Event1"}});
+  ExpectInternedDebugAnnotationNames(e_packet1, {{1u, "arg1"}});
 
   auto* e_packet2 = GetFinalizedPacket(packet_index++);
 
-  ExpectEventNames(e_packet2, {{2u, "Event2"}});
-  ExpectDebugAnnotationNames(e_packet2, {{2u, "arg2"}});
+  ExpectInternedEventNames(e_packet2, {{2u, "Event2"}});
+  ExpectInternedDebugAnnotationNames(e_packet2, {{2u, "arg2"}});
 }
 
 // TODO(eseckler): Add startup tracing unittests.
diff --git a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
index 7c660bc..8e88885f 100644
--- a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
+++ b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
@@ -42,6 +42,7 @@
 using perfetto::protos::pbzero::ChromeThreadDescriptor;
 using perfetto::protos::pbzero::ClockSnapshot;
 using perfetto::protos::pbzero::CounterDescriptor;
+using perfetto::protos::pbzero::DebugAnnotation;
 using perfetto::protos::pbzero::InternedData;
 using perfetto::protos::pbzero::ThreadDescriptor;
 using perfetto::protos::pbzero::TracePacket;
@@ -85,54 +86,47 @@
   annotation->set_legacy_json_value(json.c_str());
 }
 
-void WriteDebugAnnotations(base::trace_event::TraceEvent* trace_event,
-                           TrackEvent* track_event,
-                           InterningID* current_packet_interning_entries) {
-  for (size_t i = 0; i < trace_event->arg_size() && trace_event->arg_name(i);
-       ++i) {
-    auto type = trace_event->arg_type(i);
-    auto* annotation = track_event->add_debug_annotations();
+void WriteDebugAnnotationValue(base::trace_event::TraceEvent* trace_event,
+                               size_t arg_index,
+                               DebugAnnotation* annotation) {
+  auto type = trace_event->arg_type(arg_index);
 
-    annotation->set_name_iid(current_packet_interning_entries[i]);
+  if (type == TRACE_VALUE_TYPE_CONVERTABLE) {
+    AddConvertableToTraceFormat(trace_event->arg_convertible_value(arg_index),
+                                annotation);
+    return;
+  }
 
-    if (type == TRACE_VALUE_TYPE_CONVERTABLE) {
-      AddConvertableToTraceFormat(trace_event->arg_convertible_value(i),
-                                  annotation);
-      continue;
-    }
+  auto& value = trace_event->arg_value(arg_index);
+  switch (type) {
+    case TRACE_VALUE_TYPE_BOOL:
+      annotation->set_bool_value(value.as_bool);
+      break;
+    case TRACE_VALUE_TYPE_UINT:
+      annotation->set_uint_value(value.as_uint);
+      break;
+    case TRACE_VALUE_TYPE_INT:
+      annotation->set_int_value(value.as_int);
+      break;
+    case TRACE_VALUE_TYPE_DOUBLE:
+      annotation->set_double_value(value.as_double);
+      break;
+    case TRACE_VALUE_TYPE_POINTER:
+      annotation->set_pointer_value(
+          static_cast<uint64_t>(reinterpret_cast<uintptr_t>(value.as_pointer)));
+      break;
+    case TRACE_VALUE_TYPE_STRING:
+    case TRACE_VALUE_TYPE_COPY_STRING:
+      annotation->set_string_value(value.as_string ? value.as_string : "NULL");
+      break;
+    case TRACE_VALUE_TYPE_PROTO: {
+      auto data = value.as_proto->SerializeAsArray();
+      annotation->AppendRawProtoBytes(data.data(), data.size());
+    } break;
 
-    auto& value = trace_event->arg_value(i);
-    switch (type) {
-      case TRACE_VALUE_TYPE_BOOL:
-        annotation->set_bool_value(value.as_bool);
-        break;
-      case TRACE_VALUE_TYPE_UINT:
-        annotation->set_uint_value(value.as_uint);
-        break;
-      case TRACE_VALUE_TYPE_INT:
-        annotation->set_int_value(value.as_int);
-        break;
-      case TRACE_VALUE_TYPE_DOUBLE:
-        annotation->set_double_value(value.as_double);
-        break;
-      case TRACE_VALUE_TYPE_POINTER:
-        annotation->set_pointer_value(static_cast<uint64_t>(
-            reinterpret_cast<uintptr_t>(value.as_pointer)));
-        break;
-      case TRACE_VALUE_TYPE_STRING:
-      case TRACE_VALUE_TYPE_COPY_STRING:
-        annotation->set_string_value(value.as_string ? value.as_string
-                                                     : "NULL");
-        break;
-      case TRACE_VALUE_TYPE_PROTO: {
-        auto data = value.as_proto->SerializeAsArray();
-        annotation->AppendRawProtoBytes(data.data(), data.size());
-      } break;
-
-      default:
-        NOTREACHED() << "Don't know how to serialize this value";
-        break;
-    }
+    default:
+      NOTREACHED() << "Don't know how to serialize this value";
+      break;
   }
 }
 
@@ -166,13 +160,6 @@
 std::atomic<uint32_t>
     TrackEventThreadLocalEventSink::incremental_state_reset_id_{0};
 
-TrackEventThreadLocalEventSink::IndexData::IndexData(const char* str)
-    : str_piece(str) {}
-
-TrackEventThreadLocalEventSink::IndexData::IndexData(
-    std::tuple<const char*, const char*, int>&& src)
-    : src_loc(std::move(src)) {}
-
 TrackEventThreadLocalEventSink::TrackEventThreadLocalEventSink(
     std::unique_ptr<perfetto::TraceWriter> trace_writer,
     uint32_t session_id,
@@ -243,15 +230,6 @@
 void TrackEventThreadLocalEventSink::WriteInternedDataIntoTracePacket(
     TracePacket* packet) {
   auto& serialized_interned_data = incremental_state_.serialized_interned_data;
-  if (!pending_interning_updates_.empty()) {
-    // TODO(skyostil): Combine |pending_interning_updates_| and
-    // |serialized_interned_data| so we don't need to merge the two here.
-    if (!serialized_interned_data.empty()) {
-      EmitStoredInternedData(serialized_interned_data.get());
-    } else {
-      EmitStoredInternedData(packet->set_interned_data());
-    }
-  }
 
   // When the track event is finalized (i.e., the context is destroyed), we
   // should flush any newly seen interned data to the trace. The data has
@@ -390,7 +368,7 @@
     protozero::MessageHandle<TracePacket>* trace_packet) {
   // Each event's updates to InternedData are flushed at the end of
   // AddTraceEvent().
-  DCHECK(pending_interning_updates_.empty());
+  DCHECK(incremental_state_.serialized_interned_data.empty());
 
   char phase = trace_event->phase();
 
@@ -425,59 +403,48 @@
   TrackEvent* track_event = (*trace_packet)->set_track_event();
   perfetto::EventContext event_context(track_event, &incremental_state_);
 
+  // TODO(eseckler): Split comma-separated category strings.
   const char* category_name =
       TraceLog::GetCategoryGroupName(trace_event->category_group_enabled());
-  InterningIndexEntry interned_category{};
   // No need to write the category for sync end events. Trace processor will
   // match them without, provided event nesting is correct. For async end
   // events, event ID matching includes the category, so we have to emit the
   // category for the time being.
   if (!is_sync_end) {
-    interned_category = interned_event_categories_.LookupOrAdd(category_name);
+    track_event->add_category_iids(
+        perfetto::internal::InternedEventCategory::Get(
+            &event_context, category_name, strlen(category_name)));
   }
-
-  InterningIndexEntry interned_name{};
-  const size_t kMaxSize = base::trace_event::TraceArguments::kMaxSize;
-  InterningID interned_annotation_names[kMaxSize] = {};
-
   // No need to write the event name for end events (sync or nestable async).
   // Trace processor will match them without, provided event nesting is correct.
   // Legacy async events (TRACE_EVENT_ASYNC*) are only pass-through in trace
   // processor, so we still have to emit names for these.
   const char* trace_event_name = trace_event->name();
   if (!is_sync_end && !is_nestable_async_end) {
+    bool filter_name =
+        copy_strings && !is_java_event && privacy_filtering_enabled_;
+    if (filter_name)
+      trace_event_name = kPrivacyFiltered;
     if (copy_strings) {
-      if (!is_java_event && privacy_filtering_enabled_) {
-        trace_event_name = kPrivacyFiltered;
-        interned_name = interned_event_names_.LookupOrAdd(trace_event_name);
-      } else {
-        interned_name =
-            interned_event_names_.LookupOrAdd(std::string(trace_event_name));
-      }
+      track_event->set_name(trace_event_name);
     } else {
-      interned_name = interned_event_names_.LookupOrAdd(trace_event->name());
+      track_event->set_name_iid(perfetto::internal::InternedEventName::Get(
+          &event_context, trace_event->name()));
     }
   }
 
-  if (copy_strings || is_java_event) {
-    if (!privacy_filtering_enabled_) {
-      for (size_t i = 0;
-           i < trace_event->arg_size() && trace_event->arg_name(i); ++i) {
-        interned_annotation_names[i] =
+  if (!privacy_filtering_enabled_) {
+    for (size_t i = 0; i < trace_event->arg_size() && trace_event->arg_name(i);
+         ++i) {
+      auto* debug_annotation = track_event->add_debug_annotations();
+      if (copy_strings) {
+        debug_annotation->set_name(trace_event->arg_name(i));
+      } else {
+        debug_annotation->set_name_iid(
             perfetto::internal::InternedDebugAnnotationName::Get(
-                &event_context, CopyString(trace_event->arg_name(i)));
+                &event_context, trace_event->arg_name(i)));
       }
-    }
-  } else {
-    if (flags & TRACE_EVENT_FLAG_TYPED_PROTO_ARGS) {
-      NOTREACHED();
-    } else if (!privacy_filtering_enabled_) {
-      for (size_t i = 0;
-           i < trace_event->arg_size() && trace_event->arg_name(i); ++i) {
-        interned_annotation_names[i] =
-            perfetto::internal::InternedDebugAnnotationName::Get(
-                &event_context, trace_event->arg_name(i));
-      }
+      WriteDebugAnnotationValue(trace_event, i, debug_annotation);
     }
   }
 
@@ -540,19 +507,6 @@
     }
   }
 
-  // TODO(eseckler): Split comma-separated category strings.
-  if (interned_category.id) {
-    track_event->add_category_iids(interned_category.id);
-  }
-
-  if (!privacy_filtering_enabled_) {
-    WriteDebugAnnotations(trace_event, track_event, interned_annotation_names);
-  }
-
-  if (interned_name.id) {
-    track_event->set_name_iid(interned_name.id);
-  }
-
   // Only set the |legacy_event| field of the TrackEvent if we need to emit any
   // of the legacy fields. BEWARE: Do not set any other TrackEvent fields in
   // between calls to |legacy_event.GetOrCreate()|.
@@ -698,66 +652,13 @@
     legacy_event.GetOrCreate()->set_bind_to_enclosing(true);
   }
 
-  if (interned_category.id && !interned_category.was_emitted) {
-    pending_interning_updates_.push_back(
-        std::make_tuple(IndexType::kCategory, IndexData{category_name},
-                        std::move(interned_category)));
-  }
-  if (interned_name.id && !interned_name.was_emitted) {
-    pending_interning_updates_.push_back(
-        std::make_tuple(IndexType::kName, IndexData{trace_event_name},
-                        std::move(interned_name)));
-  }
-
   if (disable_interning_) {
-    interned_event_categories_.Clear();
-    interned_event_names_.Clear();
-    interned_source_locations_.Clear();
-    interned_log_message_bodies_.Clear();
     incremental_state_.interned_data_indices = {};
-    copied_strings_.clear();
   }
 
   return track_event;
 }
 
-void TrackEventThreadLocalEventSink::EmitStoredInternedData(
-    perfetto::protos::pbzero::InternedData* interned_data) {
-  DCHECK(interned_data);
-  for (const auto& update : pending_interning_updates_) {
-    IndexType type = std::get<0>(update);
-    IndexData data = std::get<1>(update);
-    InterningIndexEntry entry = std::get<2>(update);
-    if (type == IndexType::kName) {
-      auto* name_entry = interned_data->add_event_names();
-      name_entry->set_iid(entry.id);
-      name_entry->set_name(data.str_piece);
-    } else if (type == IndexType::kCategory) {
-      auto* category_entry = interned_data->add_event_categories();
-      category_entry->set_iid(entry.id);
-      category_entry->set_name(data.str_piece);
-    } else if (type == IndexType::kLogMessage) {
-      auto* log_message_entry = interned_data->add_log_message_body();
-      log_message_entry->set_iid(entry.id);
-      log_message_entry->set_body(data.str_piece);
-    } else if (type == IndexType::kSourceLocation) {
-      auto* source_location_entry = interned_data->add_source_locations();
-      source_location_entry->set_iid(entry.id);
-      source_location_entry->set_file_name(std::get<0>(data.src_loc));
-
-      if (std::get<1>(data.src_loc)) {
-        source_location_entry->set_function_name(std::get<1>(data.src_loc));
-      }
-      if (std::get<2>(data.src_loc)) {
-        source_location_entry->set_line_number(std::get<2>(data.src_loc));
-      }
-    } else {
-      DLOG(FATAL) << "Unhandled type: " << static_cast<int>(type);
-    }
-  }
-  pending_interning_updates_.clear();
-}
-
 void TrackEventThreadLocalEventSink::UpdateDuration(
     const unsigned char* category_group_enabled,
     const char* name,
@@ -860,14 +761,9 @@
 void TrackEventThreadLocalEventSink::DoResetIncrementalState(
     base::trace_event::TraceEvent* trace_event,
     bool explicit_timestamp) {
-  interned_event_categories_.ResetEmittedState();
-  interned_event_names_.ResetEmittedState();
-  interned_source_locations_.ResetEmittedState();
-  interned_log_message_bodies_.ResetEmittedState();
   extra_emitted_track_descriptor_uuids_.clear();
   incremental_state_.interned_data_indices = {};
   incremental_state_.seen_tracks.clear();
-  copied_strings_.clear();
 
   // Reset the reference timestamp.
   base::TimeTicks timestamp;
@@ -958,11 +854,4 @@
   last_timestamp_ = timestamp;
 }
 
-const char* TrackEventThreadLocalEventSink::CopyString(const std::string& str) {
-  auto it = copied_strings_.insert(str);
-  // Adding new elements into the std::set does not invalidate the old
-  // iterators, so |c_str| will remain the same.
-  return it.first->c_str();
-}
-
 }  // namespace tracing
diff --git a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
index b9cbb5269..25ba727 100644
--- a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
+++ b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
@@ -35,30 +35,6 @@
       public base::trace_event::TrackEventHandle::CompletionListener,
       public base::trace_event::TracePacketHandle::CompletionListener {
  public:
-  enum class IndexType {
-    kName = 0,
-    kCategory = 1,
-    kSourceLocation = 3,
-    kLogMessage = 4
-  };
-  // IndexData is a temporary storage location for passing long updates to the
-  // interning indexes. Everything stored in it must have a lifetime that is
-  // at least as long as AddTraceEvent.
-  //
-  // In most cases this is easy since the provided |trace_event| is the source
-  // of most const char*s.
-  //
-  // This is important because when TRACE_EVENT_FLAG_COPY is set, the
-  // InternedIndexesUpdates are cleared within the same call to AddTraceEvent().
-  union IndexData {
-    const char* str_piece;
-    std::tuple<const char*, const char*, int> src_loc;
-    explicit IndexData(const char* str);
-    explicit IndexData(std::tuple<const char*, const char*, int>&& src);
-  };
-  using InternedIndexesUpdates =
-      std::vector<std::tuple<IndexType, IndexData, InterningIndexEntry>>;
-
   TrackEventThreadLocalEventSink(
       std::unique_ptr<perfetto::TraceWriter> trace_writer,
       uint32_t session_id,
@@ -118,11 +94,6 @@
       protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>*
           trace_packet);
 
-  // Given a list of updates to the indexes will fill in |interned_data| to
-  // reflect them.
-  void EmitStoredInternedData(
-      perfetto::protos::pbzero::InternedData* interned_data);
-
   void EmitThreadTrackDescriptor(base::trace_event::TraceEvent* trace_event,
                                  base::TimeTicks timestamp,
                                  const char* maybe_new_name = nullptr);
@@ -145,32 +116,12 @@
   // is valid until |copied_strings_| are cleared.
   const char* CopyString(const std::string& value);
 
-  // TODO(eseckler): Make it possible to register new indexes for use from
-  // TRACE_EVENT macros.
-  InterningIndex<TypeList<const char*>, SizeList<128>>
-      interned_event_categories_;
-  InterningIndex<TypeList<const char*, std::string>, SizeList<512, 64>>
-      interned_event_names_;
-  InterningIndex<TypeList<std::tuple<const char*, const char*, int>>,
-                 SizeList<512>>
-      interned_source_locations_;
-  InterningIndex<TypeList<std::string>, SizeList<128>>
-      interned_log_message_bodies_;
-  InternedIndexesUpdates pending_interning_updates_;
-
-  // Master copies of the interned strings. Stored here to ensure that a stable
-  // const char* pointer is available to be used in TrackEventInternedDataIndex.
-  // TODO(altimin): Stop interning copied strings and write them into the proto
-  // directly.
-  std::set<std::string> copied_strings_;
-
   // Write interned data (both from |incremental_state_| and interned indexes
   // into the given packet.
   void WriteInternedDataIntoTracePacket(
       perfetto::protos::pbzero::TracePacket* packet);
 
   // Track event interning state.
-  // TODO(skyostil): Merge the above interning indices into this.
   perfetto::internal::TrackEventIncrementalState incremental_state_;
 
   std::vector<uint64_t> extra_emitted_track_descriptor_uuids_;
diff --git a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc
index 4db5290..5b6f05c 100644
--- a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc
+++ b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc
@@ -606,14 +606,12 @@
     module_id->resize(32, '0');
   }
 
-  if (module_id->size() >= 32) {
-    *module_id =
-        base::StrCat({module_id->substr(6, 2), module_id->substr(4, 2),
-                      module_id->substr(2, 2), module_id->substr(0, 2),
-                      module_id->substr(10, 2), module_id->substr(8, 2),
-                      module_id->substr(14, 2), module_id->substr(12, 2),
-                      module_id->substr(16, 16), "0"});
-  }
+  *module_id =
+      base::StrCat({module_id->substr(6, 2), module_id->substr(4, 2),
+                    module_id->substr(2, 2), module_id->substr(0, 2),
+                    module_id->substr(10, 2), module_id->substr(8, 2),
+                    module_id->substr(14, 2), module_id->substr(12, 2),
+                    module_id->substr(16, 16), "0"});
 #endif
 }
 
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h
index 39478f04..ec33324 100644
--- a/skia/config/SkUserConfig.h
+++ b/skia/config/SkUserConfig.h
@@ -207,6 +207,8 @@
 
 #define SK_SUPPORT_LEGACY_AAA_CHOICE
 
+#define SK_DISABLE_ATLAS_PATH_RENDERER_WITH_COVERAGE_AA
+
 #define SK_SUPPORT_LEGACY_DRAWLOOPER
 
 #define SK_SUPPORT_LEGACY_RUNTIME_EFFECTS
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index 58052747..84393dc 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -25,7 +25,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -86,7 +87,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -155,7 +157,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -226,7 +229,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -295,7 +299,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -359,7 +364,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -420,7 +426,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -489,7 +496,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -558,7 +566,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -627,7 +636,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -696,7 +706,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -767,7 +778,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -837,7 +849,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -906,7 +919,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -975,7 +989,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1045,7 +1060,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1114,7 +1130,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1184,7 +1201,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1253,7 +1271,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1332,7 +1351,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1411,7 +1431,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1480,7 +1501,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1551,7 +1573,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1622,7 +1645,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1694,7 +1718,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1764,7 +1789,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1835,7 +1861,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1904,7 +1931,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1973,7 +2001,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2042,7 +2071,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2111,7 +2141,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2180,7 +2211,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2249,7 +2281,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2318,7 +2351,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2390,7 +2424,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2459,7 +2494,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2528,7 +2564,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2597,7 +2634,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2666,7 +2704,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2735,7 +2774,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2804,7 +2844,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2873,7 +2914,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2942,7 +2984,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3011,7 +3054,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3081,7 +3125,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3150,7 +3195,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3219,7 +3265,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3288,7 +3335,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3357,7 +3405,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3426,7 +3475,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3495,7 +3545,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3565,7 +3616,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3635,7 +3687,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3705,7 +3758,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3774,7 +3828,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3843,7 +3898,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3912,7 +3968,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3981,7 +4038,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4050,7 +4108,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4119,7 +4178,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4188,7 +4248,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4257,7 +4318,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4327,7 +4389,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4397,7 +4460,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4467,7 +4531,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4537,7 +4602,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4606,7 +4672,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4676,7 +4743,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4746,7 +4814,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4815,7 +4884,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4888,7 +4958,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4957,7 +5028,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5027,7 +5099,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5096,7 +5169,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5160,7 +5234,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5220,7 +5295,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5289,7 +5365,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5358,7 +5435,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5427,7 +5505,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5496,7 +5575,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5566,7 +5646,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5636,7 +5717,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5705,7 +5787,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5774,7 +5857,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5844,7 +5928,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5913,7 +5998,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5982,7 +6068,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6051,7 +6138,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6127,7 +6215,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6205,7 +6294,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6274,7 +6364,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6343,7 +6434,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6413,7 +6505,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6483,7 +6576,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6553,7 +6647,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6623,7 +6718,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6692,7 +6788,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6761,7 +6858,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6830,7 +6928,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6899,7 +6998,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6968,7 +7068,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7037,7 +7138,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7106,7 +7208,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7177,7 +7280,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7246,7 +7350,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7315,7 +7420,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7384,7 +7490,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7453,7 +7560,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7522,7 +7630,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7591,7 +7700,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7660,7 +7770,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7729,7 +7840,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7798,7 +7910,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7867,7 +7980,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7936,7 +8050,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8005,7 +8120,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8074,7 +8190,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8143,7 +8260,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8212,7 +8330,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8281,7 +8400,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8350,7 +8470,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8420,7 +8541,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8489,7 +8611,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8558,7 +8681,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8627,7 +8751,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8696,7 +8821,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8765,7 +8891,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8834,7 +8961,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8903,7 +9031,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8972,7 +9101,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9041,7 +9171,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9110,7 +9241,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9179,7 +9311,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9249,7 +9382,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9318,7 +9452,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9387,7 +9522,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9456,7 +9592,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9525,7 +9662,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9594,7 +9732,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9663,7 +9802,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9732,7 +9872,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9807,7 +9948,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9877,7 +10019,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9946,7 +10089,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10015,7 +10159,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10088,7 +10233,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10147,7 +10293,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10206,7 +10353,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10265,7 +10413,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10324,7 +10473,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10383,7 +10533,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10430,7 +10581,8 @@
         "args": [
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
+          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_10.net_unittests.filter"
         ],
         "merge": {
           "args": [
@@ -10442,7 +10594,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10500,7 +10653,8 @@
         },
         "name": "system_webview_wpt",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "results_handler": "layout tests",
         "swarming": {
@@ -10538,7 +10692,8 @@
         },
         "name": "weblayer_shell_wpt",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "results_handler": "layout tests",
         "swarming": {
@@ -10583,7 +10738,8 @@
         },
         "name": "chrome_public_wpt",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "results_handler": "layout tests",
         "swarming": {
@@ -10651,7 +10807,8 @@
         },
         "name": "weblayer_instrumentation_test_apk_ToT_Tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10731,7 +10888,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10817,7 +10975,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10903,7 +11062,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10989,7 +11149,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11075,7 +11236,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11161,7 +11323,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11237,7 +11400,8 @@
         },
         "name": "weblayer_shell_wpt",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "results_handler": "layout tests",
         "swarming": {
@@ -11302,7 +11466,8 @@
         },
         "name": "weblayer_shell_wpt",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "results_handler": "layout tests",
         "swarming": {
@@ -11366,7 +11531,8 @@
         },
         "name": "system_webview_wpt",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "results_handler": "layout tests",
         "swarming": {
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 7f31004..e769bdc 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -23,7 +23,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -74,7 +75,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -133,7 +135,8 @@
         },
         "name": "webview_cts_tests_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -190,7 +193,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -243,7 +247,8 @@
         },
         "name": "webview_ui_test_app_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -298,7 +303,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -348,7 +354,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -406,7 +413,8 @@
         },
         "name": "webview_cts_tests_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -462,7 +470,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -514,7 +523,8 @@
         },
         "name": "webview_ui_test_app_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -568,7 +578,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -619,7 +630,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -670,7 +682,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -729,7 +742,8 @@
         },
         "name": "webview_cts_tests_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -786,7 +800,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -840,7 +855,8 @@
         },
         "name": "webview_instrumentation_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -892,7 +908,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -945,7 +962,8 @@
         },
         "name": "webview_ui_test_app_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1000,7 +1018,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1051,7 +1070,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1102,7 +1122,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1161,7 +1182,8 @@
         },
         "name": "webview_cts_tests_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1218,7 +1240,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1272,7 +1295,8 @@
         },
         "name": "webview_instrumentation_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1324,7 +1348,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1377,7 +1402,8 @@
         },
         "name": "webview_ui_test_app_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1432,7 +1458,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1482,7 +1509,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1532,7 +1560,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1590,7 +1619,8 @@
         },
         "name": "webview_cts_tests_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1646,7 +1676,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1699,7 +1730,8 @@
         },
         "name": "webview_instrumentation_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1750,7 +1782,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1802,7 +1835,8 @@
         },
         "name": "webview_ui_test_app_test_apk_no_field_trial",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2033,7 +2067,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2083,7 +2118,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2134,7 +2170,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2184,7 +2221,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2229,7 +2267,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2270,7 +2309,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2320,7 +2360,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2370,7 +2411,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2420,7 +2462,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2470,7 +2513,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2521,7 +2565,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2572,7 +2617,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2622,7 +2668,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2672,7 +2719,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2723,7 +2771,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2773,7 +2822,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2823,7 +2873,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2873,7 +2924,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2923,7 +2975,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2973,7 +3026,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3029,7 +3083,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3080,7 +3135,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3130,7 +3186,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3181,7 +3238,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3232,7 +3290,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3283,7 +3342,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3334,7 +3394,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3384,7 +3445,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3434,7 +3496,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3484,7 +3547,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3534,7 +3598,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3584,7 +3649,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3634,7 +3700,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3684,7 +3751,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3736,7 +3804,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3786,7 +3855,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3836,7 +3906,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3886,7 +3957,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3936,7 +4008,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3986,7 +4059,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4036,7 +4110,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4086,7 +4161,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4136,7 +4212,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4186,7 +4263,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4236,7 +4314,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4286,7 +4365,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4336,7 +4416,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4386,7 +4467,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4436,7 +4518,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4488,7 +4571,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4538,7 +4622,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4588,7 +4673,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4638,7 +4724,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4688,7 +4775,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4738,7 +4826,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4788,7 +4877,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4838,7 +4928,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4888,7 +4979,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4938,7 +5030,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4989,7 +5082,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5039,7 +5133,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5089,7 +5184,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5139,7 +5235,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5189,7 +5286,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5239,7 +5337,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5289,7 +5388,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5339,7 +5439,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5389,7 +5490,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5439,7 +5541,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5489,7 +5592,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5540,7 +5644,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5590,7 +5695,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5644,7 +5750,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5694,7 +5801,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5745,7 +5853,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5795,7 +5904,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5840,7 +5950,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5881,7 +5992,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5931,7 +6043,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5981,7 +6094,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6031,7 +6145,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6081,7 +6196,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6132,7 +6248,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6183,7 +6300,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6233,7 +6351,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6283,7 +6402,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6334,7 +6454,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6384,7 +6505,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6434,7 +6556,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6484,7 +6607,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6534,7 +6658,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6584,7 +6709,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6640,7 +6766,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6691,7 +6818,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6741,7 +6869,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6793,7 +6922,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6844,7 +6974,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6895,7 +7026,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6946,7 +7078,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6996,7 +7129,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7046,7 +7180,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7096,7 +7231,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7146,7 +7282,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7196,7 +7333,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7246,7 +7384,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7296,7 +7435,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7348,7 +7488,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7398,7 +7539,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7448,7 +7590,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7498,7 +7641,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7548,7 +7692,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7598,7 +7743,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7648,7 +7794,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7698,7 +7845,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7748,7 +7896,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7798,7 +7947,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7848,7 +7998,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7898,7 +8049,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7948,7 +8100,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7998,7 +8151,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8048,7 +8202,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8099,7 +8254,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8149,7 +8305,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8199,7 +8356,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8249,7 +8407,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8299,7 +8458,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8349,7 +8509,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8399,7 +8560,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8449,7 +8611,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8499,7 +8662,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8549,7 +8713,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8600,7 +8765,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8650,7 +8816,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8700,7 +8867,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8750,7 +8918,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8800,7 +8969,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8850,7 +9020,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8900,7 +9071,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8950,7 +9122,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9000,7 +9173,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9050,7 +9224,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9100,7 +9275,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9151,7 +9327,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9201,7 +9378,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9255,7 +9433,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9304,7 +9483,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9354,7 +9534,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9403,7 +9584,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9447,7 +9629,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9487,7 +9670,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9536,7 +9720,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9585,7 +9770,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9634,7 +9820,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9683,7 +9870,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9733,7 +9921,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9784,7 +9973,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9833,7 +10023,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9882,7 +10073,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9932,7 +10124,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9981,7 +10174,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10030,7 +10224,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10079,7 +10274,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10128,7 +10324,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10177,7 +10374,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10232,7 +10430,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10284,7 +10483,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10334,7 +10534,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10383,7 +10584,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10433,7 +10635,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10483,7 +10686,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10533,7 +10737,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10583,7 +10788,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10632,7 +10838,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10681,7 +10888,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10730,7 +10938,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10779,7 +10988,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10828,7 +11038,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10877,7 +11088,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10926,7 +11138,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10977,7 +11190,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11026,7 +11240,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11075,7 +11290,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11124,7 +11340,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11173,7 +11390,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11222,7 +11440,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11271,7 +11490,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11320,7 +11540,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11369,7 +11590,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11418,7 +11640,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11467,7 +11690,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11516,7 +11740,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11565,7 +11790,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11614,7 +11840,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11663,7 +11890,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11713,7 +11941,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11762,7 +11991,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11811,7 +12041,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11860,7 +12091,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11909,7 +12141,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11958,7 +12191,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12007,7 +12241,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12056,7 +12291,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12105,7 +12341,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12154,7 +12391,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12204,7 +12442,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12253,7 +12492,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12302,7 +12542,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12351,7 +12592,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12400,7 +12642,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12449,7 +12692,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12498,7 +12742,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12547,7 +12792,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12596,7 +12842,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12645,7 +12892,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12694,7 +12942,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12744,7 +12993,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12793,7 +13043,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12846,7 +13097,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12896,7 +13148,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12947,7 +13200,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12997,7 +13251,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13042,7 +13297,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13083,7 +13339,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13133,7 +13390,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13183,7 +13441,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13233,7 +13492,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13283,7 +13543,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13334,7 +13595,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13385,7 +13647,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13435,7 +13698,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13485,7 +13749,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13536,7 +13801,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13586,7 +13852,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13636,7 +13903,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13686,7 +13954,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13736,7 +14005,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13786,7 +14056,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13844,7 +14115,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13895,7 +14167,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13945,7 +14218,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13997,7 +14271,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14048,7 +14323,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14099,7 +14375,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14150,7 +14427,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14200,7 +14478,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14250,7 +14529,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14300,7 +14580,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14350,7 +14631,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14400,7 +14682,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14450,7 +14733,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14500,7 +14784,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14552,7 +14837,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14602,7 +14888,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14652,7 +14939,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14702,7 +14990,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14752,7 +15041,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14802,7 +15092,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14852,7 +15143,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14902,7 +15194,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14952,7 +15245,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15002,7 +15296,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15052,7 +15347,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15102,7 +15398,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15152,7 +15449,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15202,7 +15500,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15252,7 +15551,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15303,7 +15603,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15353,7 +15654,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15403,7 +15705,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15453,7 +15756,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15503,7 +15807,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15553,7 +15858,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15603,7 +15909,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15653,7 +15960,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15703,7 +16011,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15753,7 +16062,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15804,7 +16114,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15854,7 +16165,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15904,7 +16216,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15954,7 +16267,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16004,7 +16318,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16054,7 +16369,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16104,7 +16420,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16154,7 +16471,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16204,7 +16522,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16254,7 +16573,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16304,7 +16624,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16355,7 +16676,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16405,7 +16727,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16459,7 +16782,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16503,7 +16827,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-cardboard",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16555,7 +16880,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16603,7 +16929,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-don-enabled",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16643,7 +16970,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16683,7 +17011,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16723,7 +17052,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16764,7 +17094,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16804,7 +17135,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16848,7 +17180,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16904,7 +17237,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16958,7 +17292,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-cardboard",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17019,7 +17354,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17076,7 +17412,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-don-enabled",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17125,7 +17462,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17174,7 +17512,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17223,7 +17562,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17273,7 +17613,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17322,7 +17663,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17372,7 +17714,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17431,7 +17774,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-cardboard",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17493,7 +17837,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17551,7 +17896,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-don-enabled",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17603,7 +17949,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17653,7 +18000,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17703,7 +18051,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17753,7 +18102,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17810,7 +18160,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17859,7 +18210,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17909,7 +18261,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17958,7 +18311,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18002,7 +18356,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18042,7 +18397,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18091,7 +18447,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18140,7 +18497,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18189,7 +18547,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18238,7 +18597,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18288,7 +18648,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18338,7 +18699,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18387,7 +18749,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18436,7 +18799,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18486,7 +18850,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18535,7 +18900,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18584,7 +18950,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18633,7 +19000,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18682,7 +19050,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18731,7 +19100,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18786,7 +19156,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18838,7 +19209,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18888,7 +19260,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18937,7 +19310,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18987,7 +19361,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19037,7 +19412,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19087,7 +19463,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19137,7 +19514,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19186,7 +19564,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19235,7 +19614,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19284,7 +19664,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19333,7 +19714,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19382,7 +19764,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19431,7 +19814,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19480,7 +19864,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19531,7 +19916,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19580,7 +19966,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19629,7 +20016,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19678,7 +20066,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19727,7 +20116,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19776,7 +20166,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19825,7 +20216,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19874,7 +20266,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19923,7 +20316,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19972,7 +20366,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20021,7 +20416,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20070,7 +20466,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20119,7 +20516,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20168,7 +20566,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20217,7 +20616,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20267,7 +20667,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20316,7 +20717,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20365,7 +20767,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20414,7 +20817,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20463,7 +20867,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20512,7 +20917,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20561,7 +20967,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20610,7 +21017,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20659,7 +21067,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20708,7 +21117,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20758,7 +21168,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20807,7 +21218,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20856,7 +21268,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20905,7 +21318,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20954,7 +21368,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21003,7 +21418,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21052,7 +21468,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21101,7 +21518,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21150,7 +21568,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21199,7 +21618,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21248,7 +21668,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21298,7 +21719,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21347,7 +21769,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21391,7 +21814,8 @@
         },
         "name": "monochrome_public_apk_checker",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21417,7 +21841,8 @@
       {
         "name": "android_webview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "android_webview_junit_tests",
@@ -21426,7 +21851,8 @@
       {
         "name": "base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "base_junit_tests",
@@ -21435,7 +21861,8 @@
       {
         "name": "chrome_java_test_pagecontroller_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_java_test_pagecontroller_junit_tests",
@@ -21444,7 +21871,8 @@
       {
         "name": "chrome_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_junit_tests",
@@ -21453,7 +21881,8 @@
       {
         "name": "components_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "components_junit_tests",
@@ -21462,7 +21891,8 @@
       {
         "name": "content_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "content_junit_tests",
@@ -21471,7 +21901,8 @@
       {
         "name": "device_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "device_junit_tests",
@@ -21480,7 +21911,8 @@
       {
         "name": "junit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "junit_unit_tests",
@@ -21489,7 +21921,8 @@
       {
         "name": "keyboard_accessory_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "keyboard_accessory_junit_tests",
@@ -21498,7 +21931,8 @@
       {
         "name": "media_base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "media_base_junit_tests",
@@ -21507,7 +21941,8 @@
       {
         "name": "module_installer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "module_installer_junit_tests",
@@ -21516,7 +21951,8 @@
       {
         "name": "net_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "net_junit_tests",
@@ -21525,7 +21961,8 @@
       {
         "name": "paint_preview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "paint_preview_junit_tests",
@@ -21534,7 +21971,8 @@
       {
         "name": "password_check_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_check_junit_tests",
@@ -21543,7 +21981,8 @@
       {
         "name": "password_manager_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_manager_junit_tests",
@@ -21552,7 +21991,8 @@
       {
         "name": "services_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "services_junit_tests",
@@ -21561,7 +22001,8 @@
       {
         "name": "touch_to_fill_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "touch_to_fill_junit_tests",
@@ -21570,7 +22011,8 @@
       {
         "name": "ui_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "ui_junit_tests",
@@ -21579,7 +22021,8 @@
       {
         "name": "webapk_client_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_client_junit_tests",
@@ -21588,7 +22031,8 @@
       {
         "name": "webapk_shell_apk_h2o_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_h2o_junit_tests",
@@ -21597,7 +22041,8 @@
       {
         "name": "webapk_shell_apk_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_junit_tests",
@@ -21607,7 +22052,8 @@
         "experiment_percentage": 100,
         "name": "weblayer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "weblayer_junit_tests",
@@ -21634,7 +22080,8 @@
         },
         "name": "bf_cache_android_browsertests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21691,7 +22138,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21743,7 +22191,8 @@
         },
         "name": "bf_cache_content_browsertests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21795,7 +22244,8 @@
         },
         "name": "bf_cache_content_shell_test_apk",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21847,7 +22297,8 @@
         },
         "name": "bf_cache_content_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21900,7 +22351,8 @@
         },
         "name": "bf_cache_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21958,7 +22410,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22007,7 +22460,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22056,7 +22510,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22105,7 +22560,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22154,7 +22610,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22203,7 +22660,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22252,7 +22710,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22296,7 +22755,8 @@
         },
         "name": "cronet_sizes",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22388,7 +22848,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22437,7 +22898,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22486,7 +22948,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22535,7 +22998,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22584,7 +23048,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22633,7 +23098,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22682,7 +23148,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22736,7 +23203,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22785,7 +23253,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22834,7 +23303,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22883,7 +23353,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22932,7 +23403,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22981,7 +23453,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23030,7 +23503,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23182,7 +23656,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23231,7 +23706,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23280,7 +23756,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23329,7 +23806,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23378,7 +23856,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23427,7 +23906,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23476,7 +23956,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23534,7 +24015,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23583,7 +24065,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23632,7 +24115,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23681,7 +24165,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23730,7 +24215,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23779,7 +24265,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23828,7 +24315,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23882,7 +24370,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23931,7 +24420,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23980,7 +24470,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24029,7 +24520,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24078,7 +24570,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24127,7 +24620,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24176,7 +24670,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24329,7 +24824,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24385,7 +24881,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24435,7 +24932,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24493,7 +24991,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24537,7 +25036,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24577,7 +25077,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24626,7 +25127,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24675,7 +25177,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24724,7 +25227,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24773,7 +25277,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24822,7 +25327,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24871,7 +25377,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24920,7 +25427,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -24970,7 +25478,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25019,7 +25528,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25068,7 +25578,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25117,7 +25628,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25166,7 +25678,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25215,7 +25728,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25265,7 +25779,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25315,7 +25830,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25365,7 +25881,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25414,7 +25931,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25463,7 +25981,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25512,7 +26031,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25561,7 +26081,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25610,7 +26131,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25659,7 +26181,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25708,7 +26231,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25759,7 +26283,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25808,7 +26333,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25857,7 +26383,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25906,7 +26433,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -25955,7 +26483,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26004,7 +26533,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26053,7 +26583,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26102,7 +26633,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26151,7 +26683,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26200,7 +26733,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26249,7 +26783,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26298,7 +26833,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26347,7 +26883,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26396,7 +26933,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26445,7 +26983,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26496,7 +27035,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26545,7 +27085,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26594,7 +27135,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26643,7 +27185,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26692,7 +27235,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26741,7 +27285,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26790,7 +27335,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26839,7 +27385,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26888,7 +27435,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26937,7 +27485,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -26987,7 +27536,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27036,7 +27586,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27085,7 +27636,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27134,7 +27686,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27183,7 +27736,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27232,7 +27786,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27271,7 +27826,8 @@
       {
         "name": "incremental_javac_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "incremental_javac_junit_tests",
@@ -27301,7 +27857,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27351,7 +27908,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27401,7 +27959,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27446,7 +28005,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27487,7 +28047,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27537,7 +28098,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27587,7 +28149,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27637,7 +28200,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27687,7 +28251,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27737,7 +28302,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27787,7 +28353,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27837,7 +28404,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27888,7 +28456,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27938,7 +28507,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27988,7 +28558,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28040,7 +28611,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28091,7 +28663,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28141,7 +28714,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28192,7 +28766,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28243,7 +28818,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28293,7 +28869,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28343,7 +28920,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28393,7 +28971,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28443,7 +29022,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28493,7 +29073,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28543,7 +29124,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28593,7 +29175,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28645,7 +29228,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28695,7 +29279,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28745,7 +29330,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28795,7 +29381,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28845,7 +29432,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28895,7 +29483,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28945,7 +29534,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28995,7 +29585,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29045,7 +29636,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29095,7 +29687,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29145,7 +29738,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29195,7 +29789,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29245,7 +29840,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29295,7 +29891,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29345,7 +29942,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29396,7 +29994,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29446,7 +30045,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29496,7 +30096,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29546,7 +30147,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29596,7 +30198,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29646,7 +30249,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29696,7 +30300,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29746,7 +30351,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29796,7 +30402,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29846,7 +30453,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29896,7 +30504,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29946,7 +30555,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29996,7 +30606,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30046,7 +30657,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30096,7 +30708,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30146,7 +30759,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30196,7 +30810,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30246,7 +30861,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30296,7 +30912,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30346,7 +30963,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30396,7 +31014,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30446,7 +31065,8 @@
         },
         "name": "components_perftests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30481,7 +31101,8 @@
         },
         "name": "content_shell_crash_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30520,7 +31141,8 @@
         },
         "name": "telemetry_chromium_minidump_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30549,7 +31171,8 @@
         "isolate_profile_data": true,
         "name": "android_webview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "android_webview_junit_tests",
@@ -30559,7 +31182,8 @@
         "isolate_profile_data": true,
         "name": "base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "base_junit_tests",
@@ -30569,7 +31193,8 @@
         "isolate_profile_data": true,
         "name": "chrome_java_test_pagecontroller_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_java_test_pagecontroller_junit_tests",
@@ -30579,7 +31204,8 @@
         "isolate_profile_data": true,
         "name": "chrome_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_junit_tests",
@@ -30589,7 +31215,8 @@
         "isolate_profile_data": true,
         "name": "components_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "components_junit_tests",
@@ -30599,7 +31226,8 @@
         "isolate_profile_data": true,
         "name": "content_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "content_junit_tests",
@@ -30609,7 +31237,8 @@
         "isolate_profile_data": true,
         "name": "device_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "device_junit_tests",
@@ -30619,7 +31248,8 @@
         "isolate_profile_data": true,
         "name": "junit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "junit_unit_tests",
@@ -30629,7 +31259,8 @@
         "isolate_profile_data": true,
         "name": "keyboard_accessory_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "keyboard_accessory_junit_tests",
@@ -30639,7 +31270,8 @@
         "isolate_profile_data": true,
         "name": "media_base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "media_base_junit_tests",
@@ -30649,7 +31281,8 @@
         "isolate_profile_data": true,
         "name": "module_installer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "module_installer_junit_tests",
@@ -30659,7 +31292,8 @@
         "isolate_profile_data": true,
         "name": "net_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "net_junit_tests",
@@ -30669,7 +31303,8 @@
         "isolate_profile_data": true,
         "name": "paint_preview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "paint_preview_junit_tests",
@@ -30679,7 +31314,8 @@
         "isolate_profile_data": true,
         "name": "password_check_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_check_junit_tests",
@@ -30689,7 +31325,8 @@
         "isolate_profile_data": true,
         "name": "password_manager_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_manager_junit_tests",
@@ -30699,7 +31336,8 @@
         "isolate_profile_data": true,
         "name": "services_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "services_junit_tests",
@@ -30709,7 +31347,8 @@
         "isolate_profile_data": true,
         "name": "touch_to_fill_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "touch_to_fill_junit_tests",
@@ -30719,7 +31358,8 @@
         "isolate_profile_data": true,
         "name": "ui_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "ui_junit_tests",
@@ -30729,7 +31369,8 @@
         "isolate_profile_data": true,
         "name": "webapk_client_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_client_junit_tests",
@@ -30739,7 +31380,8 @@
         "isolate_profile_data": true,
         "name": "webapk_shell_apk_h2o_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_h2o_junit_tests",
@@ -30749,7 +31391,8 @@
         "isolate_profile_data": true,
         "name": "webapk_shell_apk_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_junit_tests",
@@ -30760,7 +31403,8 @@
         "isolate_profile_data": true,
         "name": "weblayer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "weblayer_junit_tests",
@@ -30787,7 +31431,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30863,7 +31508,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30932,7 +31578,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31001,7 +31648,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31070,7 +31718,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31147,7 +31796,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31217,7 +31867,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31284,7 +31935,8 @@
         },
         "name": "monochrome_public_apk_checker",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31346,7 +31998,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31415,7 +32068,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31485,7 +32139,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31554,7 +32209,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31618,7 +32274,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31678,7 +32335,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31747,7 +32405,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31816,7 +32475,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31885,7 +32545,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31954,7 +32615,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32023,7 +32685,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32092,7 +32755,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32161,7 +32825,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32231,7 +32896,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32300,7 +32966,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32370,7 +33037,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32439,7 +33107,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32508,7 +33177,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32579,7 +33249,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32650,7 +33321,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32720,7 +33392,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32790,7 +33463,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32859,7 +33533,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32928,7 +33603,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32997,7 +33673,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33066,7 +33743,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33135,7 +33813,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33204,7 +33883,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33273,7 +33953,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33345,7 +34026,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33414,7 +34096,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33483,7 +34166,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33552,7 +34236,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33621,7 +34306,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33690,7 +34376,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33759,7 +34446,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33828,7 +34516,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33897,7 +34586,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33966,7 +34656,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34036,7 +34727,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34105,7 +34797,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34174,7 +34867,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34243,7 +34937,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34313,7 +35008,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34384,7 +35080,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34453,7 +35150,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34522,7 +35220,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34591,7 +35290,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34660,7 +35360,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34729,7 +35430,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34798,7 +35500,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34867,7 +35570,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34936,7 +35640,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35005,7 +35710,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35075,7 +35781,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35144,7 +35851,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35213,7 +35921,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35282,7 +35991,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35351,7 +36061,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35421,7 +36132,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35490,7 +36202,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35559,7 +36272,8 @@
         },
         "name": "components_perftests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35624,7 +36338,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35673,7 +36388,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35723,7 +36439,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35772,7 +36489,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35816,7 +36534,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35856,7 +36575,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35905,7 +36625,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35954,7 +36675,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36003,7 +36725,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36053,7 +36776,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36103,7 +36827,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36153,7 +36878,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36202,7 +36928,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36251,7 +36978,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36301,7 +37029,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36350,7 +37079,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36399,7 +37129,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36448,7 +37179,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36497,7 +37229,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36546,7 +37279,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36601,7 +37335,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36655,7 +37390,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36705,7 +37441,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36754,7 +37491,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36805,7 +37543,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36855,7 +37594,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36905,7 +37645,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36955,7 +37696,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37004,7 +37746,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37053,7 +37796,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37102,7 +37846,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37151,7 +37896,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37200,7 +37946,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37249,7 +37996,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37298,7 +38046,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37349,7 +38098,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37398,7 +38148,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37447,7 +38198,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37496,7 +38248,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37545,7 +38298,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37594,7 +38348,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37643,7 +38398,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37692,7 +38448,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37741,7 +38498,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37790,7 +38548,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37839,7 +38598,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37888,7 +38648,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37937,7 +38698,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37986,7 +38748,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38035,7 +38798,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38084,7 +38848,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38133,7 +38898,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38182,7 +38948,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38232,7 +38999,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38282,7 +39050,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38331,7 +39100,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38380,7 +39150,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38429,7 +39200,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38478,7 +39250,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38527,7 +39300,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38576,7 +39350,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38625,7 +39400,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38674,7 +39450,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38723,7 +39500,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38773,7 +39551,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38822,7 +39601,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38871,7 +39651,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38920,7 +39701,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38969,7 +39751,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39018,7 +39801,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39067,7 +39851,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39116,7 +39901,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39165,7 +39951,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39214,7 +40001,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39263,7 +40051,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39313,7 +40102,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39362,7 +40152,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39411,7 +40202,8 @@
         },
         "name": "components_perftests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39445,7 +40237,8 @@
         },
         "name": "content_shell_crash_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39483,7 +40276,8 @@
         },
         "name": "telemetry_chromium_minidump_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39521,7 +40315,8 @@
         },
         "name": "telemetry_monochrome_minidump_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39567,7 +40362,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39618,7 +40414,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39670,7 +40467,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39721,7 +40519,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39767,7 +40566,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39809,7 +40609,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39860,7 +40661,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39911,7 +40713,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39962,7 +40765,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40013,7 +40817,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40065,7 +40870,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40117,7 +40923,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40168,7 +40975,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40219,7 +41027,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40271,7 +41080,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40322,7 +41132,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40373,7 +41184,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40424,7 +41236,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40475,7 +41288,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40527,7 +41341,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40579,7 +41394,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40631,7 +41447,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40682,7 +41499,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40733,7 +41551,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40784,7 +41603,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40835,7 +41655,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40886,7 +41707,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40937,7 +41759,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40988,7 +41811,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41041,7 +41865,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41092,7 +41917,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41143,7 +41969,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41194,7 +42021,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41245,7 +42073,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41296,7 +42125,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41347,7 +42177,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41398,7 +42229,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41449,7 +42281,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41500,7 +42333,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41551,7 +42385,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41602,7 +42437,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41653,7 +42489,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41704,7 +42541,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41756,7 +42594,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41807,7 +42646,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41858,7 +42698,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41909,7 +42750,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41960,7 +42802,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42011,7 +42854,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42062,7 +42906,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42113,7 +42958,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42164,7 +43010,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42215,7 +43062,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42267,7 +43115,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42318,7 +43167,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42369,7 +43219,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42420,7 +43271,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42471,7 +43323,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42522,7 +43375,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42573,7 +43427,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42627,7 +43482,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42677,7 +43533,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42727,7 +43584,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42781,7 +43639,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-cardboard",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42843,7 +43702,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42901,7 +43761,8 @@
         },
         "name": "chrome_public_test_vr_apk-ddready-don-enabled",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42951,7 +43812,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43001,7 +43863,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43051,7 +43914,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43103,7 +43967,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43153,7 +44018,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43203,7 +44069,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43263,7 +44130,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43314,7 +44182,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43364,7 +44233,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43414,7 +44284,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43464,7 +44335,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43522,7 +44394,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43573,7 +44446,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43624,7 +44498,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43674,7 +44549,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43724,7 +44600,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43774,7 +44651,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43824,7 +44702,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43874,7 +44753,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43924,7 +44804,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43974,7 +44855,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44030,7 +44912,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44081,7 +44964,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44136,7 +45020,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44206,7 +45091,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44277,7 +45163,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44346,7 +45233,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44410,7 +45298,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44470,7 +45359,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44539,7 +45429,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44608,7 +45499,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44677,7 +45569,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44746,7 +45639,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44816,7 +45710,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44886,7 +45781,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44955,7 +45851,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45024,7 +45921,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45094,7 +45992,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45163,7 +46062,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45233,7 +46133,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45302,7 +46203,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45371,7 +46273,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45440,7 +46343,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45517,7 +46421,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45596,7 +46501,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45665,7 +46571,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45734,7 +46641,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45805,7 +46713,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45876,7 +46785,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45946,7 +46856,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46016,7 +46927,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46085,7 +46997,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46154,7 +47067,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46223,7 +47137,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46292,7 +47207,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46361,7 +47277,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46430,7 +47347,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46499,7 +47417,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46571,7 +47490,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46640,7 +47560,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46709,7 +47630,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46778,7 +47700,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46847,7 +47770,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46916,7 +47840,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46985,7 +47910,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47054,7 +47980,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47123,7 +48050,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47192,7 +48120,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47262,7 +48191,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47331,7 +48261,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47400,7 +48331,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47469,7 +48401,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47538,7 +48471,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47607,7 +48541,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47676,7 +48611,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47746,7 +48682,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47817,7 +48754,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47886,7 +48824,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47955,7 +48894,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48024,7 +48964,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48093,7 +49034,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48162,7 +49104,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48231,7 +49174,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48300,7 +49244,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48369,7 +49314,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48438,7 +49384,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48507,7 +49454,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48577,7 +49525,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48647,7 +49596,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48716,7 +49666,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48785,7 +49736,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48854,7 +49806,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48923,7 +49876,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48992,7 +49946,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49061,7 +50016,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49137,7 +50093,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49207,7 +50164,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49276,7 +50234,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49345,7 +50304,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49430,7 +50390,8 @@
         },
         "name": "weblayer_skew_tests_with_chrome_with_client_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49517,7 +50478,8 @@
         },
         "name": "weblayer_skew_tests_with_chrome_with_client_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49604,7 +50566,8 @@
         },
         "name": "weblayer_skew_tests_with_chrome_with_client_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49691,7 +50654,8 @@
         },
         "name": "weblayer_skew_tests_with_chrome_with_impl_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49778,7 +50742,8 @@
         },
         "name": "weblayer_skew_tests_with_chrome_with_impl_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49865,7 +50830,8 @@
         },
         "name": "weblayer_skew_tests_with_chrome_with_impl_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49945,7 +50911,8 @@
         },
         "name": "weblayer_instrumentation_test_apk_ToT_Tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50025,7 +50992,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50111,7 +51079,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50197,7 +51166,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50283,7 +51253,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50369,7 +51340,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50455,7 +51427,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50535,7 +51508,8 @@
         },
         "name": "weblayer_instrumentation_test_apk_ToT_Tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50615,7 +51589,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50701,7 +51676,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50787,7 +51763,8 @@
         },
         "name": "weblayer_skew_tests_with_client_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50873,7 +51850,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_91",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50959,7 +51937,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_92",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51045,7 +52024,8 @@
         },
         "name": "weblayer_skew_tests_with_impl_from_93",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/chromium.angle.json b/testing/buildbot/chromium.angle.json
index a52e759..94fa110e 100644
--- a/testing/buildbot/chromium.angle.json
+++ b/testing/buildbot/chromium.angle.json
@@ -16,7 +16,8 @@
         },
         "name": "angle_deqp_egl_gles_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55,7 +56,8 @@
         },
         "name": "angle_deqp_gles2_gles_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -94,7 +96,8 @@
         },
         "name": "angle_deqp_gles3_gles_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -133,7 +136,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -170,7 +174,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -218,7 +223,8 @@
         },
         "name": "webgl_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -278,7 +284,8 @@
         },
         "name": "angle_end2end_tests_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -336,7 +343,8 @@
         },
         "name": "angle_white_box_tests_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -452,7 +460,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -486,7 +495,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -522,7 +532,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -558,7 +569,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -655,7 +667,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -689,7 +702,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -725,7 +739,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -761,7 +776,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2012,7 +2028,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2051,7 +2068,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2090,7 +2108,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2129,7 +2148,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2168,7 +2188,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2206,7 +2227,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2307,7 +2329,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2344,7 +2367,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2381,7 +2405,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2418,7 +2443,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2455,7 +2481,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2491,7 +2518,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2824,7 +2852,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2860,7 +2889,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2896,7 +2926,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2932,7 +2963,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2968,7 +3000,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3003,7 +3036,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3046,7 +3080,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3082,7 +3117,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3118,7 +3154,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3154,7 +3191,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3190,7 +3228,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3225,7 +3264,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4088,7 +4128,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4124,7 +4165,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4159,7 +4201,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json
index 0159eec..f6ecf54 100644
--- a/testing/buildbot/chromium.chromiumos.json
+++ b/testing/buildbot/chromium.chromiumos.json
@@ -1087,7 +1087,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index a2c3081..37710e5a 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -3209,6 +3209,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -4938,6 +4943,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -5175,7 +5185,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5224,7 +5235,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5274,7 +5286,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5323,7 +5336,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5367,7 +5381,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5407,7 +5422,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5456,7 +5472,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5505,7 +5522,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5554,7 +5572,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5603,7 +5622,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5653,7 +5673,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5703,7 +5724,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5752,7 +5774,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5801,7 +5824,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5851,7 +5875,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5900,7 +5925,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5949,7 +5975,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5998,7 +6025,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6053,7 +6081,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6103,7 +6132,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6152,7 +6182,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6202,7 +6233,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6252,7 +6284,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6302,7 +6335,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6352,7 +6386,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6401,7 +6436,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6450,7 +6486,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6499,7 +6536,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6548,7 +6586,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6597,7 +6636,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6646,7 +6686,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6695,7 +6736,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6746,7 +6788,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6795,7 +6838,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6844,7 +6888,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6893,7 +6938,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6942,7 +6988,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6991,7 +7038,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7040,7 +7088,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7089,7 +7138,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7138,7 +7188,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7187,7 +7238,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7236,7 +7288,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7285,7 +7338,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7334,7 +7388,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7383,7 +7438,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7432,7 +7488,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7482,7 +7539,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7531,7 +7589,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7580,7 +7639,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7629,7 +7689,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7678,7 +7739,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7727,7 +7789,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7776,7 +7839,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7825,7 +7889,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7874,7 +7939,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7923,7 +7989,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7973,7 +8040,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8022,7 +8090,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8071,7 +8140,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8120,7 +8190,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8169,7 +8240,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8218,7 +8290,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8267,7 +8340,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8313,7 +8387,8 @@
         },
         "name": "chrome_sizes",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8342,7 +8417,8 @@
         },
         "name": "monochrome_public_apk_checker",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8368,7 +8444,8 @@
       {
         "name": "android_webview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "android_webview_junit_tests",
@@ -8377,7 +8454,8 @@
       {
         "name": "base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "base_junit_tests",
@@ -8386,7 +8464,8 @@
       {
         "name": "chrome_java_test_pagecontroller_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_java_test_pagecontroller_junit_tests",
@@ -8395,7 +8474,8 @@
       {
         "name": "chrome_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_junit_tests",
@@ -8404,7 +8484,8 @@
       {
         "name": "components_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "components_junit_tests",
@@ -8413,7 +8494,8 @@
       {
         "name": "content_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "content_junit_tests",
@@ -8422,7 +8504,8 @@
       {
         "name": "device_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "device_junit_tests",
@@ -8431,7 +8514,8 @@
       {
         "name": "junit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "junit_unit_tests",
@@ -8440,7 +8524,8 @@
       {
         "name": "keyboard_accessory_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "keyboard_accessory_junit_tests",
@@ -8449,7 +8534,8 @@
       {
         "name": "media_base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "media_base_junit_tests",
@@ -8458,7 +8544,8 @@
       {
         "name": "module_installer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "module_installer_junit_tests",
@@ -8467,7 +8554,8 @@
       {
         "name": "net_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "net_junit_tests",
@@ -8476,7 +8564,8 @@
       {
         "name": "paint_preview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "paint_preview_junit_tests",
@@ -8485,7 +8574,8 @@
       {
         "name": "password_check_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_check_junit_tests",
@@ -8494,7 +8584,8 @@
       {
         "name": "password_manager_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_manager_junit_tests",
@@ -8503,7 +8594,8 @@
       {
         "name": "services_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "services_junit_tests",
@@ -8512,7 +8604,8 @@
       {
         "name": "touch_to_fill_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "touch_to_fill_junit_tests",
@@ -8521,7 +8614,8 @@
       {
         "name": "ui_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "ui_junit_tests",
@@ -8530,7 +8624,8 @@
       {
         "name": "webapk_client_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_client_junit_tests",
@@ -8539,7 +8634,8 @@
       {
         "name": "webapk_shell_apk_h2o_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_h2o_junit_tests",
@@ -8548,7 +8644,8 @@
       {
         "name": "webapk_shell_apk_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_junit_tests",
@@ -8558,7 +8655,8 @@
         "experiment_percentage": 100,
         "name": "weblayer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "weblayer_junit_tests",
@@ -8633,7 +8731,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8672,7 +8771,8 @@
       {
         "name": "base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "base_junit_tests",
@@ -10120,7 +10220,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10152,7 +10253,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10184,7 +10286,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10216,7 +10319,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10252,7 +10356,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10290,7 +10395,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10322,7 +10428,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10360,7 +10467,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10392,7 +10500,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10424,7 +10533,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10456,7 +10566,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23787,6 +23898,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -25843,6 +25959,9 @@
       },
       {
         "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000",
           "--test-launcher-print-test-stdio=always"
         ],
         "merge": {
@@ -27488,6 +27607,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -29101,6 +29225,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -30383,6 +30512,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -31633,6 +31767,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -33431,6 +33570,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -35315,6 +35459,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -37199,6 +37348,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -39116,6 +39270,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -40383,6 +40542,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -42166,6 +42330,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -44050,6 +44219,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -44354,7 +44528,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44404,7 +44579,8 @@
         },
         "name": "base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44454,7 +44630,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44504,7 +44681,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44554,7 +44732,8 @@
         },
         "name": "components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44604,7 +44783,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44654,7 +44834,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44704,7 +44885,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44754,7 +44936,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44804,7 +44987,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44854,7 +45038,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44904,7 +45089,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44954,7 +45140,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45004,7 +45191,8 @@
         },
         "name": "net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45054,7 +45242,8 @@
         },
         "name": "skia_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45104,7 +45293,8 @@
         },
         "name": "sql_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45154,7 +45344,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45204,7 +45395,8 @@
         },
         "name": "url_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45274,7 +45466,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45319,7 +45512,8 @@
         },
         "name": "base_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45364,7 +45558,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45409,7 +45604,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45454,7 +45650,8 @@
         },
         "name": "components_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45499,7 +45696,8 @@
         },
         "name": "crypto_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45544,7 +45742,8 @@
         },
         "name": "gfx_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45589,7 +45788,8 @@
         },
         "name": "google_apis_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45634,7 +45834,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45679,7 +45880,8 @@
         },
         "name": "ios_net_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45724,7 +45926,8 @@
         },
         "name": "ios_web_inttests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45769,7 +45972,8 @@
         },
         "name": "ios_web_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45814,7 +46018,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45859,7 +46064,8 @@
         },
         "name": "net_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45904,7 +46110,8 @@
         },
         "name": "skia_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45949,7 +46156,8 @@
         },
         "name": "sql_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45994,7 +46202,8 @@
         },
         "name": "ui_base_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46039,7 +46248,8 @@
         },
         "name": "url_unittests_iPhone 6S 12.3.1",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47551,6 +47761,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
diff --git a/testing/buildbot/chromium.dawn.json b/testing/buildbot/chromium.dawn.json
index 81c771d2..93e39c3 100644
--- a/testing/buildbot/chromium.dawn.json
+++ b/testing/buildbot/chromium.dawn.json
@@ -251,8 +251,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -279,14 +278,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -315,7 +314,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -569,8 +569,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -597,14 +596,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -633,7 +632,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -887,8 +887,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -915,14 +914,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -951,7 +950,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -1205,8 +1205,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -1233,14 +1232,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -1269,7 +1268,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -1542,8 +1542,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -1572,14 +1571,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -1610,7 +1609,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -1863,8 +1863,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -1891,14 +1890,14 @@
               "os": "Mac-10.15.7"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -1927,7 +1926,8 @@
               "os": "Mac-10.15.7"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -2207,8 +2207,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -2238,14 +2237,14 @@
             }
           ],
           "expiration": 21600,
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -2277,7 +2276,8 @@
             }
           ],
           "expiration": 21600,
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -2548,8 +2548,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -2578,14 +2577,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -2616,7 +2615,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -2869,8 +2869,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -2897,14 +2896,14 @@
               "os": "Mac-10.15.7"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -2933,7 +2932,8 @@
               "os": "Mac-10.15.7"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -3160,8 +3160,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -3193,7 +3192,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -3441,8 +3441,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -3468,14 +3467,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -3503,7 +3502,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -3749,8 +3749,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -3776,14 +3775,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -3811,7 +3810,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -4057,8 +4057,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -4084,14 +4083,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -4119,7 +4118,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -4365,8 +4365,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator",
@@ -4392,14 +4391,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -4427,7 +4426,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -4675,8 +4675,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator"
@@ -4701,14 +4700,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -4735,7 +4734,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -4981,8 +4981,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator"
@@ -5007,14 +5006,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -5041,7 +5040,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -5287,8 +5287,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator"
@@ -5313,14 +5312,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -5347,7 +5346,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
@@ -5593,8 +5593,7 @@
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
           "--additional-driver-flag=--enable-dawn-features=use_tint_generator"
@@ -5619,14 +5618,14 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       },
       {
         "args": [
-          "--jobs=1",
-          "--order=natural",
+          "--initialize-webgpu-adapter-at-startup",
           "--additional-driver-flag=--enable-dawn-backend-validation=partial",
           "--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis",
           "--additional-driver-flag=--use-gpu-in-tests",
@@ -5653,7 +5652,8 @@
               "pool": "chromium.tests.gpu"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
         },
         "test_id_prefix": "ninja://:webgpu_blink_web_tests/"
       }
diff --git a/testing/buildbot/chromium.dev.json b/testing/buildbot/chromium.dev.json
index f95e1c5..2da8f7c 100644
--- a/testing/buildbot/chromium.dev.json
+++ b/testing/buildbot/chromium.dev.json
@@ -18,7 +18,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68,7 +69,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -118,7 +120,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -168,7 +171,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -222,7 +226,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -272,7 +277,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -322,7 +328,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -372,7 +379,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 961df19..90b8b169 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -200,7 +200,8 @@
         },
         "name": "site_per_process_android_browsertests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -232,7 +233,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -259,7 +261,8 @@
         },
         "name": "site_per_process_components_browsertests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -285,7 +288,8 @@
         },
         "name": "site_per_process_components_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -313,7 +317,8 @@
         },
         "name": "site_per_process_content_browsertests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -340,7 +345,8 @@
         },
         "name": "site_per_process_content_shell_test_apk",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -367,7 +373,8 @@
         },
         "name": "site_per_process_content_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -393,7 +400,8 @@
         },
         "name": "site_per_process_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -468,7 +476,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -495,7 +504,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -515,7 +525,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1619,6 +1630,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -3541,6 +3557,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "isolate_profile_data": true,
         "merge": {
           "args": [],
@@ -4156,7 +4177,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4206,7 +4228,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4257,7 +4280,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4307,7 +4331,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4352,7 +4377,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4393,7 +4419,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4443,7 +4470,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4493,7 +4521,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4543,7 +4572,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4593,7 +4623,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4644,7 +4675,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4695,7 +4727,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4745,7 +4778,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4795,7 +4829,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4846,7 +4881,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4896,7 +4932,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4946,7 +4983,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4996,7 +5034,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5052,7 +5091,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5105,7 +5145,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5156,7 +5197,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5206,7 +5248,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5257,7 +5300,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5308,7 +5352,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5359,7 +5404,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5410,7 +5456,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5460,7 +5507,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5510,7 +5558,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5560,7 +5609,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5610,7 +5660,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5660,7 +5711,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5710,7 +5762,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5760,7 +5813,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5812,7 +5866,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5862,7 +5917,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5912,7 +5968,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5962,7 +6019,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6012,7 +6070,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6062,7 +6121,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6112,7 +6172,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6162,7 +6223,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6212,7 +6274,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6262,7 +6325,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6312,7 +6376,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6362,7 +6427,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6412,7 +6478,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6462,7 +6529,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6512,7 +6580,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6563,7 +6632,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6613,7 +6683,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6663,7 +6734,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6713,7 +6785,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6763,7 +6836,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6813,7 +6887,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6863,7 +6938,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6913,7 +6989,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6963,7 +7040,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7013,7 +7091,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7063,7 +7142,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7114,7 +7194,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7164,7 +7245,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7214,7 +7296,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7264,7 +7347,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7314,7 +7398,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7364,7 +7449,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7415,7 +7501,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7465,7 +7552,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7519,7 +7607,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7569,7 +7658,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7620,7 +7710,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7670,7 +7761,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7715,7 +7807,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7756,7 +7849,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7806,7 +7900,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7856,7 +7951,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7906,7 +8002,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7956,7 +8053,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8007,7 +8105,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8058,7 +8157,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8108,7 +8208,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8158,7 +8259,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8209,7 +8311,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8259,7 +8362,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8309,7 +8413,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8359,7 +8464,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8415,7 +8521,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8468,7 +8575,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8519,7 +8627,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8569,7 +8678,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8620,7 +8730,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8671,7 +8782,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8722,7 +8834,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8773,7 +8886,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8823,7 +8937,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8873,7 +8988,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8923,7 +9039,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8973,7 +9090,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9023,7 +9141,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9073,7 +9192,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9123,7 +9243,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9175,7 +9296,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9225,7 +9347,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9275,7 +9398,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9325,7 +9449,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9375,7 +9500,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9425,7 +9551,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9475,7 +9602,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9525,7 +9653,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9575,7 +9704,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9625,7 +9755,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9675,7 +9806,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9725,7 +9857,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9775,7 +9908,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9825,7 +9959,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9875,7 +10010,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9926,7 +10062,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -9976,7 +10113,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10026,7 +10164,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10076,7 +10215,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10126,7 +10266,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10176,7 +10317,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10226,7 +10368,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10276,7 +10419,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10326,7 +10470,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10376,7 +10521,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10426,7 +10572,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10477,7 +10624,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10527,7 +10675,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10577,7 +10726,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10627,7 +10777,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10677,7 +10828,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10727,7 +10879,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10778,7 +10931,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10828,7 +10982,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10883,7 +11038,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10933,7 +11089,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -10984,7 +11141,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11034,7 +11192,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11079,7 +11238,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11120,7 +11280,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11170,7 +11331,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11220,7 +11382,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11270,7 +11433,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11320,7 +11484,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11371,7 +11536,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11422,7 +11588,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11472,7 +11639,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11522,7 +11690,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11573,7 +11742,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11623,7 +11793,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11673,7 +11844,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11723,7 +11895,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11773,7 +11946,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11823,7 +11997,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11879,7 +12054,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11932,7 +12108,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -11983,7 +12160,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12033,7 +12211,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12084,7 +12263,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12135,7 +12315,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12186,7 +12367,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12237,7 +12419,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12287,7 +12470,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12337,7 +12521,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12387,7 +12572,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12437,7 +12623,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12487,7 +12674,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12537,7 +12725,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12587,7 +12776,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12639,7 +12829,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12689,7 +12880,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12739,7 +12931,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12789,7 +12982,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12839,7 +13033,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12889,7 +13084,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12939,7 +13135,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12989,7 +13186,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13039,7 +13237,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13089,7 +13288,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13139,7 +13339,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13189,7 +13390,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13239,7 +13441,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13289,7 +13492,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13339,7 +13543,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13390,7 +13595,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13440,7 +13646,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13490,7 +13697,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13540,7 +13748,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13590,7 +13799,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13640,7 +13850,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13690,7 +13901,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13740,7 +13952,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13790,7 +14003,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13840,7 +14054,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13891,7 +14106,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13941,7 +14157,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13991,7 +14208,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14041,7 +14259,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14091,7 +14310,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14141,7 +14361,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14191,7 +14412,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14241,7 +14463,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14291,7 +14514,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14341,7 +14565,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14391,7 +14616,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14447,7 +14673,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14498,7 +14725,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14548,7 +14776,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14598,7 +14827,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14638,7 +14868,8 @@
         "isolate_profile_data": true,
         "name": "android_webview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "android_webview_junit_tests",
@@ -14648,7 +14879,8 @@
         "isolate_profile_data": true,
         "name": "base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "base_junit_tests",
@@ -14658,7 +14890,8 @@
         "isolate_profile_data": true,
         "name": "chrome_java_test_pagecontroller_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_java_test_pagecontroller_junit_tests",
@@ -14668,7 +14901,8 @@
         "isolate_profile_data": true,
         "name": "chrome_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "chrome_junit_tests",
@@ -14678,7 +14912,8 @@
         "isolate_profile_data": true,
         "name": "components_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "components_junit_tests",
@@ -14688,7 +14923,8 @@
         "isolate_profile_data": true,
         "name": "content_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "content_junit_tests",
@@ -14698,7 +14934,8 @@
         "isolate_profile_data": true,
         "name": "device_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "device_junit_tests",
@@ -14708,7 +14945,8 @@
         "isolate_profile_data": true,
         "name": "junit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "junit_unit_tests",
@@ -14718,7 +14956,8 @@
         "isolate_profile_data": true,
         "name": "keyboard_accessory_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "keyboard_accessory_junit_tests",
@@ -14728,7 +14967,8 @@
         "isolate_profile_data": true,
         "name": "media_base_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "media_base_junit_tests",
@@ -14738,7 +14978,8 @@
         "isolate_profile_data": true,
         "name": "module_installer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "module_installer_junit_tests",
@@ -14748,7 +14989,8 @@
         "isolate_profile_data": true,
         "name": "net_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "net_junit_tests",
@@ -14758,7 +15000,8 @@
         "isolate_profile_data": true,
         "name": "paint_preview_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "paint_preview_junit_tests",
@@ -14768,7 +15011,8 @@
         "isolate_profile_data": true,
         "name": "password_check_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_check_junit_tests",
@@ -14778,7 +15022,8 @@
         "isolate_profile_data": true,
         "name": "password_manager_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "password_manager_junit_tests",
@@ -14788,7 +15033,8 @@
         "isolate_profile_data": true,
         "name": "services_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "services_junit_tests",
@@ -14798,7 +15044,8 @@
         "isolate_profile_data": true,
         "name": "touch_to_fill_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "touch_to_fill_junit_tests",
@@ -14808,7 +15055,8 @@
         "isolate_profile_data": true,
         "name": "ui_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "ui_junit_tests",
@@ -14818,7 +15066,8 @@
         "isolate_profile_data": true,
         "name": "webapk_client_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_client_junit_tests",
@@ -14828,7 +15077,8 @@
         "isolate_profile_data": true,
         "name": "webapk_shell_apk_h2o_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_h2o_junit_tests",
@@ -14838,7 +15088,8 @@
         "isolate_profile_data": true,
         "name": "webapk_shell_apk_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "webapk_shell_apk_junit_tests",
@@ -14849,7 +15100,8 @@
         "isolate_profile_data": true,
         "name": "weblayer_junit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {},
         "test": "weblayer_junit_tests",
@@ -14875,7 +15127,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14926,7 +15179,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14978,7 +15232,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15029,7 +15284,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15075,7 +15331,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15117,7 +15374,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15168,7 +15426,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15219,7 +15478,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15270,7 +15530,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15321,7 +15582,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15373,7 +15635,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15425,7 +15688,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15476,7 +15740,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15527,7 +15792,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15579,7 +15845,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15630,7 +15897,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15681,7 +15949,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15732,7 +16001,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15783,7 +16053,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15835,7 +16106,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15887,7 +16159,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15939,7 +16212,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15990,7 +16264,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16041,7 +16316,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16092,7 +16368,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16143,7 +16420,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16194,7 +16472,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16245,7 +16524,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16296,7 +16576,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16349,7 +16630,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16400,7 +16682,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16451,7 +16734,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16502,7 +16786,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16553,7 +16838,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16604,7 +16890,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16655,7 +16942,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16706,7 +16994,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16757,7 +17046,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16808,7 +17098,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16859,7 +17150,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16910,7 +17202,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16961,7 +17254,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17012,7 +17306,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17064,7 +17359,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17115,7 +17411,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17166,7 +17463,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17217,7 +17515,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17268,7 +17567,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17319,7 +17619,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17370,7 +17671,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17421,7 +17723,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17472,7 +17775,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17523,7 +17827,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17575,7 +17880,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17626,7 +17932,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17677,7 +17984,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17728,7 +18036,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17779,7 +18088,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17830,7 +18140,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17881,7 +18192,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18951,7 +19263,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18985,6 +19298,11 @@
       }
     ]
   },
+  "chromeos-amd64-generic-rel (reclient compare)": {
+    "additional_compile_targets": [
+      "chromiumos_preflight"
+    ]
+  },
   "chromeos-amd64-generic-rel (reclient)": {
     "additional_compile_targets": [
       "chromiumos_preflight"
@@ -20018,7 +20336,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21085,7 +21404,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25329,7 +25649,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25363,7 +25684,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25397,7 +25719,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25431,7 +25754,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25469,7 +25793,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25509,7 +25834,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25543,7 +25869,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25583,7 +25910,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25617,7 +25945,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25651,7 +25980,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25685,7 +26015,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27311,7 +27642,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27343,7 +27675,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27375,7 +27708,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27407,7 +27741,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27443,7 +27778,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27481,7 +27817,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27513,7 +27850,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27551,7 +27889,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27583,7 +27922,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27615,7 +27955,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27647,7 +27988,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27687,7 +28029,8 @@
         },
         "name": "absl_hardening_tests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27737,7 +28080,8 @@
         },
         "name": "absl_hardening_tests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27787,7 +28131,8 @@
         },
         "name": "base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27837,7 +28182,8 @@
         },
         "name": "base_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27887,7 +28233,8 @@
         },
         "name": "boringssl_crypto_tests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27937,7 +28284,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -27987,7 +28335,8 @@
         },
         "name": "boringssl_ssl_tests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28037,7 +28386,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28087,7 +28437,8 @@
         },
         "name": "components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28137,7 +28488,8 @@
         },
         "name": "components_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28187,7 +28539,8 @@
         },
         "name": "crypto_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28237,7 +28590,8 @@
         },
         "name": "crypto_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28287,7 +28641,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28337,7 +28692,8 @@
         },
         "name": "gfx_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28387,7 +28743,8 @@
         },
         "name": "google_apis_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28437,7 +28794,8 @@
         },
         "name": "google_apis_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28487,7 +28845,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28537,7 +28896,8 @@
         },
         "name": "ios_chrome_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28587,7 +28947,8 @@
         },
         "name": "ios_components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28637,7 +28998,8 @@
         },
         "name": "ios_components_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28687,7 +29049,8 @@
         },
         "name": "ios_net_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28737,7 +29100,8 @@
         },
         "name": "ios_net_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28787,7 +29151,8 @@
         },
         "name": "ios_remoting_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28837,7 +29202,8 @@
         },
         "name": "ios_remoting_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28887,7 +29253,8 @@
         },
         "name": "ios_testing_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28937,7 +29304,8 @@
         },
         "name": "ios_testing_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -28987,7 +29355,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29037,7 +29406,8 @@
         },
         "name": "ios_web_inttests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29087,7 +29457,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29137,7 +29508,8 @@
         },
         "name": "ios_web_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29187,7 +29559,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29237,7 +29610,8 @@
         },
         "name": "ios_web_view_inttests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29287,7 +29661,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29337,7 +29712,8 @@
         },
         "name": "ios_web_view_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29387,7 +29763,8 @@
         },
         "name": "net_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29437,7 +29814,8 @@
         },
         "name": "net_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29487,7 +29865,8 @@
         },
         "name": "services_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29537,7 +29916,8 @@
         },
         "name": "services_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29587,7 +29967,8 @@
         },
         "name": "skia_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29637,7 +30018,8 @@
         },
         "name": "skia_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29687,7 +30069,8 @@
         },
         "name": "sql_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29737,7 +30120,8 @@
         },
         "name": "sql_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29787,7 +30171,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29837,7 +30222,8 @@
         },
         "name": "ui_base_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29887,7 +30273,8 @@
         },
         "name": "url_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29937,7 +30324,8 @@
         },
         "name": "url_unittests_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -29994,7 +30382,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30047,7 +30436,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30100,7 +30490,8 @@
         },
         "name": "base_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30153,7 +30544,8 @@
         },
         "name": "base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30206,7 +30598,8 @@
         },
         "name": "base_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30259,7 +30652,8 @@
         },
         "name": "base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30312,7 +30706,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30365,7 +30760,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30418,7 +30814,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30471,7 +30868,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30524,7 +30922,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30577,7 +30976,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30630,7 +31030,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30683,7 +31084,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30736,7 +31138,8 @@
         },
         "name": "components_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30789,7 +31192,8 @@
         },
         "name": "components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30842,7 +31246,8 @@
         },
         "name": "components_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30895,7 +31300,8 @@
         },
         "name": "components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -30948,7 +31354,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31001,7 +31408,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31054,7 +31462,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31107,7 +31516,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31160,7 +31570,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31213,7 +31624,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31266,7 +31678,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31319,7 +31732,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31372,7 +31786,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31425,7 +31840,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31478,7 +31894,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31531,7 +31948,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31584,7 +32002,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31637,7 +32056,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31690,7 +32110,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31743,7 +32164,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31797,7 +32219,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31851,7 +32274,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31905,7 +32329,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -31959,7 +32384,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32013,7 +32439,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32067,7 +32494,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32121,7 +32549,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32176,7 +32605,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32231,7 +32661,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32286,7 +32717,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32341,7 +32773,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32396,7 +32829,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32451,7 +32885,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32506,7 +32941,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32561,7 +32997,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32616,7 +33053,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32671,7 +33109,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32726,7 +33165,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32781,7 +33221,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32835,7 +33276,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32889,7 +33331,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32943,7 +33386,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -32997,7 +33441,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33051,7 +33496,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33105,7 +33551,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33159,7 +33606,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33213,7 +33661,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33267,7 +33716,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33321,7 +33771,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33375,7 +33826,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33429,7 +33881,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33484,7 +33937,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33539,7 +33993,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33594,7 +34049,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33649,7 +34105,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33704,7 +34161,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33758,7 +34216,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33811,7 +34270,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33864,7 +34324,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33917,7 +34378,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -33970,7 +34432,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34023,7 +34486,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34076,7 +34540,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34129,7 +34594,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34183,7 +34649,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34237,7 +34704,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34291,7 +34759,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34345,7 +34814,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34399,7 +34869,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34453,7 +34924,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34506,7 +34978,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34559,7 +35032,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34612,7 +35086,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34665,7 +35140,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34718,7 +35194,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34771,7 +35248,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34825,7 +35303,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34879,7 +35358,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34933,7 +35413,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -34987,7 +35468,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35041,7 +35523,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35095,7 +35578,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35148,7 +35632,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35201,7 +35686,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35254,7 +35740,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35307,7 +35794,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35360,7 +35848,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35413,7 +35902,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35466,7 +35956,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35519,7 +36010,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35572,7 +36064,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35625,7 +36118,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35679,7 +36173,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35733,7 +36228,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35787,7 +36283,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35841,7 +36338,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35895,7 +36393,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -35949,7 +36448,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36002,7 +36502,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36055,7 +36556,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36108,7 +36610,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36161,7 +36664,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36214,7 +36718,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36267,7 +36772,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36320,7 +36826,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36373,7 +36880,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36426,7 +36934,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36479,7 +36988,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36532,7 +37042,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36585,7 +37096,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36638,7 +37150,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36691,7 +37204,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36744,7 +37258,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36797,7 +37312,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36850,7 +37366,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36903,7 +37420,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -36956,7 +37474,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37009,7 +37528,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37062,7 +37582,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37115,7 +37636,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37168,7 +37690,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37221,7 +37744,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37274,7 +37798,8 @@
         },
         "name": "net_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37327,7 +37852,8 @@
         },
         "name": "net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37380,7 +37906,8 @@
         },
         "name": "services_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37433,7 +37960,8 @@
         },
         "name": "services_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37486,7 +38014,8 @@
         },
         "name": "skia_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37539,7 +38068,8 @@
         },
         "name": "skia_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37592,7 +38122,8 @@
         },
         "name": "skia_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37645,7 +38176,8 @@
         },
         "name": "skia_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37698,7 +38230,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37751,7 +38284,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37804,7 +38338,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37857,7 +38392,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37910,7 +38446,8 @@
         },
         "name": "sql_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37963,7 +38500,8 @@
         },
         "name": "sql_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38016,7 +38554,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38069,7 +38608,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38122,7 +38662,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38175,7 +38716,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38228,7 +38770,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38281,7 +38824,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38334,7 +38878,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38387,7 +38932,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38440,7 +38986,8 @@
         },
         "name": "url_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38493,7 +39040,8 @@
         },
         "name": "url_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38547,7 +39095,8 @@
         },
         "name": "cronet_test_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38601,7 +39150,8 @@
         },
         "name": "absl_hardening_tests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38651,7 +39201,8 @@
         },
         "name": "base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38701,7 +39252,8 @@
         },
         "name": "boringssl_crypto_tests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38751,7 +39303,8 @@
         },
         "name": "boringssl_ssl_tests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38801,7 +39354,8 @@
         },
         "name": "components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38851,7 +39405,8 @@
         },
         "name": "crypto_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38901,7 +39456,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -38951,7 +39507,8 @@
         },
         "name": "google_apis_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39002,7 +39559,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39053,7 +39611,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39105,7 +39664,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39157,7 +39717,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39208,7 +39769,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39259,7 +39821,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39310,7 +39873,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39361,7 +39925,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39411,7 +39976,8 @@
         },
         "name": "ios_components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39461,7 +40027,8 @@
         },
         "name": "ios_net_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39511,7 +40078,8 @@
         },
         "name": "ios_remoting_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39562,7 +40130,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39612,7 +40181,8 @@
         },
         "name": "ios_testing_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39662,7 +40232,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39713,7 +40284,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39763,7 +40335,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39813,7 +40386,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39863,7 +40437,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39913,7 +40488,8 @@
         },
         "name": "net_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -39963,7 +40539,8 @@
         },
         "name": "services_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40013,7 +40590,8 @@
         },
         "name": "skia_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40063,7 +40641,8 @@
         },
         "name": "sql_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40113,7 +40692,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40163,7 +40743,8 @@
         },
         "name": "url_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40219,7 +40800,8 @@
         },
         "name": "absl_hardening_tests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40271,7 +40853,8 @@
         },
         "name": "absl_hardening_tests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40323,7 +40906,8 @@
         },
         "name": "base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40375,7 +40959,8 @@
         },
         "name": "base_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40427,7 +41012,8 @@
         },
         "name": "boringssl_crypto_tests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40479,7 +41065,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40531,7 +41118,8 @@
         },
         "name": "boringssl_ssl_tests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40583,7 +41171,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40635,7 +41224,8 @@
         },
         "name": "components_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40687,7 +41277,8 @@
         },
         "name": "components_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40739,7 +41330,8 @@
         },
         "name": "crypto_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40791,7 +41383,8 @@
         },
         "name": "crypto_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40843,7 +41436,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40895,7 +41489,8 @@
         },
         "name": "gfx_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40947,7 +41542,8 @@
         },
         "name": "google_apis_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -40999,7 +41595,8 @@
         },
         "name": "google_apis_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41052,7 +41649,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41105,7 +41703,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41158,7 +41757,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41212,7 +41812,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41266,7 +41867,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41320,7 +41922,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41374,7 +41977,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41427,7 +42031,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41480,7 +42085,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41533,7 +42139,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41586,7 +42193,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41640,7 +42248,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41693,7 +42302,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41745,7 +42355,8 @@
         },
         "name": "ios_chrome_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41798,7 +42409,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41851,7 +42463,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41903,7 +42516,8 @@
         },
         "name": "ios_components_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -41955,7 +42569,8 @@
         },
         "name": "ios_components_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42007,7 +42622,8 @@
         },
         "name": "ios_net_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42059,7 +42675,8 @@
         },
         "name": "ios_net_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42111,7 +42728,8 @@
         },
         "name": "ios_remoting_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42163,7 +42781,8 @@
         },
         "name": "ios_remoting_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42216,7 +42835,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42269,7 +42889,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42321,7 +42942,8 @@
         },
         "name": "ios_testing_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42373,7 +42995,8 @@
         },
         "name": "ios_testing_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42425,7 +43048,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42477,7 +43101,8 @@
         },
         "name": "ios_web_inttests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42530,7 +43155,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42583,7 +43209,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42635,7 +43262,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42687,7 +43315,8 @@
         },
         "name": "ios_web_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42739,7 +43368,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42791,7 +43421,8 @@
         },
         "name": "ios_web_view_inttests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42843,7 +43474,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42895,7 +43527,8 @@
         },
         "name": "ios_web_view_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42947,7 +43580,8 @@
         },
         "name": "net_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -42999,7 +43633,8 @@
         },
         "name": "net_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43051,7 +43686,8 @@
         },
         "name": "services_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43103,7 +43739,8 @@
         },
         "name": "services_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43155,7 +43792,8 @@
         },
         "name": "skia_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43207,7 +43845,8 @@
         },
         "name": "skia_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43259,7 +43898,8 @@
         },
         "name": "sql_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43311,7 +43951,8 @@
         },
         "name": "sql_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43363,7 +44004,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43415,7 +44057,8 @@
         },
         "name": "ui_base_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43467,7 +44110,8 @@
         },
         "name": "url_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43519,7 +44163,8 @@
         },
         "name": "url_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43576,7 +44221,8 @@
         },
         "name": "absl_hardening_tests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43626,7 +44272,8 @@
         },
         "name": "base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43676,7 +44323,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43726,7 +44374,8 @@
         },
         "name": "base_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43776,7 +44425,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43826,7 +44476,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43876,7 +44527,8 @@
         },
         "name": "components_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43926,7 +44578,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -43976,7 +44629,8 @@
         },
         "name": "components_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44026,7 +44680,8 @@
         },
         "name": "crypto_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44076,7 +44731,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44126,7 +44782,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44176,7 +44833,8 @@
         },
         "name": "gfx_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44226,7 +44884,8 @@
         },
         "name": "google_apis_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44277,7 +44936,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44328,7 +44988,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air (3rd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44379,7 +45040,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44430,7 +45092,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44481,7 +45144,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44533,7 +45197,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44585,7 +45250,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44637,7 +45303,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44689,7 +45356,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44741,7 +45409,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air (3rd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44793,7 +45462,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44845,7 +45515,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44897,7 +45568,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44948,7 +45620,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -44999,7 +45672,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45050,7 +45724,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45101,7 +45776,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45152,7 +45828,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air (3rd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45203,7 +45880,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45254,7 +45932,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45305,7 +45984,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45357,7 +46037,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45409,7 +46090,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45461,7 +46143,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45512,7 +46195,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45562,7 +46246,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45612,7 +46297,8 @@
         },
         "name": "ios_chrome_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45663,7 +46349,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45714,7 +46401,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air (3rd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45765,7 +46453,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45816,7 +46505,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45866,7 +46556,8 @@
         },
         "name": "ios_components_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45916,7 +46607,8 @@
         },
         "name": "ios_net_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -45966,7 +46658,8 @@
         },
         "name": "ios_remoting_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46017,7 +46710,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46068,7 +46762,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air (3rd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46119,7 +46814,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46170,7 +46866,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46220,7 +46917,8 @@
         },
         "name": "ios_testing_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46270,7 +46968,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46320,7 +47019,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46370,7 +47070,8 @@
         },
         "name": "ios_web_inttests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46421,7 +47122,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad (6th generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46472,7 +47174,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46523,7 +47226,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46574,7 +47278,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46624,7 +47329,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46674,7 +47380,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46724,7 +47431,8 @@
         },
         "name": "ios_web_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46774,7 +47482,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46824,7 +47533,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46874,7 +47584,8 @@
         },
         "name": "ios_web_view_inttests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46924,7 +47635,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -46974,7 +47686,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47024,7 +47737,8 @@
         },
         "name": "ios_web_view_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47074,7 +47788,8 @@
         },
         "name": "net_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47124,7 +47839,8 @@
         },
         "name": "services_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47174,7 +47890,8 @@
         },
         "name": "skia_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47224,7 +47941,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47274,7 +47992,8 @@
         },
         "name": "skia_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47324,7 +48043,8 @@
         },
         "name": "sql_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47374,7 +48094,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47424,7 +48145,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47474,7 +48196,8 @@
         },
         "name": "ui_base_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47524,7 +48247,8 @@
         },
         "name": "url_unittests_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47581,7 +48305,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47631,7 +48356,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47681,7 +48407,8 @@
         },
         "name": "base_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47731,7 +48458,8 @@
         },
         "name": "base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47781,7 +48509,8 @@
         },
         "name": "base_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47831,7 +48560,8 @@
         },
         "name": "base_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47881,7 +48611,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47931,7 +48662,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -47981,7 +48713,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48031,7 +48764,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48081,7 +48815,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48131,7 +48866,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48181,7 +48917,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48231,7 +48968,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48281,7 +49019,8 @@
         },
         "name": "components_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48331,7 +49070,8 @@
         },
         "name": "components_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48381,7 +49121,8 @@
         },
         "name": "components_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48431,7 +49172,8 @@
         },
         "name": "components_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48481,7 +49223,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48531,7 +49274,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48581,7 +49325,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48631,7 +49376,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48681,7 +49427,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48731,7 +49478,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48781,7 +49529,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48831,7 +49580,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48881,7 +49631,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48931,7 +49682,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -48981,7 +49733,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49031,7 +49784,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49081,7 +49835,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49131,7 +49886,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49181,7 +49937,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49231,7 +49988,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49282,7 +50040,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49333,7 +50092,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49384,7 +50144,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49435,7 +50196,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49486,7 +50248,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49537,7 +50300,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49588,7 +50352,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49640,7 +50405,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49692,7 +50458,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49744,7 +50511,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49796,7 +50564,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49848,7 +50617,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49900,7 +50670,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -49952,7 +50723,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50004,7 +50776,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50056,7 +50829,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50108,7 +50882,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50160,7 +50935,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50212,7 +50988,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50263,7 +51040,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50314,7 +51092,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50365,7 +51144,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50416,7 +51196,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50467,7 +51248,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50518,7 +51300,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50569,7 +51352,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50620,7 +51404,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50671,7 +51456,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50722,7 +51508,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50773,7 +51560,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50824,7 +51612,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50876,7 +51665,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50928,7 +51718,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -50980,7 +51771,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51032,7 +51824,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51084,7 +51877,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51135,7 +51929,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51185,7 +51980,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51235,7 +52031,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51285,7 +52082,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51335,7 +52133,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51385,7 +52184,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51435,7 +52235,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51485,7 +52286,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51536,7 +52338,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51587,7 +52390,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51638,7 +52442,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51689,7 +52494,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51740,7 +52546,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51791,7 +52598,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51841,7 +52649,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51891,7 +52700,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51941,7 +52751,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -51991,7 +52802,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52041,7 +52853,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52091,7 +52904,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52142,7 +52956,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52193,7 +53008,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52244,7 +53060,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52295,7 +53112,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52346,7 +53164,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52397,7 +53216,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52447,7 +53267,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52497,7 +53318,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52547,7 +53369,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52597,7 +53420,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52647,7 +53471,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52697,7 +53522,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52747,7 +53573,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52797,7 +53624,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52847,7 +53675,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52897,7 +53726,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52948,7 +53778,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52999,7 +53830,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53050,7 +53882,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Pro (12.9-inch) (2nd generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53101,7 +53934,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53152,7 +53986,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53203,7 +54038,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53253,7 +54089,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53303,7 +54140,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53353,7 +54191,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53403,7 +54242,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53453,7 +54293,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53503,7 +54344,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53553,7 +54395,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53603,7 +54446,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53653,7 +54497,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53703,7 +54548,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53753,7 +54599,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53803,7 +54650,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53853,7 +54701,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53903,7 +54752,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -53953,7 +54803,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54003,7 +54854,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54053,7 +54905,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54103,7 +54956,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54153,7 +55007,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54203,7 +55058,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54253,7 +55109,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54303,7 +55160,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54353,7 +55211,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54403,7 +55262,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54453,7 +55313,8 @@
         },
         "name": "net_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54503,7 +55364,8 @@
         },
         "name": "net_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54553,7 +55415,8 @@
         },
         "name": "services_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54603,7 +55466,8 @@
         },
         "name": "services_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54653,7 +55517,8 @@
         },
         "name": "skia_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54703,7 +55568,8 @@
         },
         "name": "skia_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54753,7 +55619,8 @@
         },
         "name": "skia_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54803,7 +55670,8 @@
         },
         "name": "skia_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54853,7 +55721,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54903,7 +55772,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -54953,7 +55823,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55003,7 +55874,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55053,7 +55925,8 @@
         },
         "name": "sql_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55103,7 +55976,8 @@
         },
         "name": "sql_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55153,7 +56027,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55203,7 +56078,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55253,7 +56129,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55303,7 +56180,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55353,7 +56231,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55403,7 +56282,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55453,7 +56333,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55503,7 +56384,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55553,7 +56435,8 @@
         },
         "name": "url_unittests_iPhone 6s 13.6",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55603,7 +56486,8 @@
         },
         "name": "url_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55660,7 +56544,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55710,7 +56595,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55760,7 +56646,8 @@
         },
         "name": "base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55810,7 +56697,8 @@
         },
         "name": "base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55860,7 +56748,8 @@
         },
         "name": "base_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55910,7 +56799,8 @@
         },
         "name": "base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -55960,7 +56850,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56010,7 +56901,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56060,7 +56952,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56110,7 +57003,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56160,7 +57054,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56210,7 +57105,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56260,7 +57156,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56310,7 +57207,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56360,7 +57258,8 @@
         },
         "name": "components_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56410,7 +57309,8 @@
         },
         "name": "components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56460,7 +57360,8 @@
         },
         "name": "components_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56510,7 +57411,8 @@
         },
         "name": "components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56560,7 +57462,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56610,7 +57513,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56660,7 +57564,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56710,7 +57615,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56760,7 +57666,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56810,7 +57717,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56860,7 +57768,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56910,7 +57819,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -56960,7 +57870,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57010,7 +57921,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57060,7 +57972,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57110,7 +58023,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57160,7 +58074,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57210,7 +58125,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57260,7 +58176,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57310,7 +58227,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57361,7 +58279,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57412,7 +58331,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57463,7 +58383,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57514,7 +58435,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57565,7 +58487,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57616,7 +58539,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57667,7 +58591,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57719,7 +58644,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57771,7 +58697,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57823,7 +58750,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57875,7 +58803,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57927,7 +58856,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -57979,7 +58909,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58031,7 +58962,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58083,7 +59015,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58135,7 +59068,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58187,7 +59121,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58239,7 +59174,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58291,7 +59227,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58342,7 +59279,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58393,7 +59331,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58444,7 +59383,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58495,7 +59435,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58546,7 +59487,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58597,7 +59539,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58648,7 +59591,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58699,7 +59643,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58750,7 +59695,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58801,7 +59747,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58852,7 +59799,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58903,7 +59851,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -58955,7 +59904,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59007,7 +59957,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59059,7 +60010,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59111,7 +60063,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59163,7 +60116,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59214,7 +60168,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59264,7 +60219,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59314,7 +60270,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59364,7 +60321,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59414,7 +60372,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59464,7 +60423,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59514,7 +60474,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59564,7 +60525,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59615,7 +60577,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59666,7 +60629,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59717,7 +60681,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59768,7 +60733,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59819,7 +60785,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59870,7 +60837,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59920,7 +60888,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59970,7 +60939,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60020,7 +60990,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60070,7 +61041,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60120,7 +61092,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60170,7 +61143,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60221,7 +61195,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60272,7 +61247,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60323,7 +61299,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60374,7 +61351,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60425,7 +61403,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60476,7 +61455,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60526,7 +61506,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60576,7 +61557,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60626,7 +61608,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60676,7 +61659,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60726,7 +61710,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60776,7 +61761,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60826,7 +61812,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60876,7 +61863,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60926,7 +61914,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -60976,7 +61965,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61027,7 +62017,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61078,7 +62069,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61129,7 +62121,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61180,7 +62173,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61231,7 +62225,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61282,7 +62277,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61332,7 +62328,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61382,7 +62379,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61432,7 +62430,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61482,7 +62481,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61532,7 +62532,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61582,7 +62583,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61632,7 +62634,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61682,7 +62685,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61732,7 +62736,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61782,7 +62787,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61832,7 +62838,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61882,7 +62889,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61932,7 +62940,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -61982,7 +62991,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62032,7 +63042,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62082,7 +63093,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62132,7 +63144,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62182,7 +63195,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62232,7 +63246,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62282,7 +63297,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62332,7 +63348,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62382,7 +63399,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62432,7 +63450,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62482,7 +63501,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62532,7 +63552,8 @@
         },
         "name": "net_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62582,7 +63603,8 @@
         },
         "name": "net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62632,7 +63654,8 @@
         },
         "name": "services_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62682,7 +63705,8 @@
         },
         "name": "services_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62732,7 +63756,8 @@
         },
         "name": "skia_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62782,7 +63807,8 @@
         },
         "name": "skia_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62832,7 +63858,8 @@
         },
         "name": "skia_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62882,7 +63909,8 @@
         },
         "name": "skia_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62932,7 +63960,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -62982,7 +64011,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63032,7 +64062,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63082,7 +64113,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63132,7 +64164,8 @@
         },
         "name": "sql_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63182,7 +64215,8 @@
         },
         "name": "sql_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63232,7 +64266,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63282,7 +64317,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63332,7 +64368,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63382,7 +64419,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63432,7 +64470,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63482,7 +64521,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63532,7 +64572,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63582,7 +64623,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63632,7 +64674,8 @@
         },
         "name": "url_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63682,7 +64725,8 @@
         },
         "name": "url_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63744,7 +64788,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63794,7 +64839,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63844,7 +64890,8 @@
         },
         "name": "base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63894,7 +64941,8 @@
         },
         "name": "base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63944,7 +64992,8 @@
         },
         "name": "base_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -63994,7 +65043,8 @@
         },
         "name": "base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64044,7 +65094,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64094,7 +65145,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64144,7 +65196,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64194,7 +65247,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64244,7 +65298,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64294,7 +65349,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64344,7 +65400,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64394,7 +65451,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64444,7 +65502,8 @@
         },
         "name": "components_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64494,7 +65553,8 @@
         },
         "name": "components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64544,7 +65604,8 @@
         },
         "name": "components_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64594,7 +65655,8 @@
         },
         "name": "components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64644,7 +65706,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64694,7 +65757,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64744,7 +65808,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64794,7 +65859,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64844,7 +65910,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64894,7 +65961,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64944,7 +66012,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -64994,7 +66063,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65044,7 +66114,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65094,7 +66165,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65144,7 +66216,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65194,7 +66267,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65244,7 +66318,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65294,7 +66369,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65344,7 +66420,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65394,7 +66471,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65445,7 +66523,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65496,7 +66575,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65547,7 +66627,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65598,7 +66679,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65649,7 +66731,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65700,7 +66783,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65751,7 +66835,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65803,7 +66888,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65855,7 +66941,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65907,7 +66994,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -65959,7 +67047,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66011,7 +67100,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66063,7 +67153,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66115,7 +67206,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66167,7 +67259,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66219,7 +67312,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66271,7 +67365,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66323,7 +67418,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66375,7 +67471,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66426,7 +67523,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66477,7 +67575,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66528,7 +67627,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66579,7 +67679,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66630,7 +67731,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66681,7 +67783,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66732,7 +67835,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66783,7 +67887,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66834,7 +67939,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66885,7 +67991,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66936,7 +68043,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -66987,7 +68095,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67039,7 +68148,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67091,7 +68201,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67143,7 +68254,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67195,7 +68307,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67247,7 +68360,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67298,7 +68412,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67348,7 +68463,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67398,7 +68514,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67448,7 +68565,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67498,7 +68616,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67548,7 +68667,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67598,7 +68718,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67648,7 +68769,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67699,7 +68821,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67750,7 +68873,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67801,7 +68925,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67852,7 +68977,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67903,7 +69029,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -67954,7 +69081,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68004,7 +69132,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68054,7 +69183,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68104,7 +69234,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68154,7 +69285,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68204,7 +69336,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68254,7 +69387,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68305,7 +69439,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68356,7 +69491,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68407,7 +69543,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68458,7 +69595,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68509,7 +69647,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68560,7 +69699,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68610,7 +69750,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68660,7 +69801,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68710,7 +69852,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68760,7 +69903,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68810,7 +69954,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68860,7 +70005,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68910,7 +70056,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -68960,7 +70107,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69010,7 +70158,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69060,7 +70209,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69111,7 +70261,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69162,7 +70313,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69213,7 +70365,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69264,7 +70417,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69315,7 +70469,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone X 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69366,7 +70521,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69416,7 +70572,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69466,7 +70623,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69516,7 +70674,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69566,7 +70725,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69616,7 +70776,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69666,7 +70827,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69716,7 +70878,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69766,7 +70929,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69816,7 +70980,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69866,7 +71031,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69916,7 +71082,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -69966,7 +71133,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70016,7 +71184,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70066,7 +71235,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70116,7 +71286,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70166,7 +71337,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70216,7 +71388,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70266,7 +71439,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70316,7 +71490,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70366,7 +71541,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70416,7 +71592,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70466,7 +71643,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70516,7 +71694,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70566,7 +71745,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70616,7 +71796,8 @@
         },
         "name": "net_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70666,7 +71847,8 @@
         },
         "name": "net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70716,7 +71898,8 @@
         },
         "name": "services_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70766,7 +71949,8 @@
         },
         "name": "services_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70816,7 +72000,8 @@
         },
         "name": "skia_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70866,7 +72051,8 @@
         },
         "name": "skia_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70916,7 +72102,8 @@
         },
         "name": "skia_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -70966,7 +72153,8 @@
         },
         "name": "skia_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71016,7 +72204,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71066,7 +72255,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71116,7 +72306,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71166,7 +72357,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71216,7 +72408,8 @@
         },
         "name": "sql_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71266,7 +72459,8 @@
         },
         "name": "sql_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71316,7 +72510,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71366,7 +72561,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71416,7 +72612,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71466,7 +72663,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71516,7 +72714,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71566,7 +72765,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71616,7 +72816,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71666,7 +72867,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71716,7 +72918,8 @@
         },
         "name": "url_unittests_iPhone 6s 14.5",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71766,7 +72969,8 @@
         },
         "name": "url_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71825,7 +73029,8 @@
         },
         "name": "aura_unittests_amd64-generic",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71852,7 +73057,8 @@
         },
         "name": "aura_unittests_eve",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71881,7 +73087,8 @@
         },
         "name": "cc_unittests_amd64-generic",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71908,7 +73115,8 @@
         },
         "name": "cc_unittests_eve",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71937,7 +73145,8 @@
         },
         "name": "interactive_ui_tests_amd64-generic",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71964,7 +73173,8 @@
         },
         "name": "interactive_ui_tests_eve",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -71993,7 +73203,8 @@
         },
         "name": "lacros_fyi_tast_tests_amd64-generic",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -72021,7 +73232,8 @@
         },
         "name": "lacros_fyi_tast_tests_eve",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -72051,7 +73263,8 @@
         },
         "name": "ozone_unittests_amd64-generic",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -72078,7 +73291,8 @@
         },
         "name": "ozone_unittests_eve",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -90917,6 +92131,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "isolate_profile_data": true,
         "merge": {
           "args": [],
@@ -92511,6 +93730,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -93887,6 +95111,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -94853,6 +96082,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -96768,6 +98002,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -98355,6 +99594,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "isolate_profile_data": true,
         "merge": {
           "args": [],
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json
index 9f6ce08e..9b896ec 100644
--- a/testing/buildbot/chromium.gpu.fyi.json
+++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -15,7 +15,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -52,7 +53,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -97,7 +99,8 @@
         },
         "name": "webgl_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -302,7 +305,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -336,7 +340,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -372,7 +377,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -408,7 +414,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -605,7 +612,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -639,7 +647,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -675,7 +684,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -711,7 +721,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -744,7 +755,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -783,7 +795,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -829,7 +842,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -875,7 +889,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -929,7 +944,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -972,7 +988,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1015,7 +1032,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1058,7 +1076,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1105,7 +1124,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1157,7 +1177,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1209,7 +1230,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1253,7 +1275,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1296,7 +1319,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1340,7 +1364,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1382,7 +1407,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1421,7 +1447,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1467,7 +1494,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1513,7 +1541,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1567,7 +1596,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1610,7 +1640,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1653,7 +1684,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1696,7 +1728,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1743,7 +1776,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1795,7 +1829,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1847,7 +1882,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1891,7 +1927,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1934,7 +1971,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1978,7 +2016,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2022,7 +2061,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2059,7 +2099,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2121,7 +2162,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2163,7 +2205,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2205,7 +2248,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2247,7 +2291,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2289,7 +2334,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2335,7 +2381,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2386,7 +2433,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2428,7 +2476,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2470,7 +2519,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2521,7 +2571,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2560,7 +2611,8 @@
         },
         "name": "rendering_representative_perf_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2601,7 +2653,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2643,7 +2696,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2685,7 +2739,8 @@
         },
         "name": "webcodecs_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2728,7 +2783,8 @@
         },
         "name": "webgl_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2772,7 +2828,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2813,7 +2870,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2852,7 +2910,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2898,7 +2957,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2944,7 +3004,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -2998,7 +3059,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3041,7 +3103,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3084,7 +3147,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3127,7 +3191,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3174,7 +3239,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3226,7 +3292,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3278,7 +3345,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3322,7 +3390,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3365,7 +3434,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3409,7 +3479,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3451,7 +3522,8 @@
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3490,7 +3562,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3536,7 +3609,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3582,7 +3656,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -3636,7 +3711,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3679,7 +3755,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3722,7 +3799,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3765,7 +3843,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3812,7 +3891,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3864,7 +3944,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3916,7 +3997,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3960,7 +4042,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4003,7 +4086,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4047,7 +4131,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4104,7 +4189,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4148,7 +4234,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4193,7 +4280,8 @@
         },
         "name": "webgl2_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4239,7 +4327,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4296,7 +4385,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4339,7 +4429,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4382,7 +4473,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4425,7 +4517,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4468,7 +4561,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4511,7 +4605,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4558,7 +4653,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4610,7 +4706,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4662,7 +4759,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4705,7 +4803,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4748,7 +4847,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4800,7 +4900,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4852,7 +4953,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4896,7 +4998,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4940,7 +5043,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4983,7 +5087,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5026,7 +5131,8 @@
         },
         "name": "webcodecs_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5071,7 +5177,8 @@
         },
         "name": "webgl2_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5117,7 +5224,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5162,7 +5270,8 @@
         },
         "name": "webgl_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5207,7 +5316,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5264,7 +5374,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5309,7 +5420,8 @@
         },
         "name": "vulkan_content_browsertests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -5373,7 +5485,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5538,7 +5651,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5588,7 +5702,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5638,7 +5753,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5688,7 +5804,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5742,7 +5859,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5801,7 +5919,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5851,7 +5970,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5910,7 +6030,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -5961,7 +6082,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6011,7 +6133,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6109,7 +6232,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6167,7 +6291,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6206,7 +6331,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6245,7 +6371,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6284,7 +6411,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6327,7 +6455,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6375,7 +6504,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6414,7 +6544,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6462,7 +6593,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6502,7 +6634,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6541,7 +6674,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6617,7 +6751,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6716,7 +6851,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6754,7 +6890,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6792,7 +6929,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6830,7 +6968,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6872,7 +7011,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6919,7 +7059,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -6957,7 +7098,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7004,7 +7146,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7043,7 +7186,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7081,7 +7225,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7151,7 +7296,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7336,7 +7482,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7370,7 +7517,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7404,7 +7552,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7438,7 +7587,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7476,7 +7626,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7519,7 +7670,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7562,7 +7714,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7597,7 +7750,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7631,7 +7785,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7666,7 +7821,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7915,7 +8071,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7950,7 +8107,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -7985,7 +8143,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8020,7 +8179,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8059,7 +8219,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8103,7 +8264,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8138,7 +8300,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8182,7 +8345,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8218,7 +8382,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8253,7 +8418,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8290,7 +8456,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8327,7 +8494,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8693,7 +8861,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8728,7 +8897,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8763,7 +8933,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8798,7 +8969,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8837,7 +9009,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8881,7 +9054,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8916,7 +9090,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8960,7 +9135,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -8996,7 +9172,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9031,7 +9208,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9068,7 +9246,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9105,7 +9284,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9531,7 +9711,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9566,7 +9747,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9601,7 +9783,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9636,7 +9819,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9675,7 +9859,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9719,7 +9904,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9754,7 +9940,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9798,7 +9985,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9834,7 +10022,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9869,7 +10058,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9906,7 +10096,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -9943,7 +10134,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10157,7 +10349,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10191,7 +10384,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10225,7 +10419,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10259,7 +10454,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10297,7 +10493,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10340,7 +10537,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10374,7 +10572,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10417,7 +10616,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10452,7 +10652,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10486,7 +10687,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10522,7 +10724,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10558,7 +10761,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10807,7 +11011,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10842,7 +11047,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10877,7 +11083,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10912,7 +11119,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10951,7 +11159,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -10995,7 +11204,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11030,7 +11240,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11074,7 +11285,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11110,7 +11322,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11145,7 +11358,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11182,7 +11396,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11219,7 +11434,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11433,7 +11649,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11467,7 +11684,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11501,7 +11719,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11535,7 +11754,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11573,7 +11793,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11616,7 +11837,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11650,7 +11872,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11693,7 +11916,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11728,7 +11952,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11762,7 +11987,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11798,7 +12024,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11834,7 +12061,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11932,7 +12160,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -11968,7 +12197,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12071,7 +12301,8 @@
         },
         "name": "context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12105,7 +12336,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12139,7 +12371,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12173,7 +12406,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12216,7 +12450,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12251,7 +12486,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12330,7 +12566,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12410,7 +12647,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12513,7 +12751,8 @@
         },
         "name": "context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12547,7 +12786,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12581,7 +12821,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12615,7 +12856,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12658,7 +12900,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12693,7 +12936,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12772,7 +13016,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -12852,7 +13097,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13625,7 +13871,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13660,7 +13907,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13695,7 +13943,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13730,7 +13979,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13769,7 +14019,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13813,7 +14064,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13857,7 +14109,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13893,7 +14146,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13928,7 +14182,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -13964,7 +14219,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14299,7 +14555,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14337,7 +14594,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14375,7 +14633,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14413,7 +14672,8 @@
         },
         "name": "gl_renderer_context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14451,7 +14711,8 @@
         },
         "name": "gl_renderer_depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14489,7 +14750,8 @@
         },
         "name": "gl_renderer_gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14527,7 +14789,8 @@
         },
         "name": "gl_renderer_hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14574,7 +14837,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14621,7 +14885,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14660,7 +14925,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14698,7 +14964,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14736,7 +15003,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14778,7 +15046,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14825,7 +15094,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14872,7 +15142,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14910,7 +15181,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14948,7 +15220,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -14995,7 +15268,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15042,7 +15316,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15110,7 +15385,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15149,7 +15425,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15187,7 +15464,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15227,7 +15505,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15268,7 +15547,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15308,7 +15588,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15348,7 +15629,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15388,7 +15670,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15427,7 +15710,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15842,7 +16126,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15886,7 +16171,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15929,7 +16215,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -15972,7 +16259,8 @@
         },
         "name": "gl_renderer_context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16015,7 +16303,8 @@
         },
         "name": "gl_renderer_depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16058,7 +16347,8 @@
         },
         "name": "gl_renderer_gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16101,7 +16391,8 @@
         },
         "name": "gl_renderer_hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16153,7 +16444,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16205,7 +16497,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16249,7 +16542,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16292,7 +16586,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16335,7 +16630,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16387,7 +16683,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16439,7 +16736,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16482,7 +16780,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16525,7 +16824,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16577,7 +16877,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16629,7 +16930,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16673,7 +16975,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16717,7 +17020,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16760,7 +17064,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16805,7 +17110,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16852,7 +17158,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16897,7 +17204,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16942,7 +17250,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -16987,7 +17296,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17032,7 +17342,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17332,7 +17643,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17367,7 +17679,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17402,7 +17715,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17437,7 +17751,8 @@
         },
         "name": "gl_renderer_context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17472,7 +17787,8 @@
         },
         "name": "gl_renderer_depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17507,7 +17823,8 @@
         },
         "name": "gl_renderer_gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17542,7 +17859,8 @@
         },
         "name": "gl_renderer_hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17586,7 +17904,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17630,7 +17949,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17666,7 +17986,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17701,7 +18022,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17736,7 +18058,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17775,7 +18098,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17819,7 +18143,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17863,7 +18188,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17898,7 +18224,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17933,7 +18260,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -17977,7 +18305,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18021,7 +18350,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18083,7 +18413,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18119,7 +18450,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18154,7 +18486,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18191,7 +18524,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18229,7 +18563,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18266,7 +18601,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18303,7 +18639,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18340,7 +18677,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18376,7 +18714,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18668,7 +19007,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18703,7 +19043,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18738,7 +19079,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18773,7 +19115,8 @@
         },
         "name": "gl_renderer_context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18808,7 +19151,8 @@
         },
         "name": "gl_renderer_depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18843,7 +19187,8 @@
         },
         "name": "gl_renderer_gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18878,7 +19223,8 @@
         },
         "name": "gl_renderer_hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18922,7 +19268,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -18966,7 +19313,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19002,7 +19350,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19037,7 +19386,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19072,7 +19422,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19111,7 +19462,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19155,7 +19507,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19199,7 +19552,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19234,7 +19588,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19269,7 +19624,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19313,7 +19669,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19357,7 +19714,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19419,7 +19777,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19455,7 +19814,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19490,7 +19850,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19527,7 +19888,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19565,7 +19927,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19602,7 +19965,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19639,7 +20003,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19676,7 +20041,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19712,7 +20078,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -19994,7 +20361,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20031,7 +20399,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20068,7 +20437,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20105,7 +20475,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20146,7 +20517,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20192,7 +20564,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20238,7 +20611,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20276,7 +20650,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20313,7 +20688,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20351,7 +20727,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20635,7 +21012,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20672,7 +21050,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20709,7 +21088,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20746,7 +21126,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20787,7 +21168,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20833,7 +21215,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20879,7 +21262,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20917,7 +21301,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -20954,7 +21339,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21267,7 +21653,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21304,7 +21691,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21341,7 +21729,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21378,7 +21767,8 @@
         },
         "name": "gl_renderer_context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21415,7 +21805,8 @@
         },
         "name": "gl_renderer_depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21452,7 +21843,8 @@
         },
         "name": "gl_renderer_gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21489,7 +21881,8 @@
         },
         "name": "gl_renderer_hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21535,7 +21928,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21581,7 +21975,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21619,7 +22014,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21656,7 +22052,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21693,7 +22090,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21734,7 +22132,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21780,7 +22179,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21826,7 +22226,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21863,7 +22264,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21900,7 +22302,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21946,7 +22349,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -21992,7 +22396,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22058,7 +22463,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22096,7 +22502,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22133,7 +22540,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22172,7 +22580,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22212,7 +22621,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22251,7 +22661,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22290,7 +22701,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22329,7 +22741,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22367,7 +22780,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22681,7 +23095,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22718,7 +23133,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22755,7 +23171,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22792,7 +23209,8 @@
         },
         "name": "gl_renderer_context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22829,7 +23247,8 @@
         },
         "name": "gl_renderer_depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22866,7 +23285,8 @@
         },
         "name": "gl_renderer_gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22903,7 +23323,8 @@
         },
         "name": "gl_renderer_hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22949,7 +23370,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -22995,7 +23417,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23033,7 +23456,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23070,7 +23494,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23107,7 +23532,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23148,7 +23574,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23194,7 +23621,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23240,7 +23668,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23277,7 +23706,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23314,7 +23744,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23360,7 +23791,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23406,7 +23838,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23444,7 +23877,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23482,7 +23916,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23519,7 +23954,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23558,7 +23994,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23597,7 +24034,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23636,7 +24074,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23674,7 +24113,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -23968,7 +24408,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24003,7 +24444,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24038,7 +24480,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24073,7 +24516,8 @@
         },
         "name": "gl_renderer_context_lost_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24108,7 +24552,8 @@
         },
         "name": "gl_renderer_depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24143,7 +24588,8 @@
         },
         "name": "gl_renderer_gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24178,7 +24624,8 @@
         },
         "name": "gl_renderer_hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24222,7 +24669,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24266,7 +24714,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24302,7 +24751,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24337,7 +24787,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24372,7 +24823,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24411,7 +24863,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24455,7 +24908,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24499,7 +24953,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24534,7 +24989,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24569,7 +25025,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24613,7 +25070,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24657,7 +25115,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24719,7 +25178,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24755,7 +25215,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24790,7 +25251,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24827,7 +25289,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24865,7 +25328,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24902,7 +25366,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24939,7 +25404,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -24976,7 +25442,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25012,7 +25479,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25274,7 +25742,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25311,7 +25780,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25348,7 +25818,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25385,7 +25856,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25422,7 +25894,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25463,7 +25936,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25509,7 +25983,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25555,7 +26030,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25601,7 +26077,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25647,7 +26124,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25685,7 +26163,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25723,7 +26202,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25760,7 +26240,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25799,7 +26280,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25838,7 +26320,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25890,7 +26373,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25933,7 +26417,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -25976,7 +26461,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26019,7 +26505,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26062,7 +26549,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26105,7 +26593,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26152,7 +26641,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26204,7 +26694,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26256,7 +26747,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26299,7 +26791,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26342,7 +26835,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26394,7 +26888,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26446,7 +26941,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26490,7 +26986,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26534,7 +27031,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26577,7 +27075,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26620,7 +27119,8 @@
         },
         "name": "webcodecs_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26665,7 +27165,8 @@
         },
         "name": "webgl2_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26711,7 +27212,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26756,7 +27258,8 @@
         },
         "name": "webgl_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26801,7 +27304,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26951,7 +27455,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -26985,7 +27490,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27019,7 +27525,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27086,7 +27593,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27122,7 +27630,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27263,7 +27772,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27297,7 +27807,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27331,7 +27842,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27398,7 +27910,8 @@
         },
         "name": "webgl2_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27434,7 +27947,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27594,7 +28108,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27629,7 +28144,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27664,7 +28180,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27699,7 +28216,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27738,7 +28256,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27782,7 +28301,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27817,7 +28337,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27852,7 +28373,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27896,7 +28418,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27932,7 +28455,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -27967,7 +28491,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28036,7 +28561,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28073,7 +28599,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28110,7 +28637,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28147,7 +28675,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28317,7 +28846,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28354,7 +28884,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28391,7 +28922,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28428,7 +28960,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28469,7 +29002,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28515,7 +29049,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28552,7 +29087,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28589,7 +29125,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28635,7 +29172,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28673,7 +29211,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28710,7 +29249,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28783,7 +29323,8 @@
         },
         "name": "webgl2_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28822,7 +29363,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28861,7 +29403,8 @@
         },
         "name": "webgl_conformance_metal_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -28900,7 +29443,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29076,7 +29620,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29113,7 +29658,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29150,7 +29696,8 @@
         },
         "name": "mediapipe_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29187,7 +29734,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29462,7 +30010,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29496,7 +30045,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29530,7 +30080,8 @@
         },
         "name": "power_measurement_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29564,7 +30115,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29631,7 +30183,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29667,7 +30220,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29703,7 +30257,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29739,7 +30294,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -29774,7 +30330,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30009,7 +30566,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30043,7 +30601,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30108,7 +30667,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30175,7 +30735,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30211,7 +30772,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30247,7 +30809,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30282,7 +30845,8 @@
         },
         "name": "webgl_conformance_fast_call_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30318,7 +30882,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30353,7 +30918,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30777,7 +31343,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30811,7 +31378,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30845,7 +31413,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30879,7 +31448,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30917,7 +31487,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -30960,7 +31531,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31003,7 +31575,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31038,7 +31611,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31072,7 +31646,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31107,7 +31682,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31143,7 +31719,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31179,7 +31756,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31214,7 +31792,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31611,7 +32190,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31646,7 +32226,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31681,7 +32262,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31716,7 +32298,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31757,7 +32340,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31801,7 +32385,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31836,7 +32421,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31880,7 +32466,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31915,7 +32502,8 @@
         },
         "name": "power_measurement_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -31978,7 +32566,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32013,7 +32602,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32082,7 +32672,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32119,7 +32710,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32156,7 +32748,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32193,7 +32786,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32229,7 +32823,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32625,7 +33220,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32660,7 +33256,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32695,7 +33292,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32730,7 +33328,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32769,7 +33368,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32813,7 +33413,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32889,7 +33490,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32952,7 +33554,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -32987,7 +33590,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33024,7 +33628,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33061,7 +33666,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33098,7 +33704,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33134,7 +33741,8 @@
         },
         "name": "webgl_conformance_fast_call_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33171,7 +33779,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33207,7 +33816,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33603,7 +34213,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33638,7 +34249,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33673,7 +34285,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33708,7 +34321,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33747,7 +34361,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33791,7 +34406,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33826,7 +34442,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33870,7 +34487,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33933,7 +34551,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -33968,7 +34587,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34037,7 +34657,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34074,7 +34695,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34111,7 +34733,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34147,7 +34770,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34531,7 +35155,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34565,7 +35190,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34599,7 +35225,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34633,7 +35260,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34673,7 +35301,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34716,7 +35345,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34750,7 +35380,8 @@
         },
         "name": "mediapipe_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34793,7 +35424,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34827,7 +35459,8 @@
         },
         "name": "power_measurement_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34888,7 +35521,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34922,7 +35556,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -34989,7 +35624,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35025,7 +35661,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35061,7 +35698,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35097,7 +35735,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35132,7 +35771,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35527,7 +36167,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35562,7 +36203,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35597,7 +36239,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35632,7 +36275,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35671,7 +36315,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35715,7 +36360,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35759,7 +36405,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35795,7 +36442,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35830,7 +36478,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35867,7 +36516,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35904,7 +36554,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35941,7 +36592,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -35977,7 +36629,8 @@
         },
         "name": "webgl_conformance_fast_call_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36014,7 +36667,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36050,7 +36704,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36432,7 +37087,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36466,7 +37122,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36500,7 +37157,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36534,7 +37192,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36572,7 +37231,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36615,7 +37275,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36689,7 +37350,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36750,7 +37412,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36784,7 +37447,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36820,7 +37484,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36856,7 +37521,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36892,7 +37558,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36927,7 +37594,8 @@
         },
         "name": "webgl_conformance_fast_call_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36963,7 +37631,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -36998,7 +37667,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37120,7 +37790,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37156,7 +37827,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37536,7 +38208,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37570,7 +38243,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37604,7 +38278,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37638,7 +38313,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37676,7 +38352,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37719,7 +38396,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37793,7 +38471,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37853,7 +38532,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37887,7 +38567,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37923,7 +38604,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37959,7 +38641,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -37995,7 +38678,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38030,7 +38714,8 @@
         },
         "name": "webgl_conformance_fast_call_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38066,7 +38751,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38101,7 +38787,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38448,7 +39135,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38483,7 +39171,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38518,7 +39207,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38553,7 +39243,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38592,7 +39283,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38636,7 +39328,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38680,7 +39373,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38716,7 +39410,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38751,7 +39446,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38820,7 +39516,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38857,7 +39554,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38894,7 +39592,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -38930,7 +39629,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39277,7 +39977,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39312,7 +40013,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39347,7 +40049,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39382,7 +40085,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39421,7 +40125,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39465,7 +40170,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39509,7 +40215,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39545,7 +40252,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39580,7 +40288,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39649,7 +40358,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39686,7 +40396,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39723,7 +40434,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39760,7 +40472,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -39796,7 +40509,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40143,7 +40857,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40178,7 +40893,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40213,7 +40929,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40248,7 +40965,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40287,7 +41005,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40331,7 +41050,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40375,7 +41095,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40411,7 +41132,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40446,7 +41168,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40515,7 +41238,8 @@
         },
         "name": "webgl2_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40552,7 +41276,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40589,7 +41314,8 @@
         },
         "name": "webgl_conformance_d3d9_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40626,7 +41352,8 @@
         },
         "name": "webgl_conformance_gl_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -40662,7 +41389,8 @@
         },
         "name": "webgl_conformance_vulkan_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
diff --git a/testing/buildbot/chromium.gpu.json b/testing/buildbot/chromium.gpu.json
index 4fc5c02..6070d74 100644
--- a/testing/buildbot/chromium.gpu.json
+++ b/testing/buildbot/chromium.gpu.json
@@ -19,7 +19,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -61,7 +62,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -103,7 +105,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -145,7 +148,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -191,7 +195,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -242,7 +247,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -293,7 +299,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -371,7 +378,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -413,7 +421,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -456,7 +465,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -585,7 +595,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -619,7 +630,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -654,7 +666,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -688,7 +701,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -722,7 +736,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -760,7 +775,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -803,7 +819,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -846,7 +863,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -881,7 +899,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -915,7 +934,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -950,7 +970,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1067,7 +1088,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1101,7 +1123,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1136,7 +1159,8 @@
         },
         "name": "gl_renderer_screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1170,7 +1194,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1204,7 +1229,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1242,7 +1268,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1285,7 +1312,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1328,7 +1356,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1363,7 +1392,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1397,7 +1427,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1432,7 +1463,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1576,7 +1608,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1611,7 +1644,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1646,7 +1680,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1681,7 +1716,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1720,7 +1756,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1764,7 +1801,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1808,7 +1846,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1844,7 +1883,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1879,7 +1919,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1915,7 +1956,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2088,7 +2130,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2123,7 +2166,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2158,7 +2202,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2193,7 +2238,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2232,7 +2278,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2276,7 +2323,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2320,7 +2368,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2382,7 +2431,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2417,7 +2467,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2453,7 +2504,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2606,7 +2658,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2643,7 +2696,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2680,7 +2734,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2717,7 +2772,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2758,7 +2814,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2804,7 +2861,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2850,7 +2908,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2888,7 +2947,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2925,7 +2985,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2963,7 +3024,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3148,7 +3210,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3185,7 +3248,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3222,7 +3286,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3259,7 +3324,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3300,7 +3366,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3346,7 +3413,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3392,7 +3460,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3458,7 +3527,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3495,7 +3565,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3533,7 +3604,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3702,7 +3774,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3736,7 +3809,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3770,7 +3844,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3804,7 +3879,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3842,7 +3918,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3885,7 +3962,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3928,7 +4006,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3963,7 +4042,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -3997,7 +4077,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4032,7 +4113,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4198,7 +4280,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4232,7 +4315,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4266,7 +4350,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4300,7 +4385,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4338,7 +4424,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4381,7 +4468,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4424,7 +4512,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4485,7 +4574,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4519,7 +4609,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4554,7 +4645,8 @@
         },
         "name": "webgl_conformance_d3d11_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json
index bf14e26..7a01081 100644
--- a/testing/buildbot/chromium.linux.json
+++ b/testing/buildbot/chromium.linux.json
@@ -4720,7 +4720,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4752,7 +4753,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4784,7 +4786,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4816,7 +4819,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4852,7 +4856,8 @@
         },
         "name": "info_collection_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4890,7 +4895,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4922,7 +4928,8 @@
         },
         "name": "screenshot_sync_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4954,7 +4961,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -4986,7 +4994,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json
index e291986..dc4ff10 100644
--- a/testing/buildbot/chromium.mac.json
+++ b/testing/buildbot/chromium.mac.json
@@ -1341,6 +1341,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -3057,6 +3062,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -3217,6 +3227,36 @@
       },
       {
         "args": [
+          "--num-retries=3"
+        ],
+        "isolate_name": "blink_web_tests",
+        "merge": {
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
+        },
+        "name": "blink_web_tests",
+        "resultdb": {
+          "enable": true
+        },
+        "results_handler": "layout tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "gpu": "8086:0a2e",
+              "os": "Mac-10.12.6"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 25
+        },
+        "test_id_prefix": "ninja://:blink_web_tests/"
+      },
+      {
+        "args": [
           "--test-type=integration"
         ],
         "isolate_name": "chromedriver_py_tests",
@@ -4765,6 +4805,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -6508,6 +6553,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -8333,6 +8383,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "isolate_profile_data": true,
         "merge": {
           "args": [],
@@ -10113,6 +10168,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -11779,6 +11839,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -12269,7 +12334,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12320,7 +12386,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12371,7 +12438,8 @@
         },
         "name": "base_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12422,7 +12490,8 @@
         },
         "name": "base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12473,7 +12542,8 @@
         },
         "name": "base_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12524,7 +12594,8 @@
         },
         "name": "base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12575,7 +12646,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12626,7 +12698,8 @@
         },
         "name": "base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12677,7 +12750,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12728,7 +12802,8 @@
         },
         "name": "base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12779,7 +12854,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12830,7 +12906,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12881,7 +12958,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12932,7 +13010,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -12983,7 +13062,8 @@
         },
         "name": "components_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13034,7 +13114,8 @@
         },
         "name": "components_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13085,7 +13166,8 @@
         },
         "name": "components_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13136,7 +13218,8 @@
         },
         "name": "components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13187,7 +13270,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13238,7 +13322,8 @@
         },
         "name": "components_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13289,7 +13374,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13340,7 +13426,8 @@
         },
         "name": "components_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13391,7 +13478,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13442,7 +13530,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13493,7 +13582,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13544,7 +13634,8 @@
         },
         "name": "gfx_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13595,7 +13686,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13646,7 +13738,8 @@
         },
         "name": "gfx_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13697,7 +13790,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13748,7 +13842,8 @@
         },
         "name": "gfx_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13799,7 +13894,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13850,7 +13946,8 @@
         },
         "name": "gfx_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13901,7 +13998,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13952,7 +14050,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14004,7 +14103,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14057,7 +14157,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14110,7 +14211,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14162,7 +14264,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14214,7 +14317,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14267,7 +14371,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14319,7 +14424,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14370,7 +14476,8 @@
         },
         "name": "ios_chrome_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14421,7 +14528,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14472,7 +14580,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14523,7 +14632,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14574,7 +14684,8 @@
         },
         "name": "ios_chrome_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14625,7 +14736,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14676,7 +14788,8 @@
         },
         "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14727,7 +14840,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14778,7 +14892,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14829,7 +14944,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14880,7 +14996,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14931,7 +15048,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14982,7 +15100,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15033,7 +15152,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15084,7 +15204,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15135,7 +15256,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15186,7 +15308,8 @@
         },
         "name": "ios_web_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15237,7 +15360,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15288,7 +15412,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15339,7 +15464,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15390,7 +15516,8 @@
         },
         "name": "ios_web_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15441,7 +15568,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15492,7 +15620,8 @@
         },
         "name": "ios_web_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15544,7 +15673,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15596,7 +15726,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15647,7 +15778,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15698,7 +15830,8 @@
         },
         "name": "ios_web_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15749,7 +15882,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15800,7 +15934,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15851,7 +15986,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15902,7 +16038,8 @@
         },
         "name": "ios_web_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15953,7 +16090,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16004,7 +16142,8 @@
         },
         "name": "ios_web_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16055,7 +16194,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16106,7 +16246,8 @@
         },
         "name": "ios_web_view_inttests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16157,7 +16298,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16208,7 +16350,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16259,7 +16402,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16310,7 +16454,8 @@
         },
         "name": "ios_web_view_inttests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16361,7 +16506,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16412,7 +16558,8 @@
         },
         "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16463,7 +16610,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16514,7 +16662,8 @@
         },
         "name": "ios_web_view_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16565,7 +16714,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16616,7 +16766,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16667,7 +16818,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16718,7 +16870,8 @@
         },
         "name": "ios_web_view_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16769,7 +16922,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16820,7 +16974,8 @@
         },
         "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16871,7 +17026,8 @@
         },
         "name": "net_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16922,7 +17078,8 @@
         },
         "name": "net_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -16973,7 +17130,8 @@
         },
         "name": "services_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17024,7 +17182,8 @@
         },
         "name": "services_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17075,7 +17234,8 @@
         },
         "name": "skia_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17126,7 +17286,8 @@
         },
         "name": "skia_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17177,7 +17338,8 @@
         },
         "name": "skia_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17228,7 +17390,8 @@
         },
         "name": "skia_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17279,7 +17442,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17330,7 +17494,8 @@
         },
         "name": "skia_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17381,7 +17546,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17432,7 +17598,8 @@
         },
         "name": "skia_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17483,7 +17650,8 @@
         },
         "name": "sql_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17534,7 +17702,8 @@
         },
         "name": "sql_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17585,7 +17754,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17636,7 +17806,8 @@
         },
         "name": "ui_base_unittests_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17687,7 +17858,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17738,7 +17910,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17789,7 +17962,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17840,7 +18014,8 @@
         },
         "name": "ui_base_unittests_iPhone 6s Plus 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17891,7 +18066,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17942,7 +18118,8 @@
         },
         "name": "ui_base_unittests_iPhone SE (1st generation) 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -17993,7 +18170,8 @@
         },
         "name": "url_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18044,7 +18222,8 @@
         },
         "name": "url_unittests_iPhone 6s 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18103,7 +18282,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18155,7 +18335,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18207,7 +18388,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18259,7 +18441,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18311,7 +18494,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18363,7 +18547,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18415,7 +18600,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18468,7 +18654,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18521,7 +18708,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18574,7 +18762,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18627,7 +18816,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18680,7 +18870,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18733,7 +18924,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18786,7 +18978,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18839,7 +19032,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18892,7 +19086,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18945,7 +19140,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18997,7 +19193,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19049,7 +19246,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19101,7 +19299,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19153,7 +19352,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19205,7 +19405,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19257,7 +19458,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19309,7 +19511,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19361,7 +19564,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19413,7 +19617,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19465,7 +19670,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19518,7 +19724,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19571,7 +19778,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19624,7 +19832,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19677,7 +19886,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19729,7 +19939,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19781,7 +19992,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19833,7 +20045,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19885,7 +20098,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19937,7 +20151,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19989,7 +20204,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20041,7 +20257,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20093,7 +20310,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20145,7 +20363,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20197,7 +20416,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20249,7 +20469,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone X 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20301,7 +20522,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20353,7 +20575,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20405,7 +20628,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20457,7 +20681,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 7 15.0",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20514,7 +20739,8 @@
         },
         "name": "absl_hardening_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20564,7 +20790,8 @@
         },
         "name": "boringssl_crypto_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20614,7 +20841,8 @@
         },
         "name": "boringssl_ssl_tests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20664,7 +20892,8 @@
         },
         "name": "crypto_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20714,7 +20943,8 @@
         },
         "name": "google_apis_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20765,7 +20995,8 @@
         },
         "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20816,7 +21047,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20868,7 +21100,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20920,7 +21153,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20972,7 +21206,8 @@
         },
         "name": "ios_chrome_integration_eg2tests_module_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21024,7 +21259,8 @@
         },
         "name": "ios_chrome_settings_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21076,7 +21312,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21127,7 +21364,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21178,7 +21416,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21229,7 +21468,8 @@
         },
         "name": "ios_chrome_signin_eg2tests_module_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21280,7 +21520,8 @@
         },
         "name": "ios_chrome_smoke_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21331,7 +21572,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21383,7 +21625,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21435,7 +21678,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21487,7 +21731,8 @@
         },
         "name": "ios_chrome_ui_eg2tests_module_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21539,7 +21784,8 @@
         },
         "name": "ios_chrome_web_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21589,7 +21835,8 @@
         },
         "name": "ios_components_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21639,7 +21886,8 @@
         },
         "name": "ios_net_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21689,7 +21937,8 @@
         },
         "name": "ios_remoting_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21740,7 +21989,8 @@
         },
         "name": "ios_showcase_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21790,7 +22040,8 @@
         },
         "name": "ios_testing_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21841,7 +22092,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21892,7 +22144,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21943,7 +22196,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone 6s Plus 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21994,7 +22248,8 @@
         },
         "name": "ios_web_shell_eg2tests_module_iPhone SE (1st generation) 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22044,7 +22299,8 @@
         },
         "name": "net_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22094,7 +22350,8 @@
         },
         "name": "services_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22144,7 +22401,8 @@
         },
         "name": "sql_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -22194,7 +22452,8 @@
         },
         "name": "url_unittests_iPhone 6s 14.4",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -23506,6 +23765,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index 1351d24..a26580f 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -12794,6 +12794,9 @@
       },
       {
         "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000",
           "--test-launcher-print-test-stdio=always"
         ],
         "merge": {
@@ -13076,7 +13079,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13125,7 +13129,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13175,7 +13180,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13224,7 +13230,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13273,7 +13280,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13322,7 +13330,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13371,7 +13380,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13420,7 +13430,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13469,7 +13480,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13519,7 +13531,8 @@
         },
         "name": "webkit_unit_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13569,7 +13582,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13618,7 +13632,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13668,7 +13683,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13718,7 +13734,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13767,7 +13784,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13816,7 +13834,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13865,7 +13884,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13914,7 +13934,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -13963,7 +13984,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14014,7 +14036,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14064,7 +14087,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14114,7 +14138,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14163,7 +14188,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14212,7 +14238,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14261,7 +14288,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14310,7 +14338,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14359,7 +14388,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14408,7 +14438,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14457,7 +14488,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14508,7 +14540,8 @@
         },
         "name": "gl_tests_validating",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14557,7 +14590,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14606,7 +14640,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14655,7 +14690,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14704,7 +14740,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14753,7 +14790,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14803,7 +14841,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14852,7 +14891,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14901,7 +14941,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14950,7 +14991,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -14999,7 +15041,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15048,7 +15091,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15097,7 +15141,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15146,7 +15191,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15196,7 +15242,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15246,7 +15293,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15295,7 +15343,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15344,7 +15393,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15393,7 +15443,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15442,7 +15493,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15491,7 +15543,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15540,7 +15593,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15589,7 +15643,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15639,7 +15694,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15689,7 +15745,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15738,7 +15795,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15787,7 +15845,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15836,7 +15895,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15885,7 +15945,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15934,7 +15995,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -15983,7 +16045,8 @@
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19130,6 +19193,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
diff --git a/testing/buildbot/chromium.swangle.json b/testing/buildbot/chromium.swangle.json
index a86b69a..5cdb7008 100644
--- a/testing/buildbot/chromium.swangle.json
+++ b/testing/buildbot/chromium.swangle.json
@@ -21,7 +21,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -57,7 +58,8 @@
         },
         "name": "webgl_conformance_swiftshader_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1374,7 +1376,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1411,7 +1414,8 @@
         },
         "name": "webgl_conformance_swiftshader_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1452,7 +1456,8 @@
         },
         "name": "webgl_conformance_swangle_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1487,7 +1492,8 @@
         },
         "name": "webgl_conformance_swiftshader_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
diff --git a/testing/buildbot/chromium.updater.json b/testing/buildbot/chromium.updater.json
index 4c00530..93ab6c2c 100644
--- a/testing/buildbot/chromium.updater.json
+++ b/testing/buildbot/chromium.updater.json
@@ -4,6 +4,11 @@
   "mac-arm64-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -27,6 +32,11 @@
   "mac-arm64-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -50,6 +60,11 @@
   "mac10.11-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -73,6 +88,11 @@
   "mac10.11-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -96,6 +116,11 @@
   "mac10.12-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -119,6 +144,11 @@
   "mac10.12-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -142,6 +172,11 @@
   "mac10.13-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -165,6 +200,11 @@
   "mac10.13-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -188,6 +228,11 @@
   "mac10.14-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -211,6 +256,11 @@
   "mac10.14-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -234,6 +284,11 @@
   "mac10.15-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -257,6 +312,11 @@
   "mac10.15-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -276,6 +336,11 @@
         "test_id_prefix": "ninja://chrome/updater:updater_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -299,6 +364,11 @@
   "mac11.0-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -322,6 +392,11 @@
   "mac11.0-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -345,6 +420,11 @@
   "win10-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -365,9 +445,42 @@
       }
     ]
   },
+  "win10-updater-tester-dbg-uac": {
+    "gtest_tests": [
+      {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-18363",
+              "pool": "chromium.win.uac"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "updater_tests",
+        "test_id_prefix": "ninja://chrome/updater:updater_tests/"
+      }
+    ]
+  },
   "win10-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -391,6 +504,11 @@
   "win7(32)-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -414,6 +532,11 @@
   "win7(32)-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -437,6 +560,11 @@
   "win7-updater-tester-dbg": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -460,6 +588,11 @@
   "win7-updater-tester-rel": {
     "gtest_tests": [
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json
index b53fb1f1..03ff06bf 100644
--- a/testing/buildbot/chromium.win.json
+++ b/testing/buildbot/chromium.win.json
@@ -1105,6 +1105,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -3289,6 +3294,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "isolate_profile_data": true,
         "merge": {
           "args": [],
@@ -5494,6 +5504,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -7123,6 +7138,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -8627,6 +8647,11 @@
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
       },
       {
+        "args": [
+          "--test-launcher-timeout=90000",
+          "--ui-test-action-max-timeout=45000",
+          "--ui-test-action-timeout=40000"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
diff --git a/testing/buildbot/client.v8.fyi.json b/testing/buildbot/client.v8.fyi.json
index 07b6b8cb..84e4a40 100644
--- a/testing/buildbot/client.v8.fyi.json
+++ b/testing/buildbot/client.v8.fyi.json
@@ -19,7 +19,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -60,7 +61,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -101,7 +103,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -142,7 +145,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -192,7 +196,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -242,7 +247,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -284,7 +290,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -325,7 +332,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -367,7 +375,8 @@
         },
         "name": "webgl_conformance_gles_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -410,7 +419,8 @@
         },
         "name": "webgl_conformance_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -463,7 +473,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -496,7 +507,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -529,7 +541,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -562,7 +575,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -604,7 +618,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -646,7 +661,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -680,7 +696,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -713,7 +730,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -748,7 +766,8 @@
         },
         "name": "webgl2_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -783,7 +802,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -821,7 +841,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -854,7 +875,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -887,7 +909,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -920,7 +943,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -962,7 +986,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1004,7 +1029,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1038,7 +1064,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1071,7 +1098,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1106,7 +1134,8 @@
         },
         "name": "webgl2_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1141,7 +1170,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1179,7 +1209,8 @@
         },
         "name": "context_lost_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1213,7 +1244,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1247,7 +1279,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1281,7 +1314,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1324,7 +1358,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1367,7 +1402,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1402,7 +1438,8 @@
         },
         "name": "screenshot_sync_validating_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1436,7 +1473,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1472,7 +1510,8 @@
         },
         "name": "webgl2_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1508,7 +1547,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1868,7 +1908,8 @@
         },
         "name": "context_lost_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1901,7 +1942,8 @@
         },
         "name": "depth_capture_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1934,7 +1976,8 @@
         },
         "name": "gpu_process_launch_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -1967,7 +2010,8 @@
         },
         "name": "hardware_accelerated_feature_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2009,7 +2053,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2051,7 +2096,8 @@
           "--buildbucket-id=${buildbucket_build_id}"
         ],
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2085,7 +2131,8 @@
         },
         "name": "screenshot_sync_passthrough_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2118,7 +2165,8 @@
         },
         "name": "trace_test",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2153,7 +2201,8 @@
         },
         "name": "webgl2_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
@@ -2188,7 +2237,8 @@
         },
         "name": "webgl_conformance_tests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "should_retry_with_patch": false,
         "swarming": {
diff --git a/testing/buildbot/filters/BUILD.gn b/testing/buildbot/filters/BUILD.gn
index b26e559..a07cfd3 100644
--- a/testing/buildbot/filters/BUILD.gn
+++ b/testing/buildbot/filters/BUILD.gn
@@ -224,6 +224,7 @@
 source_set("net_unittests_filters") {
   data = [
     "//testing/buildbot/filters/android.emulator.net_unittests.filter",
+    "//testing/buildbot/filters/android.emulator_10.net_unittests.filter",
     "//testing/buildbot/filters/android.emulator_11.net_unittests.filter",
   ]
 }
diff --git a/testing/buildbot/filters/android.emulator_10.net_unittests.filter b/testing/buildbot/filters/android.emulator_10.net_unittests.filter
new file mode 100644
index 0000000..4cd573672
--- /dev/null
+++ b/testing/buildbot/filters/android.emulator_10.net_unittests.filter
@@ -0,0 +1,5 @@
+# crbug.com/1191793
+-MimeUtilTest.ExtensionTest
+
+# crbug.com/1191795
+-All/CertVerifyProcInternalWithNetFetchingTest.Sha1IntermediateButAIAHasSha256/CertVerifyProcAndroid
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index f8e2dd5..0619139 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -372,11 +372,6 @@
       },
     },
   },
-  'enable_resultdb': {
-    'resultdb': {
-      'enable': True,
-    },
-  },
   'femu-additional-ram': {
     '$mixin_append': {
       'args': [
@@ -455,6 +450,9 @@
   'has_native_resultdb_integration': {
     'resultdb': {
       'enable': True,
+      # TODO(crbug.com/1163797): Remove the 'enable' field in favor of
+      # 'has_native_resultdb_integration'.
+      'has_native_resultdb_integration': True,
     },
   },
   'intel_iris_5100': {
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 2382231..16891b4 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -223,7 +223,6 @@
     'remove_from': [
       'mac-arm64-rel-tests', # TODO(https://crbug.com/1169240): Enable
       'Mac10.11 Tests',
-      'Mac10.12 Tests',
       'Win 7 Tests x64 (1)',  # 64-bit win is unsupported by the layout tests.
       'Win10 Tests x64 (dbg)',
     ],
@@ -249,6 +248,11 @@
           'shards': 30,
         },
       },
+      'Mac10.12 Tests': {
+        'swarming': {
+          'shards': 25,
+        },
+      },
       'Mac10.13 Tests': {
         'swarming': {
           'dimension_sets': [
@@ -2188,6 +2192,11 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_11.net_unittests.filter',
         ],
       },
+      'android-cronet-x86-dbg-10-tests': {
+        'args': [
+          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_10.net_unittests.filter',
+        ],
+      },
       'android-marshmallow-x86-rel-non-cq': {
         # crbug.com/1046060
         'args': [
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 12be872..9e89c110 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -3976,12 +3976,8 @@
         # TODO(crbug.com/816629) - Move these args into //BUILD.gn.
         'name': 'webgpu_blink_web_tests_with_backend_validation',
         'args': [
-          # Disable parallel jobs to work around consistent test timeout flakes.
-          # Also, the first test is always flaky due to startup time, so force
-          # the order so we can suppress it.
-          # TODO(crbug.com/953991): Solve this and remove the workaround.
-          '--jobs=1',
-          '--order=natural',
+          # crbug.com/953991 Ensure WebGPU is ready before running tests
+          '--initialize-webgpu-adapter-at-startup',
           '--additional-driver-flag=--enable-dawn-backend-validation',
           # Make Dawn allow "Unsafe APIs" so they can be tested with the WebGPU CTS.
           '--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis',
@@ -4013,6 +4009,9 @@
         'resultdb': {
           'enable': True,
         },
+        'swarming': {
+          'shards': 4,
+        },
       },
     },
 
@@ -4021,12 +4020,8 @@
         # TODO(crbug.com/816629) - Move these args into //BUILD.gn.
         'name': 'webgpu_blink_web_tests',
         'args': [
-          # Disable parallel jobs to work around consistent test timeout flakes.
-          # Also, the first test is always flaky due to startup time, so force
-          # the order so we can suppress it.
-          # TODO(crbug.com/953991): Solve this and remove the workaround.
-          '--jobs=1',
-          '--order=natural',
+          # crbug.com/953991 Ensure WebGPU is ready before running tests
+          '--initialize-webgpu-adapter-at-startup',
           # Make Dawn allow "Unsafe APIs" so they can be tested with the WebGPU CTS.
           '--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis',
           # We need this flag to initialize ANGLE so that we can explicitly tell
@@ -4055,6 +4050,9 @@
         'resultdb': {
           'enable': True,
         },
+        'swarming': {
+          'shards': 4,
+        },
       },
     },
 
@@ -4065,12 +4063,8 @@
         # TODO(crbug.com/816629) - Move these args into //BUILD.gn.
         'name': 'webgpu_blink_web_tests_with_backend_validation',
         'args': [
-          # Disable parallel jobs to work around consistent test timeout flakes.
-          # Also, the first test is always flaky due to startup time, so force
-          # the order so we can suppress it.
-          # TODO(crbug.com/953991): Solve this and remove the workaround.
-          '--jobs=1',
-          '--order=natural',
+          # crbug.com/953991 Ensure WebGPU is ready before running tests
+          '--initialize-webgpu-adapter-at-startup',
           '--additional-driver-flag=--enable-dawn-backend-validation=partial',
           # Make Dawn allow "Unsafe APIs" so they can be tested with the WebGPU CTS.
           '--additional-driver-flag=--disable-dawn-features=disallow_unsafe_apis',
@@ -4102,6 +4096,9 @@
         'resultdb': {
           'enable': True,
         },
+        'swarming': {
+          'shards': 4,
+        },
       },
     },
 
@@ -4488,7 +4485,14 @@
 
     'mac_specific_chromium_gtests': {
       'sandbox_mac_unittests': {},
-      'updater_tests': {},
+      'updater_tests': {
+        'args': [
+          # Timeouts based on empirical observations of test runtimes, 2021-07.
+          '--test-launcher-timeout=90000',
+          '--ui-test-action-max-timeout=45000',
+          '--ui-test-action-timeout=40000',
+        ],
+      },
       'xr_browser_tests': {
         'test': 'xr_browser_tests',
       },
@@ -5144,11 +5148,24 @@
     },
 
     'updater_gtests': {
-      'updater_tests': {},
+      'updater_tests': {
+        'args': [
+          # Timeouts based on empirical observations of test runtimes, 2021-07.
+          '--test-launcher-timeout=90000',
+          '--ui-test-action-max-timeout=45000',
+          '--ui-test-action-timeout=40000',
+        ],
+      },
     },
 
     'updater_system_gtests': {
       'updater_tests_system': {
+        'args': [
+          # Timeouts based on empirical observations of test runtimes, 2021-07.
+          '--test-launcher-timeout=90000',
+          '--ui-test-action-max-timeout=45000',
+          '--ui-test-action-timeout=40000',
+        ],
         'swarming': {
           'dimension_sets': [
             {
@@ -5523,7 +5540,14 @@
           ],
         },
       },
-      'updater_tests': {},
+      'updater_tests': {
+        'args': [
+          # Timeouts based on empirical observations of test runtimes, 2021-07.
+          '--test-launcher-timeout=90000',
+          '--ui-test-action-max-timeout=45000',
+          '--ui-test-action-timeout=40000',
+        ],
+      },
       'zucchini_unittests': {},
     },
 
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index fbb2f2a3..b3caf64 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -319,7 +319,7 @@
           'gtest_tests': 'webview_bot_system_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -341,7 +341,7 @@
           'gtest_tests': 'webview_bot_system_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -362,7 +362,7 @@
           'gtest_tests': 'webview_bot_all_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -381,7 +381,7 @@
       },
       'Android WebView O (dbg)': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'oreo_fleet',
           'walleye',
         ],
@@ -396,7 +396,7 @@
       },
       'Android WebView P (dbg)': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -445,7 +445,7 @@
           'gtest_tests': 'android_lollipop_marshmallow_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -465,7 +465,7 @@
           'gtest_tests': 'android_lollipop_marshmallow_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -481,7 +481,7 @@
       },
       'Marshmallow 64 bit Tester': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
         ],
@@ -495,7 +495,7 @@
           'gtest_tests': 'android_lollipop_marshmallow_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -514,7 +514,7 @@
           'gtest_tests': 'android_nougat_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -544,7 +544,7 @@
           'gtest_tests': 'android_oreo_gtests',
         },
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
         ],
       },
       'android-10-arm64-rel': {
@@ -564,7 +564,7 @@
         'use_swarming': True,
         'os_type': 'android',
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
       },
       'android-arm64-proguard-rel': {
@@ -572,7 +572,7 @@
           'all',
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
         ],
@@ -585,7 +585,7 @@
       },
       'android-bfcache-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'lollipop',
           'hammerhead',
         ],
@@ -596,7 +596,7 @@
       },
       'android-cronet-arm-dbg': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'lollipop',
           'hammerhead',
         ],
@@ -620,7 +620,7 @@
       },
       'android-cronet-arm-rel-kitkat-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'kitkat',
           'hammerhead',
         ],
@@ -631,7 +631,7 @@
       },
       'android-cronet-arm-rel-lollipop-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'lollipop',
           'hammerhead',
         ],
@@ -674,7 +674,7 @@
       },
       'android-cronet-arm64-rel-marshmallow-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
         ],
@@ -685,7 +685,7 @@
       },
       'android-cronet-asan-arm-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'bullhead',
           'marshmallow',
         ],
@@ -700,7 +700,7 @@
       },
       'android-cronet-marshmallow-arm64-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
         ],
@@ -746,7 +746,7 @@
           'gtest_tests': 'android_incremental_tests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -761,7 +761,7 @@
       },
       'android-lollipop-arm-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'hammerhead',
           'lollipop',
         ],
@@ -778,7 +778,7 @@
       },
       'android-marshmallow-arm64-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'bullhead',
           'isolate_profile_data',
           'marshmallow',
@@ -796,7 +796,7 @@
       },
       'android-marshmallow-x86-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow-x86-emulator',
           'emulator-4-cores',
           'linux-xenial-or-bionic',
@@ -810,7 +810,7 @@
       },
       'android-marshmallow-x86-rel-non-cq': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow-x86-emulator',
           'emulator-4-cores',
           'linux-xenial-or-bionic',
@@ -824,7 +824,7 @@
       },
       'android-nougat-arm64-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'nougat',
           'sailfish',
         ],
@@ -840,7 +840,7 @@
       },
       'android-pie-arm64-coverage-experimental-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'isolate_profile_data',
           'pie_fleet',
           'walleye',
@@ -859,7 +859,7 @@
       },
       'android-pie-arm64-dbg': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -870,7 +870,7 @@
       },
       'android-pie-arm64-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -890,7 +890,7 @@
       },
       'android-pie-x86-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie-x86-emulator',
           'emulator-4-cores',
           'linux-xenial-or-bionic',
@@ -903,7 +903,7 @@
       },
       'android-weblayer-marshmallow-x86-rel-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow-x86-emulator',
           'emulator-4-cores',
           'linux-xenial-or-bionic',
@@ -916,7 +916,7 @@
       },
       'android-weblayer-oreo-x86-rel-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'oreo-x86-emulator',
           'emulator-4-cores',
           'linux-xenial-or-bionic',
@@ -929,7 +929,7 @@
       },
       'android-weblayer-pie-x86-rel-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie-x86-emulator',
           'emulator-4-cores',
           'linux-xenial-or-bionic',
@@ -953,7 +953,7 @@
       },
       'Android WebView P FYI (rel)': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -972,7 +972,7 @@
         'mixins': [
           '11-x86-emulator',
           'emulator-4-cores',
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'linux-xenial-or-bionic',
           'x86-64',
         ],
@@ -985,7 +985,7 @@
         'mixins': [
           '12-x64-emulator',
           'emulator-4-cores',
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'linux-xenial-or-bionic',
           'x86-64',
         ],
@@ -996,7 +996,7 @@
       },
       'android-cronet-x86-dbg-10-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           '10-x86-emulator',
         ],
         'test_suites': {
@@ -1006,7 +1006,7 @@
       },
       'android-pie-arm64-wpt-rel-non-cq': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -1018,7 +1018,7 @@
       },
       'android-web-platform-pie-x86-fyi-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie-x86-emulator',
           'emulator-8-cores',
           'linux-xenial-or-bionic',
@@ -1032,7 +1032,7 @@
       },
       'android-weblayer-10-x86-rel-tests': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           '10-x86-emulator',
           'emulator-4-cores',
           'linux-xenial-or-bionic',
@@ -1045,7 +1045,7 @@
       },
       'android-weblayer-pie-x86-wpt-fyi-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie-x86-emulator',
           'emulator-8-cores',
           'linux-xenial-or-bionic',
@@ -1059,7 +1059,7 @@
       },
       'android-weblayer-pie-x86-wpt-smoketest': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie-x86-emulator',
           'emulator-8-cores',
           'linux-xenial-or-bionic',
@@ -1073,7 +1073,7 @@
       },
       'android-webview-pie-x86-wpt-fyi-rel': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie-x86-emulator',
           'emulator-8-cores',
           'linux-xenial-or-bionic',
@@ -1099,7 +1099,7 @@
       'android-angle-arm64-nexus5x': {
         'os_type': 'android',
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
         ],
@@ -1112,7 +1112,7 @@
         'browser_config': 'android-chromium',
         'os_type': 'android',
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
         ],
@@ -1131,7 +1131,7 @@
         'os_type': 'mac',
         'mixins': [
           'mac_mini_intel_gpu_stable',
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'isolate_profile_data',
           'mac_toolchain',
           'out_dir_arg',
@@ -1554,7 +1554,7 @@
       },
       'ToTAndroid': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'lollipop',
           'hammerhead',
         ],
@@ -1609,7 +1609,7 @@
           'junit_tests': 'chromium_android_asan_junit_tests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
         'swarming': {
           'dimension_sets': [
@@ -1972,7 +1972,7 @@
           'all'
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -2004,7 +2004,7 @@
           'url_unittests'
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'ios_restart_device',
           'limited_capacity_bot',
           'mac_10.15',
@@ -2252,7 +2252,7 @@
         'mixins': [
           'lollipop',
           'hammerhead',
-          'enable_resultdb',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
            'gtest_tests': 'chromium_swarm_android_gtests',
@@ -2264,7 +2264,7 @@
       },
       'android-marshmallow-arm64-rel-swarming': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
            'gtest_tests': 'chromium_swarm_android_gtests',
@@ -2557,7 +2557,7 @@
           'gtest_tests': 'site_isolation_android_fyi_gtests',
         },
         'mixins': [
-          'enable_resultdb'
+          'has_native_resultdb_integration'
         ],
       },
       'TSAN Debug (reclient)': {
@@ -2607,7 +2607,7 @@
       },
       'VR Linux': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'linux-bionic',
         ],
         'additional_compile_targets': [
@@ -2619,7 +2619,7 @@
       },
       'VR Linux (reclient)': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'linux-bionic',
         ],
         'additional_compile_targets': [
@@ -2700,7 +2700,7 @@
           'gtest_tests': 'chromium_android_gtests',
         },
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -2711,7 +2711,7 @@
           'gtest_tests': 'chromium_android_gtests',
         },
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -2719,7 +2719,7 @@
       },
       'android-code-coverage': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'bullhead',
           'isolate_profile_data',
           'marshmallow',
@@ -2732,7 +2732,7 @@
       },
       'android-code-coverage-native': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'isolate_profile_data',
           'pie_fleet',
           'walleye',
@@ -2758,6 +2758,17 @@
           'isolated_scripts': 'chromeos_isolated_scripts',
         },
       },
+      # TODO(crbug.com/1235218): remove after the migration.
+      'chromeos-amd64-generic-rel (reclient compare)': {
+        'additional_compile_targets': [
+          'chromiumos_preflight',
+        ],
+        'browser_config': 'cros-chrome',
+        'mixins': [
+          'chromeos-amd64-generic',
+        ],
+        'os_type': 'chromeos',
+      },
       'chromeos-amd64-generic-rel (reclient)': {
         'additional_compile_targets': [
           'chromiumos_preflight',
@@ -2886,7 +2897,7 @@
       },
       'ios-asan': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -2899,7 +2910,7 @@
       },
       'ios-simulator-code-coverage': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'ios_output_disabled_tests',
           'isolate_profile_data',
           'mac_11_x64',
@@ -2914,7 +2925,7 @@
       },
       'ios-simulator-cronet': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -2927,7 +2938,7 @@
       },
       'ios-simulator-multi-window': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -2940,7 +2951,7 @@
       },
       'ios-webkit-tot': {
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'ios_custom_webkit',
           'mac_11_x64',
           'mac_toolchain',
@@ -2959,7 +2970,7 @@
           'all',
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -2977,7 +2988,7 @@
           'all',
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_arm64',
           'mac_toolchain',
           'out_dir_arg',
@@ -2993,7 +3004,7 @@
           'all',
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -3014,7 +3025,7 @@
           'all',
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -3042,7 +3053,7 @@
           'chrome',
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
           'gtest_tests': 'lacros_device_or_vm_tests_fyi',
@@ -3907,7 +3918,7 @@
         'mixins': [
           'marshmallow',
           'bullhead',
-          'enable_resultdb',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
           'gtest_tests': 'gpu_angle_gtests',
@@ -3942,7 +3953,7 @@
         'os_type': 'android',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'foster',
           'gpu-swarming-pool',
           'nougat_generic',
@@ -3957,7 +3968,7 @@
         'os_type': 'android',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'gpu-swarming-pool',
           'hammerhead',
           'lollipop_generic',
@@ -3972,7 +3983,7 @@
         'os_type': 'android',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
         ],
@@ -3988,7 +3999,7 @@
         'os_type': 'android',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'gpu-swarming-pool',
           'lollipop_generic',
           'shamu',
@@ -4003,7 +4014,7 @@
         'os_type': 'android',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'flounder',
           'gpu-swarming-pool',
           'marshmallow_generic',
@@ -4018,7 +4029,7 @@
         'os_type': 'android',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -4034,7 +4045,7 @@
         'skip_merge_script': True,
         'mixins': [
           'android_r',
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'flame',
           'gpu-swarming-pool',
         ],
@@ -4048,7 +4059,7 @@
         'browser_config': 'android-chromium',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'marshmallow',
           'bullhead',
        ],
@@ -4061,7 +4072,7 @@
         'browser_config': 'android-chromium',
         'skip_merge_script': True,
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'pie_fleet',
           'walleye',
         ],
@@ -4489,7 +4500,7 @@
         'skip_merge_script': True,
         'mixins': [
           'android_r',
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'flame',
           'gpu-swarming-pool',
         ],
@@ -5117,7 +5128,7 @@
           'all',
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'isolate_profile_data',
           'mac_11_x64',
           'mac_toolchain',
@@ -5134,7 +5145,7 @@
           'all'
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'isolate_profile_data',
           'mac_11_x64',
           'mac_toolchain',
@@ -5151,7 +5162,7 @@
           'all'
         ],
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
@@ -5303,7 +5314,7 @@
           'gtest_tests': 'chromium_android_gtests',
         },
         'mixins': [
-          'enable_resultdb',
+          'has_native_resultdb_integration',
           'bullhead',
           'marshmallow',
         ],
@@ -5752,6 +5763,22 @@
           ]
         },
       },
+      'win10-updater-tester-dbg-uac': {
+        'mixins': [
+          'win10',
+          'x86-64',
+        ],
+        'test_suites': {
+          'gtest_tests': 'updater_gtests',
+        },
+        'swarming': {
+          'dimension_sets': [
+            {
+              'pool': 'chromium.win.uac',
+            }
+          ]
+        },
+      },
       'win10-updater-tester-rel': {
         'mixins': [
           'win10',
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 2469504..dbd0808 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -7396,6 +7396,25 @@
             ]
         }
     ],
+    "SafeBrowsingCTDownloadWarning": [
+        {
+            "platforms": [
+                "chromeos",
+                "chromeos_lacros",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "SafeBrowsingCTDownloadWarning"
+                    ]
+                }
+            ]
+        }
+    ],
     "SafeBrowsingCsdComponentVersion25": [
         {
             "platforms": [
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index 542c2f249..c207537 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -2635,6 +2635,16 @@
       # The container node for the given node, or null if not found.
       optional NodeId nodeId
 
+  # Returns the descendants of a container query container that have
+  # container queries against this container.
+  experimental command getQueryingDescendantsForContainer
+    parameters
+      # Id of the container node to find querying descendants from.
+      NodeId nodeId
+    returns
+      # Descendant nodes with container queries against the given container.
+      array of NodeId nodeIds
+
   # Fired when `Element`'s attribute is modified.
   event attributeModified
     parameters
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc b/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc
index 244e576..8240b4c4 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc
@@ -6,6 +6,7 @@
 
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
+#include "third_party/blink/public/mojom/loader/code_cache.mojom.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
@@ -16,6 +17,9 @@
 #include "third_party/blink/renderer/core/fetch/fetch_data_loader.h"
 #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/workers/worker_backing_thread.h"
+#include "third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h"
+#include "third_party/blink/renderer/core/workers/worker_thread.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h"
@@ -24,6 +28,8 @@
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
 #include "third_party/blink/renderer/platform/loader/fetch/cached_metadata.h"
 #include "third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h"
+#include "third_party/blink/renderer/platform/scheduler/public/thread.h"
+#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 
 namespace blink {
 
@@ -204,18 +210,34 @@
   DISALLOW_COPY_AND_ASSIGN(ExceptionToAbortStreamingScope);
 };
 
+void SendCachedData(String response_url,
+                    base::Time response_time,
+                    blink::mojom::CodeCacheHost* code_cache_host,
+                    Vector<uint8_t> serialized_module) {
+  scoped_refptr<CachedMetadata> cached_metadata =
+      CachedMetadata::CreateFromSerializedData(std::move(serialized_module));
+
+  base::span<const uint8_t> serialized_data = cached_metadata->SerializedData();
+  CachedMetadataSender::SendToCodeCacheHost(
+      code_cache_host, mojom::blink::CodeCacheType::kWebAssembly, response_url,
+      response_time, serialized_data.data(), serialized_data.size());
+}
+
 class WasmStreamingClient : public v8::WasmStreaming::Client {
  public:
   WasmStreamingClient(const String& response_url,
-                      const base::Time& response_time)
+                      const base::Time& response_time,
+                      scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+                      blink::mojom::CodeCacheHost* code_cache_host)
       : response_url_(response_url.IsolatedCopy()),
-        response_time_(response_time) {}
+        response_time_(response_time),
+        main_thread_task_runner_(std::move(task_runner)),
+        code_cache_host_(code_cache_host) {}
 
   void OnModuleCompiled(v8::CompiledWasmModule compiled_module) override {
     TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"),
                          "v8.wasm.compiledModule", TRACE_EVENT_SCOPE_THREAD,
                          "url", response_url_.Utf8());
-
     v8::MemorySpan<const uint8_t> wire_bytes =
         compiled_module.GetWireBytesRef();
     // Our heuristic for whether it's worthwhile to cache is that the module
@@ -239,28 +261,28 @@
 
     // The resources needed for caching may have been GC'ed, but we should still
     // save the compiled module. Use the platform API directly.
-    scoped_refptr<CachedMetadata> cached_metadata = CachedMetadata::Create(
+    Vector<uint8_t> serialized_data = CachedMetadata::GetSerializedData(
         kWasmModuleTag,
         reinterpret_cast<const uint8_t*>(serialized_module.buffer.get()),
         serialized_module.size);
 
-    base::span<const uint8_t> serialized_data =
-        cached_metadata->SerializedData();
     // Make sure the data could be copied.
     if (serialized_data.size() < serialized_module.size)
       return;
 
-    // TODO(mythria): Also support using context specific code cache host here.
-    // When we pass nullptr for CodeCacheHost we use per-process interface.
-    // Currently this code is run on a thread started via a Platform::PostJob.
-    // So it isn't safe to use CodeCacheHost interface that was bound on the
-    // frame / worker threads. We should instead post a task back to the frame /
-    // worker threads with the required data which can then write to generated
-    // code caches.
-    CachedMetadataSender::SendToCodeCacheHost(
-        /*code_cache_host*/ nullptr, mojom::blink::CodeCacheType::kWebAssembly,
-        response_url_, response_time_, serialized_data.data(),
-        serialized_data.size());
+    // TODO(mythria): Add support for worklets and remove this code that uses
+    // per-process interface.
+    if (!main_thread_task_runner_.get()) {
+      SendCachedData(response_url_, response_time_, nullptr,
+                     std::move(serialized_data));
+      return;
+    }
+
+    main_thread_task_runner_->PostTask(
+        FROM_HERE, ConvertToBaseOnceCallback(WTF::CrossThreadBindOnce(
+                       &SendCachedData, response_url_, response_time_,
+                       WTF::CrossThreadUnretained(code_cache_host_),
+                       std::move(serialized_data))));
   }
 
   void SetBuffer(scoped_refptr<CachedMetadata> cached_module) {
@@ -271,10 +293,31 @@
   String response_url_;
   base::Time response_time_;
   scoped_refptr<CachedMetadata> cached_module_;
+  scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_;
+  blink::mojom::CodeCacheHost* code_cache_host_;
 
   DISALLOW_COPY_AND_ASSIGN(WasmStreamingClient);
 };
 
+scoped_refptr<base::SingleThreadTaskRunner> GetContextTaskRunner(
+    ExecutionContext& execution_context) {
+  if (execution_context.IsWorkerGlobalScope()) {
+    WorkerOrWorkletGlobalScope& global_scope =
+        To<WorkerOrWorkletGlobalScope>(execution_context);
+    return global_scope.GetThread()
+        ->GetWorkerBackingThread()
+        .BackingThread()
+        .GetTaskRunner();
+  }
+
+  if (execution_context.IsWindow()) {
+    return Thread::MainThread()->GetTaskRunner();
+  }
+
+  DCHECK(execution_context.IsWorkletGlobalScope());
+  return nullptr;
+}
+
 void StreamFromResponseCallback(
     const v8::FunctionCallbackInfo<v8::Value>& args) {
   TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"),
@@ -336,8 +379,13 @@
   streaming->SetUrl(url_utf8.c_str(), url_utf8.size());
   if (auto* cache_handler =
           response->BodyBuffer()->GetCachedMetadataHandler()) {
+    auto* execution_context = ExecutionContext::From(script_state);
+    DCHECK_NE(execution_context, nullptr);
+
     auto client = std::make_shared<WasmStreamingClient>(
-        url, response->GetResponse()->InternalResponse()->ResponseTime());
+        url, response->GetResponse()->InternalResponse()->ResponseTime(),
+        GetContextTaskRunner(*execution_context),
+        ExecutionContext::GetCodeCacheHostFromContext(execution_context));
     streaming->SetClient(client);
     scoped_refptr<CachedMetadata> cached_module =
         cache_handler->GetCachedMetadata(kWasmModuleTag);
diff --git a/third_party/blink/renderer/core/animation/css/css_animations.cc b/third_party/blink/renderer/core/animation/css/css_animations.cc
index 1aecd89c..6ae82948 100644
--- a/third_party/blink/renderer/core/animation/css/css_animations.cc
+++ b/third_party/blink/renderer/core/animation/css/css_animations.cc
@@ -1113,24 +1113,14 @@
   // Lazy evaluation of the before change style. We only need to update where
   // we are transitioning from if the final destination is changing.
   if (!state.before_change_style) {
-    ElementAnimations* element_animations =
-        state.animating_element.GetElementAnimations();
-    if (element_animations) {
-      const ComputedStyle* base_style = element_animations->BaseComputedStyle();
-      if (base_style) {
-        state.before_change_style =
-            CalculateBeforeChangeStyle(state.animating_element, *base_style);
-      }
-    }
-    // Use the style from the previous frame if no base style is found.
-    // Elements that have not been animated will not have a base style.
-    // Elements that were previously animated, but where all previously running
-    // animations have stopped may also be missing a base style. In both cases,
-    // the old style is equivalent to the base computed style.
-    if (!state.before_change_style) {
-      state.before_change_style =
-          CalculateBeforeChangeStyle(state.animating_element, state.old_style);
-    }
+    // By calling GetBaseComputedStyleOrThis, we're using the style from the
+    // previous frame if no base style is found. Elements that have not been
+    // animated will not have a base style. Elements that were previously
+    // animated, but where all previously running animations have stopped may
+    // also be missing a base style. In both cases, the old style is equivalent
+    // to the base computed style.
+    state.before_change_style = CalculateBeforeChangeStyle(
+        state.animating_element, *state.old_style.GetBaseComputedStyleOrThis());
   }
 
   if (ComputedValuesEqual(property, *state.before_change_style, state.style)) {
diff --git a/third_party/blink/renderer/core/animation/element_animations.cc b/third_party/blink/renderer/core/animation/element_animations.cc
index fa1b980..7447df77 100644
--- a/third_party/blink/renderer/core/animation/element_animations.cc
+++ b/third_party/blink/renderer/core/animation/element_animations.cc
@@ -124,29 +124,6 @@
   visitor->Trace(worklet_animations_);
 }
 
-const ComputedStyle* ElementAnimations::BaseComputedStyle() const {
-  return base_computed_style_.get();
-}
-
-const CSSBitset* ElementAnimations::BaseImportantSet() const {
-  if (IsAnimationStyleChange())
-    return base_important_set_.get();
-  return nullptr;
-}
-
-void ElementAnimations::UpdateBaseComputedStyle(
-    const ComputedStyle* computed_style,
-    std::unique_ptr<CSSBitset> base_important_set) {
-  DCHECK(computed_style);
-  base_computed_style_ = ComputedStyle::Clone(*computed_style);
-  base_important_set_ = std::move(base_important_set);
-}
-
-void ElementAnimations::ClearBaseComputedStyle() {
-  base_computed_style_ = nullptr;
-  base_important_set_ = nullptr;
-}
-
 bool ElementAnimations::UpdateBoxSizeAndCheckTransformAxisAlignment(
     const FloatSize& box_size) {
   bool preserves_axis_alignment = true;
diff --git a/third_party/blink/renderer/core/animation/element_animations.h b/third_party/blink/renderer/core/animation/element_animations.h
index debe9bc..e6e2cf4 100644
--- a/third_party/blink/renderer/core/animation/element_animations.h
+++ b/third_party/blink/renderer/core/animation/element_animations.h
@@ -83,12 +83,6 @@
   }
   bool IsAnimationStyleChange() const { return animation_style_change_; }
 
-  const ComputedStyle* BaseComputedStyle() const;
-  const CSSBitset* BaseImportantSet() const;
-  void UpdateBaseComputedStyle(const ComputedStyle*,
-                               std::unique_ptr<CSSBitset> base_important_set);
-  void ClearBaseComputedStyle();
-
   bool UpdateBoxSizeAndCheckTransformAxisAlignment(const FloatSize& box_size);
   bool IsIdentityOrTranslation() const;
 
@@ -106,22 +100,9 @@
   // style, we store a cached value of the 'base' computed style (e.g. with no
   // change from the running animations) and use that during style recalc,
   // applying only the animation changes on top of it.
+  //
+  // See also StyleBaseData.
   bool animation_style_change_;
-  scoped_refptr<ComputedStyle> base_computed_style_;
-  // Keeps track of the !important declarations used to build the base
-  // computed style. These declarations must not be overwritten by animation
-  // effects, hence we have to disable the base computed style optimization when
-  // !important declarations conflict with active animations.
-  //
-  // If there were no !important declarations in the base style, this field
-  // will be nullptr.
-  //
-  // TODO(andruud): We should be able to simply skip applying the animation
-  // for properties in this set instead of disabling the optimization.
-  // However, we currently need the cascade to handle the case where
-  // an !important declaration appears in a :visited selector.
-  // See https://crbug.com/1062217.
-  std::unique_ptr<CSSBitset> base_important_set_;
 
   FRIEND_TEST_ALL_PREFIXES(StyleEngineTest, PseudoElementBaseComputedStyle);
 };
diff --git a/third_party/blink/renderer/core/css/css_container_rule.h b/third_party/blink/renderer/core/css/css_container_rule.h
index 506bb0a..0215b53 100644
--- a/third_party/blink/renderer/core/css/css_container_rule.h
+++ b/third_party/blink/renderer/core/css/css_container_rule.h
@@ -27,6 +27,7 @@
  private:
   // TODO(crbug.com/1214810): Don't lean on MediaList.
   friend class InspectorCSSAgent;
+  friend class InspectorDOMAgent;
   friend class InspectorStyleSheet;
 
   CSSRule::Type GetType() const override { return kContainerRule; }
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
index 241fa39..cb4b09e 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
@@ -140,6 +140,12 @@
           state.GetAnimatingElement()->HasAnimations());
 }
 
+bool IsAnimationStyleChange(Element& element) {
+  if (auto* element_animations = element.GetElementAnimations())
+    return element_animations->IsAnimationStyleChange();
+  return false;
+}
+
 bool ShouldComputeBaseComputedStyle(const ComputedStyle* base_computed_style) {
 #if DCHECK_IS_ON()
   // The invariant in the base computed style optimization is that as long as
@@ -210,6 +216,25 @@
 #endif  // DCHECK_IS_ON()
 }
 
+void PreserveTextAutosizingMultiplierIfNeeded(
+    StyleResolverState& state,
+    const StyleRequest& style_request) {
+  const ComputedStyle* old_style = state.GetElement().GetComputedStyle();
+  if (!style_request.IsPseudoStyleRequest() && old_style) {
+    state.Style()->SetTextAutosizingMultiplier(
+        old_style->TextAutosizingMultiplier());
+  }
+}
+
+bool TextAutosizingMultiplierChanged(const StyleResolverState& state,
+                                     const ComputedStyle& base_computed_style) {
+  // Note that |old_style| can be a style replaced by
+  // TextAutosizer::ApplyMultiplier.
+  const ComputedStyle* old_style = state.GetElement().GetComputedStyle();
+  return old_style && (old_style->TextAutosizingMultiplier() !=
+                       base_computed_style.TextAutosizingMultiplier());
+}
+
 }  // namespace
 
 static CSSPropertyValueSet* LeftToRightDeclaration() {
@@ -701,40 +726,19 @@
   return state.GetAnimatingElement()->GetElementAnimations();
 }
 
-static const ComputedStyle* CachedAnimationBaseComputedStyle(
-    StyleResolverState& state) {
-  ElementAnimations* element_animations = GetElementAnimations(state);
-  if (!element_animations)
+static StyleBaseData* GetBaseData(const StyleResolverState& state) {
+  Element* animating_element = state.GetAnimatingElement();
+  if (!animating_element)
     return nullptr;
-
-  return element_animations->BaseComputedStyle();
+  auto* old_style = animating_element->GetComputedStyle();
+  return old_style ? old_style->BaseData().get() : nullptr;
 }
 
-static void UpdateAnimationBaseComputedStyle(StyleResolverState& state,
-                                             StyleCascade& cascade,
-                                             bool forced_update) {
-  if (!state.GetAnimatingElement())
-    return;
-
-  if (!state.CanCacheBaseStyle())
-    return;
-
-  if (forced_update)
-    state.GetAnimatingElement()->EnsureElementAnimations();
-
-  ElementAnimations* element_animations =
-      state.GetAnimatingElement()->GetElementAnimations();
-  if (!element_animations)
-    return;
-
-  if (element_animations->IsAnimationStyleChange() &&
-      element_animations->BaseComputedStyle()) {
-    return;
-  }
-
-  std::unique_ptr<CSSBitset> important_set = cascade.GetImportantSet();
-  element_animations->UpdateBaseComputedStyle(state.Style(),
-                                              std::move(important_set));
+static const ComputedStyle* CachedAnimationBaseComputedStyle(
+    StyleResolverState& state) {
+  if (auto* base_data = GetBaseData(state))
+    return base_data->GetBaseComputedStyle();
+  return nullptr;
 }
 
 static void IncrementResolvedStyleCounters(const StyleRequest& style_request,
@@ -985,16 +989,11 @@
       return;
     }
 
-    if (!style_request.IsPseudoStyleRequest() && element->GetComputedStyle() &&
-        element->GetComputedStyle()->TextAutosizingMultiplier() !=
-            state.Style()->TextAutosizingMultiplier()) {
-      // Preserve the text autosizing multiplier on style recalc. Autosizer will
-      // update it during layout if needed.
-      // NOTE: this must occur before ApplyMatchedProperties for correct
-      // computation of font-relative lengths.
-      state.Style()->SetTextAutosizingMultiplier(
-          element->GetComputedStyle()->TextAutosizingMultiplier());
-    }
+    // Preserve the text autosizing multiplier on style recalc. Autosizer will
+    // update it during layout if needed.
+    // NOTE: This must occur before CascadeAndApplyMatchedProperties for correct
+    // computation of font-relative lengths.
+    PreserveTextAutosizingMultiplierIfNeeded(state, style_request);
 
     CascadeAndApplyMatchedProperties(state, cascade);
 
@@ -1016,6 +1015,8 @@
   if (base_is_usable) {
     DCHECK(animation_base_computed_style);
     state.SetStyle(ComputedStyle::Clone(*animation_base_computed_style));
+    state.StyleRef().SetBaseData(
+        scoped_refptr<StyleBaseData>(GetBaseData(state)));
     state.Style()->SetStyleType(style_request.pseudo_id);
     if (!state.ParentStyle()) {
       state.SetParentStyle(InitialStyleForElement());
@@ -1268,12 +1269,13 @@
   DCHECK(animating_element == &element ||
          animating_element->ParentOrShadowHostElement() == element);
 
-  if (!HasAnimationsOrTransitions(state)) {
-    // Ensure that the base computed style is not stale even if not currently
-    // running an animation or transition. This ensures that any new transitions
-    // use the correct starting point based on the "before change" style.
-    UpdateAnimationBaseComputedStyle(state, cascade, false);
+  if (!HasAnimationsOrTransitions(state))
     return false;
+
+  if (!IsAnimationStyleChange(*animating_element) ||
+      !state.StyleRef().BaseData()) {
+    state.StyleRef().SetBaseData(StyleBaseData::Create(
+        ComputedStyle::Clone(state.StyleRef()), cascade.GetImportantSet()));
   }
 
   CSSAnimations::CalculateAnimationUpdate(
@@ -1288,10 +1290,7 @@
   CSSAnimations::SnapshotCompositorKeyframes(
       element, state.AnimationUpdate(), *state.Style(), state.ParentStyle());
 
-  bool has_update = !state.AnimationUpdate().IsEmpty();
-  UpdateAnimationBaseComputedStyle(state, cascade, has_update);
-
-  if (!has_update)
+  if (state.AnimationUpdate().IsEmpty())
     return false;
 
   const ActiveInterpolationsMap& animations =
@@ -1463,10 +1462,11 @@
     return false;
 
   ElementAnimations* element_animations = GetElementAnimations(state);
-  if (!element_animations || !element_animations->BaseComputedStyle())
+  if (!element_animations || !element_animations->IsAnimationStyleChange())
     return false;
 
-  if (!element_animations->IsAnimationStyleChange())
+  StyleBaseData* base_data = GetBaseData(state);
+  if (!base_data || !base_data->GetBaseComputedStyle())
     return false;
 
   // Animating a custom property can have side effects on other properties
@@ -1484,10 +1484,8 @@
   // animation. We cannot use the base computed style optimization in such
   // cases.
   if (CSSAnimations::IsAnimatingFontAffectingProperties(element_animations)) {
-    if (element_animations->BaseComputedStyle() &&
-        element_animations->BaseComputedStyle()->HasFontRelativeUnits()) {
+    if (base_data->GetBaseComputedStyle()->HasFontRelativeUnits())
       return false;
-    }
   }
 
   // Normally, we apply all active animation effects on top of the style created
@@ -1497,11 +1495,16 @@
   // style, we disable the base computed style optimization.
   // [1] https://drafts.csswg.org/css-cascade-4/#cascade-origin
   if (CSSAnimations::IsAnimatingStandardProperties(
-          element_animations, element_animations->BaseImportantSet(),
+          element_animations, base_data->GetBaseImportantSet(),
           KeyframeEffect::kDefaultPriority)) {
     return false;
   }
 
+  if (TextAutosizingMultiplierChanged(state,
+                                      *base_data->GetBaseComputedStyle())) {
+    return false;
+  }
+
   return true;
 }
 
@@ -1873,15 +1876,14 @@
   // Overflow
   {
     const ComputedStyle* overflow_style = document_element_style;
-    if (body_style &&
-        document_element_style->IsOverflowVisibleAlongBothAxes()) {
-      overflow_style = body_style;
-
-      // The body element has its own scrolling box, independent from the
-      // viewport.  This is a bit of a weird edge case in the CSS spec that we
-      // might want to try to eliminate some day (eg. for ScrollTopLeftInterop
-      // - see http://crbug.com/157855).
-      if (body_style && body_style->IsScrollContainer()) {
+    if (body_style) {
+      if (document_element_style->IsOverflowVisibleAlongBothAxes()) {
+        overflow_style = body_style;
+      } else if (body_style->IsScrollContainer()) {
+        // The body element has its own scrolling box, independent from the
+        // viewport.  This is a bit of a weird edge case in the CSS spec that
+        // we might want to try to eliminate some day (e.g. for
+        // ScrollTopLeftInterop - see http://crbug.com/157855).
         UseCounter::Count(GetDocument(),
                           WebFeature::kBodyScrollsInAdditionToViewport);
       }
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc b/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc
index a169fdd..7e35c1f 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc
@@ -88,13 +88,14 @@
   animations.SetAnimationStyleChange(true);
 
   StyleResolver& resolver = GetStyleEngine().GetStyleResolver();
-  ASSERT_TRUE(resolver.ResolveStyle(div, StyleRecalcContext()));
-  EXPECT_EQ(20, resolver.ResolveStyle(div, StyleRecalcContext())->FontSize());
-  ASSERT_TRUE(animations.BaseComputedStyle());
-  EXPECT_EQ(20, animations.BaseComputedStyle()->FontSize());
+  auto style1 = resolver.ResolveStyle(div, StyleRecalcContext());
+  ASSERT_TRUE(style1);
+  EXPECT_EQ(20, style1->FontSize());
+  ASSERT_TRUE(style1->GetBaseComputedStyle());
+  EXPECT_EQ(20, style1->GetBaseComputedStyle()->FontSize());
 
-  // Getting style with customized parent style should not affect cached
-  // animation base computed style.
+  // Getting style with customized parent style should not affect previously
+  // produced animation base computed style.
   const ComputedStyle* parent_style =
       GetDocument().documentElement()->GetComputedStyle();
   StyleRequest style_request;
@@ -102,8 +103,8 @@
   style_request.layout_parent_override = parent_style;
   EXPECT_EQ(10, resolver.ResolveStyle(div, StyleRecalcContext(), style_request)
                     ->FontSize());
-  ASSERT_TRUE(animations.BaseComputedStyle());
-  EXPECT_EQ(20, animations.BaseComputedStyle()->FontSize());
+  ASSERT_TRUE(style1->GetBaseComputedStyle());
+  EXPECT_EQ(20, style1->GetBaseComputedStyle()->FontSize());
   EXPECT_EQ(20, resolver.ResolveStyle(div, StyleRecalcContext())->FontSize());
 }
 
@@ -134,9 +135,6 @@
   GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc);
   StyleForId("div");
 
-  ASSERT_TRUE(div->GetElementAnimations());
-  EXPECT_TRUE(div->GetElementAnimations()->BaseComputedStyle());
-
   StyleResolverState state(GetDocument(), *div);
   EXPECT_TRUE(StyleResolver::CanReuseBaseComputedStyle(state));
 }
@@ -164,13 +162,12 @@
 
   div->SetNeedsAnimationStyleRecalc();
   GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc);
-  StyleForId("div");
+  auto style = StyleForId("div");
 
-  ASSERT_TRUE(div->GetElementAnimations());
-  const CSSBitset* bitset = div->GetElementAnimations()->BaseImportantSet();
+  const CSSBitset* bitset = style->GetBaseImportantSet();
   EXPECT_FALSE(CSSAnimations::IsAnimatingStandardProperties(
       div->GetElementAnimations(), bitset, KeyframeEffect::kDefaultPriority));
-  EXPECT_TRUE(div->GetElementAnimations()->BaseComputedStyle());
+  EXPECT_TRUE(style->GetBaseComputedStyle());
   EXPECT_FALSE(bitset && bitset->Has(CSSPropertyID::kWidth));
   EXPECT_TRUE(bitset && bitset->Has(CSSPropertyID::kHeight));
 }
@@ -235,11 +232,10 @@
 
   div->SetNeedsAnimationStyleRecalc();
   GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc);
-  StyleForId("div");
+  auto style = StyleForId("div");
 
-  ASSERT_TRUE(div->GetElementAnimations());
-  EXPECT_TRUE(div->GetElementAnimations()->BaseComputedStyle());
-  EXPECT_TRUE(div->GetElementAnimations()->BaseImportantSet());
+  EXPECT_TRUE(style->GetBaseComputedStyle());
+  EXPECT_TRUE(style->GetBaseImportantSet());
 
   StyleResolverState state(GetDocument(), *div);
   EXPECT_FALSE(StyleResolver::CanReuseBaseComputedStyle(state));
@@ -294,53 +290,6 @@
             ComputedValue("font-size", *StyleForId("target")));
 }
 
-TEST_F(StyleResolverTest, NonCachableStyleCheckDoesNotAffectBaseComputedStyle) {
-  GetDocument().documentElement()->setInnerHTML(R"HTML(
-    <style>
-      .adjust { color: rgb(0, 0, 0); }
-    </style>
-    <div>
-      <div style="color: rgb(0, 128, 0)">
-        <div id="target" style="transition: color 1s linear"></div>
-      </div>
-    </div>
-  )HTML");
-  UpdateAllLifecyclePhasesForTest();
-
-  Element* target = GetDocument().getElementById("target");
-
-  EXPECT_EQ("rgb(0, 128, 0)", ComputedValue("color", *StyleForId("target")));
-
-  // Trigger a transition on an inherited property.
-  target->setAttribute(html_names::kClassAttr, "adjust");
-  UpdateAllLifecyclePhasesForTest();
-  ElementAnimations* element_animations = target->GetElementAnimations();
-  EXPECT_TRUE(element_animations);
-  Animation* transition = (*element_animations->Animations().begin()).key;
-  EXPECT_TRUE(transition);
-
-  // Advance to the midpoint of the transition.
-  transition->setCurrentTime(MakeGarbageCollected<V8CSSNumberish>(500),
-                             ASSERT_NO_EXCEPTION);
-  UpdateAllLifecyclePhasesForTest();
-  EXPECT_EQ("rgb(0, 64, 0)", ComputedValue("color", *StyleForId("target")));
-  EXPECT_TRUE(element_animations->BaseComputedStyle());
-
-  element_animations->ClearBaseComputedStyle();
-
-  // Perform a non-cacheable style resolution, and ensure that the base computed
-  // style is not updated.
-  StyleRequest style_request;
-  style_request.matching_behavior = kMatchAllRulesExcludingSMIL;
-  GetStyleEngine().GetStyleResolver().ResolveStyle(target, StyleRecalcContext(),
-                                                   style_request);
-  EXPECT_FALSE(element_animations->BaseComputedStyle());
-
-  // Computing the style with default args updates the base computed style.
-  EXPECT_EQ("rgb(0, 64, 0)", ComputedValue("color", *StyleForId("target")));
-  EXPECT_TRUE(element_animations->BaseComputedStyle());
-}
-
 class StyleResolverFontRelativeUnitTest
     : public testing::WithParamInterface<const char*>,
       public StyleResolverTest {};
@@ -363,8 +312,7 @@
   auto computed_style = StyleForId("div");
 
   EXPECT_TRUE(computed_style->HasFontRelativeUnits());
-  ASSERT_TRUE(div->GetElementAnimations());
-  EXPECT_TRUE(div->GetElementAnimations()->BaseComputedStyle());
+  EXPECT_TRUE(computed_style->GetBaseComputedStyle());
 
   StyleResolverState state(GetDocument(), *div);
   EXPECT_FALSE(StyleResolver::CanReuseBaseComputedStyle(state));
@@ -388,8 +336,7 @@
   auto computed_style = StyleForId("div");
 
   EXPECT_TRUE(computed_style->HasFontRelativeUnits());
-  ASSERT_TRUE(div->GetElementAnimations());
-  EXPECT_TRUE(div->GetElementAnimations()->BaseComputedStyle());
+  EXPECT_TRUE(computed_style->GetBaseComputedStyle());
 
   StyleResolverState state(GetDocument(), *div);
   EXPECT_TRUE(StyleResolver::CanReuseBaseComputedStyle(state));
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc
index 151a26a..7ede4db6 100644
--- a/third_party/blink/renderer/core/css/style_engine_test.cc
+++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -2504,18 +2504,21 @@
   before->SetNeedsAnimationStyleRecalc();
   UpdateAllLifecyclePhases();
 
-  scoped_refptr<ComputedStyle> base_computed_style =
-      animations->base_computed_style_;
+  ASSERT_TRUE(before->GetComputedStyle());
+  const ComputedStyle* base_computed_style =
+      before->GetComputedStyle()->GetBaseComputedStyle();
   EXPECT_TRUE(base_computed_style);
 
   before->SetNeedsAnimationStyleRecalc();
   UpdateAllLifecyclePhases();
 
-  EXPECT_TRUE(animations->base_computed_style_);
+  ASSERT_TRUE(before->GetComputedStyle());
+  EXPECT_TRUE(before->GetComputedStyle()->GetBaseComputedStyle());
 #if !DCHECK_IS_ON()
   // When DCHECK is enabled, BaseComputedStyle() returns null and we repeatedly
   // create new instances which means the pointers will be different here.
-  EXPECT_EQ(base_computed_style, animations->base_computed_style_);
+  EXPECT_EQ(base_computed_style,
+            before->GetComputedStyle()->GetBaseComputedStyle());
 #endif
 }
 
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index 85e7221..b24ee228 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -2784,7 +2784,6 @@
         element_animations->CssAnimations().Cancel();
         element_animations->SetAnimationStyleChange(false);
       }
-      element_animations->ClearBaseComputedStyle();
     }
   }
 
diff --git a/third_party/blink/renderer/core/dom/element.h b/third_party/blink/renderer/core/dom/element.h
index c840668..85a3388 100644
--- a/third_party/blink/renderer/core/dom/element.h
+++ b/third_party/blink/renderer/core/dom/element.h
@@ -384,6 +384,9 @@
   bool HasTagName(const HTMLQualifiedName& tag_name) const {
     return ContainerNode::HasTagName(tag_name);
   }
+  bool HasTagName(const MathMLQualifiedName& tag_name) const {
+    return ContainerNode::HasTagName(tag_name);
+  }
   bool HasTagName(const SVGQualifiedName& tag_name) const {
     return ContainerNode::HasTagName(tag_name);
   }
diff --git a/third_party/blink/renderer/core/html/html_element.cc b/third_party/blink/renderer/core/html/html_element.cc
index fe26ab4..4b0c4e3 100644
--- a/third_party/blink/renderer/core/html/html_element.cc
+++ b/third_party/blink/renderer/core/html/html_element.cc
@@ -79,6 +79,7 @@
 #include "third_party/blink/renderer/core/layout/layout_box.h"
 #include "third_party/blink/renderer/core/layout/layout_box_model_object.h"
 #include "third_party/blink/renderer/core/layout/layout_object.h"
+#include "third_party/blink/renderer/core/mathml/mathml_element.h"
 #include "third_party/blink/renderer/core/mathml_names.h"
 #include "third_party/blink/renderer/core/page/spatial_navigation.h"
 #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
@@ -140,10 +141,9 @@
     return true;
   if (IsA<SVGSVGElement>(node))
     return true;
-  auto* element = DynamicTo<Element>(node);
-  if (element && element->HasTagName(mathml_names::kMathTag))
-    return true;
-  return !element && node.parentNode()->IsHTMLElement();
+  if (auto* mathml_element = DynamicTo<MathMLElement>(node))
+    return mathml_element->HasTagName(mathml_names::kMathTag);
+  return !IsA<Element>(node) && node.parentNode()->IsHTMLElement();
 }
 
 const WebFeature kNoWebFeature = static_cast<WebFeature>(0);
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc
index c3976a7..c7bc38d 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc
@@ -145,6 +145,7 @@
         end_if_delayed_forbidden_(0),
         should_complete_(0),
         should_attempt_to_end_on_eof_(0),
+        times_yielded_(0),
         needs_link_header_dispatch_(true),
         have_seen_first_byte_(false) {}
 
@@ -198,6 +199,9 @@
   }
   ParserSynchronizationPolicy GetMode() const { return mode_; }
 
+  void MarkYield() { times_yielded_++; }
+  int TimesYielded() const { return times_yielded_; }
+
   void SetSeenCSPMetaTag(const bool seen) {
     if (meta_csp_state_ == MetaCSPTokenState::kUnenforceable)
       return;
@@ -240,6 +244,7 @@
   // Set to non-zero if Document::Finish has been called and we're operating
   // asynchronously.
   int should_attempt_to_end_on_eof_;
+  int times_yielded_;
   bool needs_link_header_dispatch_;
   bool have_seen_first_byte_;
 };
@@ -385,15 +390,6 @@
       context_element, report_errors, options_));
 }
 
-namespace {
-int GetMaxTokenizationBudget() {
-  static int max = base::GetFieldTrialParamByFeatureAsInt(
-      features::kForceSynchronousHTMLParsing, "MaxTokenizationBudget",
-      kDefaultMaxTokenizationBudget);
-  return max;
-}
-}  // namespace
-
 HTMLDocumentParser::HTMLDocumentParser(Document& document,
                                        ParserContentPolicy content_policy,
                                        ParserSynchronizationPolicy sync_policy,
@@ -451,8 +447,6 @@
         document.UkmSourceID(), document.UkmRecorder());
   }
 
-  max_tokenization_budget_ = GetMaxTokenizationBudget();
-
   // Don't create preloader for parsing clipboard content.
   if (content_policy == kDisallowScriptingAndPluginContent)
     return;
@@ -501,7 +495,8 @@
   DocumentParser::Detach();
   if (script_runner_)
     script_runner_->Detach();
-  tree_builder_->Detach();
+  if (tree_builder_)
+    tree_builder_->Detach();
   // FIXME: It seems wrong that we would have a preload scanner here. Yet during
   // fast/dom/HTMLScriptElement/script-load-events.html we do.
   preload_scanner_.reset();
@@ -1044,7 +1039,13 @@
 
   bool should_yield = false;
   bool should_pause_async_script_execution = false;
-  int budget = max_tokenization_budget_;
+  // If we've yielded more than 2 times, then set the budget to a very large
+  // number, to attempt to consume all available tokens in one go. This
+  // heuristic is intended to allow a quick first contentful paint, followed by
+  // a larger rendering lifecycle that processes the remainder of the page.
+  int budget = (task_runner_state_->TimesYielded() <= 2)
+                   ? kDefaultMaxTokenizationBudget
+                   : 1e7;
 
   base::ElapsedTimer chunk_parsing_timer_;
   unsigned tokens_parsed = 0;
@@ -1138,6 +1139,8 @@
 
   // should_run_until_completion implies that we should not yield
   CHECK(!should_run_until_completion || !should_yield);
+  if (should_yield)
+    task_runner_state_->MarkYield();
   return should_yield;
 }
 
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.h b/third_party/blink/renderer/core/html/parser/html_document_parser.h
index 4e50c78..9f651d0a 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser.h
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser.h
@@ -150,10 +150,6 @@
   void Flush() final;
   void SetDecoder(std::unique_ptr<TextResourceDecoder>) final;
 
-  void SetMaxTokenizationBudgetForTesting(int budget) {
-    max_tokenization_budget_ = budget;
-  }
-
  protected:
   void insert(const String&) final;
   void Append(const String&) override;
@@ -292,7 +288,6 @@
   // would require keeping track of token positions of preload requests.
   CompactHTMLToken* pending_csp_meta_token_;
 
-  int max_tokenization_budget_;
   bool can_parse_asynchronously_;
   bool end_was_delayed_;
   bool have_background_parser_;
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc b/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc
index b730ff6..8d25695f 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc
@@ -34,8 +34,7 @@
 
 class HTMLDocumentParserTest
     : public PageTestBase,
-      public testing::WithParamInterface<
-          testing::tuple<ParserSynchronizationPolicy, int>>,
+      public testing::WithParamInterface<ParserSynchronizationPolicy>,
       private ScopedForceSynchronousHTMLParsingForTest {
  protected:
   HTMLDocumentParserTest()
@@ -59,9 +58,8 @@
   }
 
   HTMLDocumentParser* CreateParser(HTMLDocument& document) {
-    auto* parser = MakeGarbageCollected<HTMLDocumentParser>(
-        document, testing::get<0>(GetParam()));
-    parser->SetMaxTokenizationBudgetForTesting(testing::get<1>(GetParam()));
+    auto* parser =
+        MakeGarbageCollected<HTMLDocumentParser>(document, GetParam());
     std::unique_ptr<TextResourceDecoder> decoder(
         BuildTextResourceDecoderFor(&document, "text/html", g_null_atom));
     parser->SetDecoder(std::move(decoder));
@@ -69,21 +67,17 @@
   }
 
  private:
-  ParserSynchronizationPolicy Policy() const {
-    return testing::get<0>(GetParam());
-  }
+  ParserSynchronizationPolicy Policy() const { return GetParam(); }
 
   bool original_threaded_parsing_;
 };
 
 }  // namespace
 
-INSTANTIATE_TEST_SUITE_P(
-    HTMLDocumentParserTest,
-    HTMLDocumentParserTest,
-    testing::Combine(testing::Values(kForceSynchronousParsing,
-                                     kAllowDeferredParsing),
-                     testing::Values(250, 500, 1000)));
+INSTANTIATE_TEST_SUITE_P(HTMLDocumentParserTest,
+                         HTMLDocumentParserTest,
+                         testing::Values(kForceSynchronousParsing,
+                                         kAllowDeferredParsing));
 
 TEST_P(HTMLDocumentParserTest, StopThenPrepareToStopShouldNotCrash) {
   auto& document = To<HTMLDocument>(GetDocument());
@@ -165,7 +159,7 @@
   HTMLParserScriptRunnerHost* script_runner_host =
       parser->AsHTMLParserScriptRunnerHostForTesting();
   EXPECT_EQ(script_runner_host->HasPreloadScanner(),
-            testing::get<0>(GetParam()) == kAllowDeferredParsing);
+            GetParam() == kAllowDeferredParsing);
   EXPECT_EQ(HTMLTokenizer::kTagNameState, parser->Tokenizer()->GetState());
   // Cancel any pending work to make sure that RuntimeFeatures DCHECKs do not
   // fire.
diff --git a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
index 802b0d0..809b180 100644
--- a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
@@ -37,6 +37,7 @@
 #include "third_party/blink/renderer/bindings/core/v8/v8_file.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_node.h"
 #include "third_party/blink/renderer/core/css/css_computed_style_declaration.h"
+#include "third_party/blink/renderer/core/css/css_container_rule.h"
 #include "third_party/blink/renderer/core/css/css_property_name.h"
 #include "third_party/blink/renderer/core/dom/attr.h"
 #include "third_party/blink/renderer/core/dom/character_data.h"
@@ -72,6 +73,7 @@
 #include "third_party/blink/renderer/core/inspector/dom_patch_support.h"
 #include "third_party/blink/renderer/core/inspector/identifiers_factory.h"
 #include "third_party/blink/renderer/core/inspector/inspected_frames.h"
+#include "third_party/blink/renderer/core/inspector/inspector_css_agent.h"
 #include "third_party/blink/renderer/core/inspector/inspector_highlight.h"
 #include "third_party/blink/renderer/core/inspector/inspector_history.h"
 #include "third_party/blink/renderer/core/inspector/resolve_node.h"
@@ -1558,6 +1560,56 @@
   return Response::Success();
 }
 
+Response InspectorDOMAgent::getQueryingDescendantsForContainer(
+    int node_id,
+    std::unique_ptr<protocol::Array<int>>* node_ids) {
+  Element* container = nullptr;
+  Response response = AssertElement(node_id, container);
+  if (!response.IsSuccess())
+    return response;
+
+  // This won't work for edge cases with display locking
+  // (https://crbug.com/1235306).
+  container->GetDocument().UpdateStyleAndLayoutTreeForSubtree(container);
+
+  *node_ids = std::make_unique<protocol::Array<int>>();
+  NodeToIdMap* nodes_map = document_node_to_id_map_.Get();
+  for (Element& element : ElementTraversal::DescendantsOf(*container)) {
+    if (ContainerQueriedByElement(container, &element)) {
+      int id = PushNodePathToFrontend(&element, nodes_map);
+      (*node_ids)->push_back(id);
+    }
+  }
+
+  return Response::Success();
+}
+
+bool InspectorDOMAgent::ContainerQueriedByElement(Element* container,
+                                                  Element* element) {
+  const ComputedStyle* style = element->GetComputedStyle();
+  if (!style || !style->DependsOnContainerQueries())
+    return false;
+
+  StyleResolver& style_resolver = element->GetDocument().GetStyleResolver();
+  RuleIndexList* matched_rules =
+      style_resolver.CssRulesForElement(element, StyleResolver::kAllCSSRules);
+  for (auto it = matched_rules->rbegin(); it != matched_rules->rend(); ++it) {
+    CSSRule* parent_rule = it->first;
+    while (parent_rule) {
+      auto* container_rule = DynamicTo<CSSContainerRule>(parent_rule);
+      if (container_rule) {
+        if (container == style_resolver.FindContainerForElement(
+                             element, container_rule->Name()))
+          return true;
+      }
+
+      parent_rule = parent_rule->parentRule();
+    }
+  }
+
+  return false;
+}
+
 // static
 String InspectorDOMAgent::DocumentURLString(Document* document) {
   if (!document || document->Url().IsNull())
diff --git a/third_party/blink/renderer/core/inspector/inspector_dom_agent.h b/third_party/blink/renderer/core/inspector/inspector_dom_agent.h
index 785547e7..14eccfe 100644
--- a/third_party/blink/renderer/core/inspector/inspector_dom_agent.h
+++ b/third_party/blink/renderer/core/inspector/inspector_dom_agent.h
@@ -258,6 +258,9 @@
       int node_id,
       protocol::Maybe<String> container_name,
       protocol::Maybe<int>* container_node_id) override;
+  protocol::Response getQueryingDescendantsForContainer(
+      int node_id,
+      std::unique_ptr<protocol::Array<int>>* node_ids) override;
 
   bool Enabled() const;
   void ReleaseDanglingNodes();
@@ -373,6 +376,8 @@
   std::unique_ptr<protocol::Array<protocol::DOM::BackendNode>>
   BuildDistributedNodesForSlot(HTMLSlotElement*);
 
+  bool ContainerQueriedByElement(Element* container, Element* element);
+
   Node* NodeForPath(const String& path);
 
   void DiscardFrontendBindings();
diff --git a/third_party/blink/renderer/core/layout/geometry/logical_offset.h b/third_party/blink/renderer/core/layout/geometry/logical_offset.h
index 5c9d96f2..5142d95 100644
--- a/third_party/blink/renderer/core/layout/geometry/logical_offset.h
+++ b/third_party/blink/renderer/core/layout/geometry/logical_offset.h
@@ -5,6 +5,8 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_GEOMETRY_LOGICAL_OFFSET_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_GEOMETRY_LOGICAL_OFFSET_H_
 
+#include <tuple>
+
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/geometry/layout_unit.h"
 #include "third_party/blink/renderer/platform/text/writing_direction_mode.h"
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc
index df0ba81..64e159f 100644
--- a/third_party/blink/renderer/core/layout/layout_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -2817,16 +2817,6 @@
   }
 }
 
-void LayoutObject::ClearBaseComputedStyle() {
-  NOT_DESTROYED();
-  auto* element = DynamicTo<Element>(GetNode());
-  if (!element)
-    return;
-
-  if (ElementAnimations* animations = element->GetElementAnimations())
-    animations->ClearBaseComputedStyle();
-}
-
 static bool AreNonIdenticalCursorListsEqual(const ComputedStyle* a,
                                             const ComputedStyle* b) {
   DCHECK_NE(a->Cursors(), b->Cursors());
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h
index 0b8f195..930ce9f 100644
--- a/third_party/blink/renderer/core/layout/layout_object.h
+++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -2272,8 +2272,6 @@
   void SetModifiedStyleOutsideStyleRecalc(scoped_refptr<const ComputedStyle>,
                                           ApplyStyleChanges);
 
-  void ClearBaseComputedStyle();
-
   // This function returns an enclosing non-anonymous LayoutBlock for this
   // element. This function is not always returning the containing block as
   // defined by CSS. In particular:
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc
index 502812f..8af4586 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc
@@ -704,48 +704,64 @@
 
 void NGInlineLayoutStateStack::ApplyRelativePositioning(
     const NGConstraintSpace& space,
-    NGLogicalLineItems* line_box) {
+    NGLogicalLineItems* line_box,
+    Vector<LogicalOffset, 32>* oof_relative_offsets) {
   if (box_data_list_.IsEmpty())
     return;
 
+  DCHECK(oof_relative_offsets);
+  DCHECK_EQ(oof_relative_offsets->size(), box_data_list_.size());
+
   // The final position of any inline boxes, (<span>, etc) are stored on
   // |BoxData::rect|. As we don't have a mapping from |NGLogicalLineItem| to
   // |BoxData| we store the accumulated relative offsets, and then apply the
   // final adjustment at the end of this function.
   Vector<LogicalOffset, 32> accumulated_offsets(line_box->size());
+  Vector<LogicalOffset, 32> oof_accumulated_offsets(line_box->size());
 
   for (BoxData& box_data : box_data_list_) {
     unsigned start = box_data.fragment_start;
     unsigned end = box_data.fragment_end;
     const LogicalOffset relative_offset =
         ComputeRelativeOffsetForInline(space, *box_data.item->Style());
+    const LogicalOffset relative_offset_for_oof =
+        ComputeRelativeOffsetForOOFInInline(space, *box_data.item->Style());
 
     // Move all children for this box.
     for (unsigned index = start; index < end; index++) {
       auto& child = (*line_box)[index];
       child.rect.offset += relative_offset;
       accumulated_offsets[index] += relative_offset;
+      oof_accumulated_offsets[index] += relative_offset_for_oof;
     }
   }
 
   // Apply the final accumulated relative position offset for each box.
-  for (BoxData& box_data : box_data_list_)
+  for (wtf_size_t i = 0; i < box_data_list_.size(); i++) {
+    BoxData& box_data = box_data_list_[i];
     box_data.rect.offset += accumulated_offsets[box_data.fragment_start];
+    (*oof_relative_offsets)[i] =
+        oof_accumulated_offsets[box_data.fragment_start];
+  }
 }
 
 void NGInlineLayoutStateStack::CreateBoxFragments(
     const NGConstraintSpace& space,
-    NGLogicalLineItems* line_box) {
+    NGLogicalLineItems* line_box,
+    Vector<LogicalOffset, 32>* oof_relative_offsets) {
   DCHECK(!box_data_list_.IsEmpty());
+  DCHECK(oof_relative_offsets);
+  DCHECK_EQ(oof_relative_offsets->size(), box_data_list_.size());
 
-  for (BoxData& box_data : box_data_list_) {
+  for (wtf_size_t i = 0; i < box_data_list_.size(); i++) {
+    BoxData& box_data = box_data_list_[i];
     unsigned start = box_data.fragment_start;
     unsigned end = box_data.fragment_end;
     DCHECK_GT(end, start);
     NGLogicalLineItem* child = &(*line_box)[start];
     DCHECK(box_data.item->ShouldCreateBoxFragment());
     scoped_refptr<const NGLayoutResult> box_fragment =
-        box_data.CreateBoxFragment(space, line_box);
+        box_data.CreateBoxFragment(space, line_box, (*oof_relative_offsets)[i]);
     if (child->IsPlaceholder()) {
       child->layout_result = std::move(box_fragment);
       child->rect = box_data.rect;
@@ -766,7 +782,8 @@
 scoped_refptr<const NGLayoutResult>
 NGInlineLayoutStateStack::BoxData::CreateBoxFragment(
     const NGConstraintSpace& space,
-    NGLogicalLineItems* line_box) {
+    NGLogicalLineItems* line_box,
+    LogicalOffset oof_relative_offset) {
   DCHECK(item);
   DCHECK(item->Style());
   const ComputedStyle& style = *item->Style();
@@ -790,11 +807,6 @@
   // supported today.
   box.SetSidesToInclude({true, has_line_right_edge, true, has_line_left_edge});
 
-  // We don't use ComputeRelativeOffsetForInline() when storing the relative
-  // offset for OOF descendants to avoid any line-logical conversions.
-  const LogicalOffset relative_offset = ComputeRelativeOffset(
-      style, space.GetWritingDirection(), space.AvailableSize());
-
   for (unsigned i = fragment_start; i < fragment_end; i++) {
     NGLogicalLineItem& child = (*line_box)[i];
 
@@ -811,6 +823,7 @@
       // this as a child of an inline level fragment, we adjust the static
       // position to be relative to this fragment.
       LogicalOffset static_offset = child.rect.offset - rect.offset;
+      static_offset += oof_relative_offset;
 
       box.AddOutOfFlowInlineChildCandidate(oof_box, static_offset,
                                            child.container_direction);
@@ -820,8 +833,14 @@
 
     // Propagate any OOF-positioned descendants from any atomic-inlines, etc.
     if (child.layout_result) {
+      // An accumulated relative offset is applied to an OOF once it reaches its
+      // inline container. Subtract out the relative offset to avoid adding it
+      // twice.
       box.PropagateChildData(child.layout_result->PhysicalFragment(),
-                             child.rect.offset - rect.offset, relative_offset);
+                             child.rect.offset - rect.offset -
+                                 ComputeRelativeOffsetForInline(
+                                     space, child.PhysicalFragment()->Style()),
+                             /* relative_offset */ LogicalOffset());
     }
 
     // |NGFragmentItems| has a flat list of all descendants, except
@@ -833,7 +852,7 @@
   // invalidations.
   item->GetLayoutObject()->SetShouldDoFullPaintInvalidation();
 
-  box.MoveOutOfFlowDescendantCandidatesToDescendants(relative_offset);
+  box.MoveOutOfFlowDescendantCandidatesToDescendants(oof_relative_offset);
   return box.ToInlineBoxFragment();
 }
 
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.h
index 558ae99..901c6207 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.h
@@ -174,6 +174,8 @@
 
   bool HasBoxFragments() const { return !box_data_list_.IsEmpty(); }
 
+  wtf_size_t NumBoxFragments() const { return box_data_list_.size(); }
+
   // Notify when child is inserted at |index| to adjust child indexes.
   void ChildInserted(unsigned index);
 
@@ -190,11 +192,17 @@
   // Compute inline positions of fragments and boxes.
   LayoutUnit ComputeInlinePositions(NGLogicalLineItems*, LayoutUnit position);
 
-  void ApplyRelativePositioning(const NGConstraintSpace&, NGLogicalLineItems*);
-
+  // |oof_relative_offsets| is an output variable for the accumulated
+  // relative positioning offsets to be applied to OOF positioned descendants.
+  void ApplyRelativePositioning(
+      const NGConstraintSpace&,
+      NGLogicalLineItems*,
+      Vector<LogicalOffset, 32>* oof_relative_offsets);
   // Create box fragments. This function turns a flat list of children into
   // a box tree.
-  void CreateBoxFragments(const NGConstraintSpace&, NGLogicalLineItems*);
+  void CreateBoxFragments(const NGConstraintSpace&,
+                          NGLogicalLineItems*,
+                          Vector<LogicalOffset, 32>* oof_relative_offsets);
 
 #if DCHECK_IS_ON()
   void CheckSame(const NGInlineLayoutStateStack&) const;
@@ -283,7 +291,8 @@
 
     scoped_refptr<const NGLayoutResult> CreateBoxFragment(
         const NGConstraintSpace&,
-        NGLogicalLineItems*);
+        NGLogicalLineItems*,
+        LogicalOffset oof_relative_offset = LogicalOffset());
   };
 
   // Update start/end of the first BoxData found at |index|.
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc
index 94b3f070..f9bdf1e1 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc
@@ -407,15 +407,20 @@
     PlaceRelativePositionedItems(line_box);
 
   // Apply any relative positioned offsets to any boxes (and their children).
-  box_states_->ApplyRelativePositioning(ConstraintSpace(), line_box);
+  Vector<LogicalOffset, 32> oof_relative_offsets(
+      box_states_->NumBoxFragments());
+  box_states_->ApplyRelativePositioning(ConstraintSpace(), line_box,
+                                        &oof_relative_offsets);
 
   // Create box fragments if needed. After this point forward, |line_box| is a
   // tree structure.
   // The individual children don't move position within the |line_box|, rather
   // the children have their layout_result, fragment, (or similar) set to null,
   // creating a "hole" in the array.
-  if (box_states_->HasBoxFragments())
-    box_states_->CreateBoxFragments(ConstraintSpace(), line_box);
+  if (box_states_->HasBoxFragments()) {
+    box_states_->CreateBoxFragments(ConstraintSpace(), line_box,
+                                    &oof_relative_offsets);
+  }
 
   // Update item index of the box states in the context.
   context_->SetItemIndex(line_info->ItemsData().items,
@@ -428,12 +433,8 @@
 
   // Even if we have something in-flow, it may just be empty items that
   // shouldn't trigger creation of a line. Exit now if that's the case.
-  if (line_info->IsEmptyLine()) {
-    container_builder_.SetIsSelfCollapsing();
-    container_builder_.SetIsEmptyLineBox();
-    container_builder_.SetBaseDirection(line_info->BaseDirection());
+  if (line_info->IsEmptyLine())
     return;
-  }
 
   DCHECK(!line_box_metrics.IsEmpty());
 
@@ -458,7 +459,6 @@
 
   if (line_info->UseFirstLineStyle())
     container_builder_.SetStyleVariant(NGStyleVariant::kFirstLine);
-  container_builder_.SetBaseDirection(line_info->BaseDirection());
   if (UNLIKELY(Node().IsTextCombine())) {
     // The effective size of combined text is 1em square[1]
     // [1] https://drafts.csswg.org/css-writing-modes-3/#text-combine-layout
@@ -1219,6 +1219,7 @@
 
     // Success!
     container_builder_.SetBreakToken(line_breaker.CreateBreakToken(line_info));
+    container_builder_.SetBaseDirection(line_info.BaseDirection());
 
     // Propagate any break tokens for floats that we fragmented before or inside
     // to the block container.
@@ -1226,8 +1227,12 @@
          line_breaker.PropagatedBreakTokens())
       context_->PropagateBreakToken(std::move(float_break_token));
 
-    if (is_empty_inline) {
-      DCHECK_EQ(container_builder_.BlockSize(), 0);
+    if (line_info.IsEmptyLine()) {
+      DCHECK_EQ(container_builder_.BlockSize(), LayoutUnit());
+      DCHECK(!container_builder_.BfcBlockOffset());
+
+      container_builder_.SetIsSelfCollapsing();
+      container_builder_.SetIsEmptyLineBox();
 
       // Margins should collapse across "certain zero-height line boxes".
       // https://drafts.csswg.org/css2/box.html#collapsing-margins
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc
index 378fb20..2da16bc 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc
@@ -14,6 +14,7 @@
 #include "third_party/blink/renderer/core/layout/ng/ng_layout_result.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_positioned_float.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_relative_utils.h"
 
 namespace blink {
 
@@ -24,6 +25,8 @@
   oof_positioned_candidates_.Shrink(0);
   unpositioned_list_marker_ = NGUnpositionedListMarker();
 
+  bfc_block_offset_.reset();
+
   size_.inline_size = LayoutUnit();
   metrics_ = FontHeight::Empty();
   line_box_type_ = NGPhysicalLineBoxFragment::kNormalLineBox;
@@ -43,9 +46,15 @@
   for (unsigned index = 0; index < children.size(); ++index) {
     auto& child = children[index];
     if (child.layout_result) {
-      PropagateChildData(child.layout_result->PhysicalFragment(),
-                         child.Offset(),
-                         /* relative_offset */ LogicalOffset());
+      // An accumulated relative offset is applied to an OOF once it reaches its
+      // inline container. Subtract out the relative offset to avoid adding it
+      // twice.
+      PropagateChildData(
+          child.layout_result->PhysicalFragment(),
+          child.Offset() -
+              ComputeRelativeOffsetForInline(*ConstraintSpace(),
+                                             child.PhysicalFragment()->Style()),
+          /* reltaive_offset */ LogicalOffset());
 
       // Skip over any children, the information should have already been
       // propagated into this layout result.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc
index 96e9e97..978a659 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc
@@ -305,12 +305,7 @@
     LayoutUnit containing_block_adjustment,
     const NGContainingBlock<LogicalOffset>* fixedpos_containing_block,
     LogicalOffset additional_fixedpos_offset) {
-  LogicalOffset adjusted_offset = offset + offset_adjustment;
-
-  // The relative offset is already applied for inlines, so don't include it
-  // in the |adjusted_offset|, as well.
-  if (!fragment.IsInlineBox())
-    adjusted_offset += relative_offset;
+  LogicalOffset adjusted_offset = offset + offset_adjustment + relative_offset;
 
   // Collect the child's out of flow descendants.
   const WritingModeConverter converter(GetWritingDirection(), fragment.Size());
@@ -347,6 +342,12 @@
          additional_fixedpos_offset != LogicalOffset()) &&
         node.Style().GetPosition() == EPosition::kFixed) {
       static_position.offset += additional_fixedpos_offset;
+      // Relative offsets should be applied after fragmentation. However, if
+      // there is any relative offset that occurrend before the fixedpos reached
+      // its containing block, that relative offset should be applied to the
+      // static position (before fragmentation).
+      static_position.offset +=
+          relative_offset - fixedpos_containing_block->relative_offset;
       if (fixedpos_containing_block && fixedpos_containing_block->fragment) {
         AddOutOfFlowFragmentainerDescendant(
             {node, static_position, new_inline_container,
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
index 60f36622..359fba0 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
@@ -870,7 +870,7 @@
     const LayoutUnit min_max_percentage_resolution_size =
         node.GetDocument().InQuirksMode()
             ? space.AvailableSize().block_size
-            : space.PercentageResolutionBlockSize();
+            : space.ReplacedPercentageResolutionBlockSize();
 
     block_min_max_sizes = {
         ResolveMinBlockLength(
diff --git a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.cc
index 26b0822..23112e2 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.cc
@@ -142,4 +142,31 @@
   return relative_offset;
 }
 
+LogicalOffset ComputeRelativeOffsetForOOFInInline(
+    const NGConstraintSpace& space,
+    const ComputedStyle& child_style) {
+  if (child_style.GetPosition() != EPosition::kRelative)
+    return LogicalOffset();
+
+  // The confliction resolution rules work based off the block's writing-mode
+  // and direction, not the child's container. E.g.
+  // <span style="direction: rtl;">
+  //   <span style="position: relative; left: 100px; right: -50px;"></span>
+  // </span>
+  // In the above example "left" wins.
+  const WritingDirectionMode writing_direction = space.GetWritingDirection();
+  LogicalOffset relative_offset = ComputeRelativeOffset(
+      child_style, writing_direction, space.AvailableSize());
+
+  // Lines are built in a line-logical coordinate system:
+  // https://drafts.csswg.org/css-writing-modes-3/#line-directions
+  // Reverse the offset direction if we are in a RTL. We skip adjusting for
+  // flipped writing-mode when applying the relative position to an OOF
+  // positioned element.
+  if (writing_direction.IsRtl())
+    relative_offset.inline_offset = -relative_offset.inline_offset;
+
+  return relative_offset;
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
index 64e93af..e6b1bbd6 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
@@ -33,6 +33,10 @@
 ComputeRelativeOffsetForInline(const NGConstraintSpace& space,
                                const ComputedStyle& child_style);
 
+CORE_EXPORT LogicalOffset
+ComputeRelativeOffsetForOOFInInline(const NGConstraintSpace& space,
+                                    const ComputedStyle& child_style);
+
 }  // namespace blink
 
 #endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_RELATIVE_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc b/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc
index 7cb575a..8e26abe7 100644
--- a/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc
+++ b/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h"
 #include "third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h"
+#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h"
 #include "third_party/blink/renderer/core/layout/svg/svg_layout_support.h"
 #include "third_party/blink/renderer/core/layout/svg/svg_resources.h"
 #include "third_party/blink/renderer/core/layout/svg/transformed_hit_test_location.h"
@@ -85,6 +86,7 @@
     return;
 
   SetNeedsTextMetricsUpdate();
+  LayoutSVGResourceContainer::MarkForLayoutAndParentResourceInvalidation(*this);
 }
 
 void LayoutNGSVGText::UpdateFont() {
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc
index 980e0fc..1468774 100644
--- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc
@@ -898,7 +898,7 @@
                                    grid_converter.ToPhysical(table_grid_rect),
                                    border_spacing, column_block_size);
 
-  if (Node().GetDOMNode() && IsA<MathMLElement>(Node().GetDOMNode()) &&
+  if (Node().GetDOMNode() &&
       Node().GetDOMNode()->HasTagName(mathml_names::kMtableTag))
     table_baseline = MathTableBaseline(Style(), block_offset);
   if (table_baseline)
diff --git a/third_party/blink/renderer/core/layout/text_autosizer.cc b/third_party/blink/renderer/core/layout/text_autosizer.cc
index c37fd886..0f2f89c6 100644
--- a/third_party/blink/renderer/core/layout/text_autosizer.cc
+++ b/third_party/blink/renderer/core/layout/text_autosizer.cc
@@ -1266,8 +1266,6 @@
 
   if (multiplier != 1)
     page_info_.has_autosized_ = true;
-
-  layout_object->ClearBaseComputedStyle();
 }
 
 bool TextAutosizer::IsWiderOrNarrowerDescendant(Cluster* cluster) {
diff --git a/third_party/blink/renderer/core/style/build.gni b/third_party/blink/renderer/core/style/build.gni
index 424a49fc..c8cf135 100644
--- a/third_party/blink/renderer/core/style/build.gni
+++ b/third_party/blink/renderer/core/style/build.gni
@@ -60,6 +60,8 @@
   "shape_clip_path_operation.h",
   "shape_value.h",
   "style_aspect_ratio.h",
+  "style_base_data.h",
+  "style_base_data.cc",
   "style_cached_data.h",
   "style_content_alignment_data.h",
   "style_crossfade_image.cc",
diff --git a/third_party/blink/renderer/core/style/computed_style.cc b/third_party/blink/renderer/core/style/computed_style.cc
index 8a53d141..d07b987 100644
--- a/third_party/blink/renderer/core/style/computed_style.cc
+++ b/third_party/blink/renderer/core/style/computed_style.cc
@@ -102,11 +102,13 @@
 struct SameSizeAsComputedStyleBase {
   SameSizeAsComputedStyleBase() {
     base::debug::Alias(&data_refs);
+    base::debug::Alias(&pointers);
     base::debug::Alias(&bitfields);
   }
 
  private:
   void* data_refs[8];
+  void* pointers[1];
   unsigned bitfields[5];
 };
 
@@ -594,6 +596,18 @@
     cached_data_->pseudo_element_styles_->clear();
 }
 
+const ComputedStyle* ComputedStyle::GetBaseComputedStyle() const {
+  if (auto* base_data = BaseData().get())
+    return base_data->GetBaseComputedStyle();
+  return nullptr;
+}
+
+const CSSBitset* ComputedStyle::GetBaseImportantSet() const {
+  if (auto* base_data = BaseData().get())
+    return base_data->GetBaseImportantSet();
+  return nullptr;
+}
+
 bool ComputedStyle::InheritedEqual(const ComputedStyle& other) const {
   return IndependentInheritedEqual(other) &&
          NonIndependentInheritedEqual(other);
@@ -2110,6 +2124,9 @@
 }
 
 void ComputedStyle::SetTextAutosizingMultiplier(float multiplier) {
+  if (TextAutosizingMultiplier() == multiplier)
+    return;
+
   SetTextAutosizingMultiplierInternal(multiplier);
 
   float size = SpecifiedFontSize();
diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h
index 68e0f9c..04a01d2 100644
--- a/third_party/blink/renderer/core/style/computed_style.h
+++ b/third_party/blink/renderer/core/style/computed_style.h
@@ -31,6 +31,7 @@
 #include "base/types/pass_key.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/css/css_property_names.h"
+#include "third_party/blink/renderer/core/css/properties/css_bitset.h"
 #include "third_party/blink/renderer/core/css/properties/css_property.h"
 #include "third_party/blink/renderer/core/css/style_auto_color.h"
 #include "third_party/blink/renderer/core/css/style_color.h"
@@ -396,6 +397,22 @@
       scoped_refptr<const ComputedStyle>) const;
   void ClearCachedPseudoElementStyles() const;
 
+  // If this ComputedStyle is affected by animation/transitions, then the
+  // unanimated "base" style can be retrieved with this function.
+  //
+  // If this function returns nullptr, then this ComputedStyle is not
+  // affected by animations, and *is* the base style.
+  CORE_EXPORT const ComputedStyle* GetBaseComputedStyle() const;
+
+  // Indicates which properties are !important in the base style.
+  CORE_EXPORT const CSSBitset* GetBaseImportantSet() const;
+
+  CORE_EXPORT const ComputedStyle* GetBaseComputedStyleOrThis() const {
+    if (auto* base = GetBaseComputedStyle())
+      return base;
+    return this;
+  }
+
   /**
    * ComputedStyle properties
    *
diff --git a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
index f4e9d49..e1c1fcb 100644
--- a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
+++ b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
@@ -1118,5 +1118,16 @@
       field_group: "*",
       default_value: "false",
     },
+    {
+      name: "BaseData",
+      inherited: false,
+      field_template: "external",
+      type_name: "StyleBaseData",
+      include_paths: ["third_party/blink/renderer/core/style/style_base_data.h"],
+      default_value: "nullptr",
+      wrapper_pointer_name: "scoped_refptr",
+      custom_compare: true,
+      custom_copy: true,
+    },
   ],
 }
diff --git a/third_party/blink/renderer/core/style/style_base_data.cc b/third_party/blink/renderer/core/style/style_base_data.cc
new file mode 100644
index 0000000..476b3a4
--- /dev/null
+++ b/third_party/blink/renderer/core/style/style_base_data.cc
@@ -0,0 +1,14 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/style/style_base_data.h"
+#include "third_party/blink/renderer/core/style/computed_style.h"
+
+namespace blink {
+
+StyleBaseData::StyleBaseData(scoped_refptr<const ComputedStyle> style,
+                             std::unique_ptr<CSSBitset> set)
+    : computed_style_(style), important_set_(std::move(set)) {}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/style/style_base_data.h b/third_party/blink/renderer/core/style/style_base_data.h
new file mode 100644
index 0000000..eb547b19
--- /dev/null
+++ b/third_party/blink/renderer/core/style/style_base_data.h
@@ -0,0 +1,54 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_STYLE_BASE_DATA_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_STYLE_BASE_DATA_H_
+
+#include "third_party/blink/renderer/core/css/properties/css_bitset.h"
+#include "third_party/blink/renderer/platform/wtf/forward.h"
+#include "third_party/blink/renderer/platform/wtf/ref_counted.h"
+
+namespace blink {
+
+class ComputedStyle;
+
+class CORE_EXPORT StyleBaseData : public RefCounted<StyleBaseData> {
+  USING_FAST_MALLOC(StyleBaseData);
+
+ public:
+  static scoped_refptr<StyleBaseData> Create(
+      scoped_refptr<const ComputedStyle> style,
+      std::unique_ptr<CSSBitset> important_set) {
+    return base::AdoptRef(new StyleBaseData(style, std::move(important_set)));
+  }
+
+  const ComputedStyle* GetBaseComputedStyle() const {
+    return computed_style_.get();
+  }
+  const CSSBitset* GetBaseImportantSet() const { return important_set_.get(); }
+
+ private:
+  StyleBaseData(scoped_refptr<const ComputedStyle>, std::unique_ptr<CSSBitset>);
+
+  scoped_refptr<const ComputedStyle> computed_style_;
+
+  // Keeps track of the !important declarations used to build the base
+  // computed style. These declarations must not be overwritten by animation
+  // effects, hence we have to disable the base computed style optimization when
+  // !important declarations conflict with active animations.
+  //
+  // If there were no !important declarations in the base style, this field
+  // will be nullptr.
+  //
+  // TODO(andruud): We should be able to simply skip applying the animation
+  // for properties in this set instead of disabling the optimization.
+  // However, we currently need the cascade to handle the case where
+  // an !important declaration appears in a :visited selector.
+  // See https://crbug.com/1062217.
+  std::unique_ptr<CSSBitset> important_set_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_STYLE_BASE_DATA_H_
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc
index 92efd0f0..ea6c949a 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc
@@ -48,7 +48,7 @@
 // DoublePoint & DoubleRect instead of FloatPoint & FloatRect.
 
 void CanvasPath::closePath() {
-  if (path_.IsEmpty())
+  if (UNLIKELY(path_.IsEmpty()))
     return;
   path_.CloseSubpath();
 }
@@ -56,9 +56,9 @@
 void CanvasPath::moveTo(double double_x, double double_y) {
   float x = base::saturated_cast<float>(double_x);
   float y = base::saturated_cast<float>(double_y);
-  if (!std::isfinite(x) || !std::isfinite(y))
+  if (UNLIKELY(!std::isfinite(x) || !std::isfinite(y)))
     return;
-  if (!IsTransformInvertible()) {
+  if (UNLIKELY(!IsTransformInvertible())) {
     path_.MoveTo(GetTransform().MapPoint(FloatPoint(x, y)));
     return;
   }
@@ -68,15 +68,15 @@
 void CanvasPath::lineTo(double double_x, double double_y) {
   float x = base::saturated_cast<float>(double_x);
   float y = base::saturated_cast<float>(double_y);
-  if (!std::isfinite(x) || !std::isfinite(y))
+  if (UNLIKELY(!std::isfinite(x) || !std::isfinite(y)))
     return;
   FloatPoint p1 = FloatPoint(x, y);
 
-  if (!IsTransformInvertible()) {
+  if (UNLIKELY(!IsTransformInvertible())) {
     p1 = GetTransform().MapPoint(p1);
   }
 
-  if (!path_.HasCurrentPoint())
+  if (UNLIKELY(!path_.HasCurrentPoint()))
     path_.MoveTo(p1);
 
   path_.AddLineTo(p1);
@@ -91,18 +91,18 @@
   float x = base::saturated_cast<float>(double_x);
   float y = base::saturated_cast<float>(double_y);
 
-  if (!std::isfinite(cpx) || !std::isfinite(cpy) || !std::isfinite(x) ||
-      !std::isfinite(y))
+  if (UNLIKELY(!std::isfinite(cpx) || !std::isfinite(cpy) ||
+               !std::isfinite(x) || !std::isfinite(y)))
     return;
   FloatPoint p1 = FloatPoint(x, y);
   FloatPoint cp = FloatPoint(cpx, cpy);
 
-  if (!IsTransformInvertible()) {
+  if (UNLIKELY(!IsTransformInvertible())) {
     p1 = GetTransform().MapPoint(p1);
     cp = GetTransform().MapPoint(cp);
   }
 
-  if (!path_.HasCurrentPoint())
+  if (UNLIKELY(!path_.HasCurrentPoint()))
     path_.MoveTo(FloatPoint(cpx, cpy));
 
   path_.AddQuadCurveTo(cp, p1);
@@ -120,20 +120,21 @@
   float cp2y = base::saturated_cast<float>(double_cp2y);
   float x = base::saturated_cast<float>(double_x);
   float y = base::saturated_cast<float>(double_y);
-  if (!std::isfinite(cp1x) || !std::isfinite(cp1y) || !std::isfinite(cp2x) ||
-      !std::isfinite(cp2y) || !std::isfinite(x) || !std::isfinite(y))
+  if (UNLIKELY(!std::isfinite(cp1x) || !std::isfinite(cp1y) ||
+               !std::isfinite(cp2x) || !std::isfinite(cp2y) ||
+               !std::isfinite(x) || !std::isfinite(y)))
     return;
 
   FloatPoint p1 = FloatPoint(x, y);
   FloatPoint cp1 = FloatPoint(cp1x, cp1y);
   FloatPoint cp2 = FloatPoint(cp2x, cp2y);
 
-  if (!IsTransformInvertible()) {
+  if (UNLIKELY(!IsTransformInvertible())) {
     p1 = GetTransform().MapPoint(p1);
     cp1 = GetTransform().MapPoint(cp1);
     cp2 = GetTransform().MapPoint(cp2);
   }
-  if (!path_.HasCurrentPoint())
+  if (UNLIKELY(!path_.HasCurrentPoint()))
     path_.MoveTo(FloatPoint(cp1x, cp1y));
 
   path_.AddBezierCurveTo(cp1, cp2, p1);
@@ -150,11 +151,11 @@
   float x2 = base::saturated_cast<float>(double_x2);
   float y2 = base::saturated_cast<float>(double_y2);
   float r = base::saturated_cast<float>(double_r);
-  if (!std::isfinite(x1) || !std::isfinite(y1) || !std::isfinite(x2) ||
-      !std::isfinite(y2) || !std::isfinite(r))
+  if (UNLIKELY(!std::isfinite(x1) || !std::isfinite(y1) || !std::isfinite(x2) ||
+               !std::isfinite(y2) || !std::isfinite(r)))
     return;
 
-  if (r < 0) {
+  if (UNLIKELY(r < 0)) {
     exception_state.ThrowDOMException(
         DOMExceptionCode::kIndexSizeError,
         "The radius provided (" + String::Number(r) + ") is negative.");
@@ -164,14 +165,14 @@
   FloatPoint p1 = FloatPoint(x1, y1);
   FloatPoint p2 = FloatPoint(x2, y2);
 
-  if (!IsTransformInvertible()) {
+  if (UNLIKELY(!IsTransformInvertible())) {
     p1 = GetTransform().MapPoint(p1);
     p2 = GetTransform().MapPoint(p2);
   }
 
-  if (!path_.HasCurrentPoint())
+  if (UNLIKELY(!path_.HasCurrentPoint()))
     path_.MoveTo(p1);
-  else if (p1 == path_.CurrentPoint() || p1 == p2 || !r)
+  else if (UNLIKELY(p1 == path_.CurrentPoint() || p1 == p2 || !r))
     lineTo(x1, y1);
   else
     path_.AddArcTo(p1, p2, r);
@@ -309,7 +310,7 @@
   // arc.
   LineToFloatPoint(path, center + rotation_matrix.MapPoint(GetPointOnEllipse(
                                       radius_x, radius_y, start_angle)));
-  if ((!radius_x && !radius_y) || start_angle == end_angle)
+  if (UNLIKELY((!radius_x && !radius_y) || start_angle == end_angle))
     return;
 
   if (!anticlockwise) {
@@ -350,21 +351,22 @@
   float radius = base::saturated_cast<float>(double_radius);
   float start_angle = base::saturated_cast<float>(double_start_angle);
   float end_angle = base::saturated_cast<float>(double_end_angle);
-  if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(radius) ||
-      !std::isfinite(start_angle) || !std::isfinite(end_angle))
+  if (UNLIKELY(!std::isfinite(x) || !std::isfinite(y) ||
+               !std::isfinite(radius) || !std::isfinite(start_angle) ||
+               !std::isfinite(end_angle)))
     return;
 
-  if (radius < 0) {
+  if (UNLIKELY(radius < 0)) {
     exception_state.ThrowDOMException(
         DOMExceptionCode::kIndexSizeError,
         "The radius provided (" + String::Number(radius) + ") is negative.");
     return;
   }
 
-  if (!IsTransformInvertible())
+  if (UNLIKELY(!IsTransformInvertible()))
     return;
 
-  if (!radius || start_angle == end_angle) {
+  if (UNLIKELY(!radius || start_angle == end_angle)) {
     // The arc is empty but we still need to draw the connecting line.
     lineTo(x + radius * cosf(start_angle), y + radius * sinf(start_angle));
     return;
@@ -391,19 +393,20 @@
   float rotation = base::saturated_cast<float>(double_rotation);
   float start_angle = base::saturated_cast<float>(double_start_angle);
   float end_angle = base::saturated_cast<float>(double_end_angle);
-  if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(radius_x) ||
-      !std::isfinite(radius_y) || !std::isfinite(rotation) ||
-      !std::isfinite(start_angle) || !std::isfinite(end_angle))
+  if (UNLIKELY(!std::isfinite(x) || !std::isfinite(y) ||
+               !std::isfinite(radius_x) || !std::isfinite(radius_y) ||
+               !std::isfinite(rotation) || !std::isfinite(start_angle) ||
+               !std::isfinite(end_angle)))
     return;
 
-  if (radius_x < 0) {
+  if (UNLIKELY(radius_x < 0)) {
     exception_state.ThrowDOMException(DOMExceptionCode::kIndexSizeError,
                                       "The major-axis radius provided (" +
                                           String::Number(radius_x) +
                                           ") is negative.");
     return;
   }
-  if (radius_y < 0) {
+  if (UNLIKELY(radius_y < 0)) {
     exception_state.ThrowDOMException(DOMExceptionCode::kIndexSizeError,
                                       "The minor-axis radius provided (" +
                                           String::Number(radius_y) +
@@ -411,13 +414,13 @@
     return;
   }
 
-  if (!IsTransformInvertible())
+  if (UNLIKELY(!IsTransformInvertible()))
     return;
 
   CanonicalizeAngle(&start_angle, &end_angle);
   float adjusted_end_angle =
       AdjustEndAngle(start_angle, end_angle, anticlockwise);
-  if (!radius_x || !radius_y || start_angle == adjusted_end_angle) {
+  if (UNLIKELY(!radius_x || !radius_y || start_angle == adjusted_end_angle)) {
     // The ellipse is empty but we still need to draw the connecting line to
     // start point.
     DegenerateEllipse(this, x, y, radius_x, radius_y, rotation, start_angle,
@@ -437,11 +440,11 @@
   float y = base::saturated_cast<float>(double_y);
   float width = base::saturated_cast<float>(double_width);
   float height = base::saturated_cast<float>(double_height);
-  if (!IsTransformInvertible())
+  if (UNLIKELY(!IsTransformInvertible()))
     return;
 
-  if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(width) ||
-      !std::isfinite(height))
+  if (UNLIKELY(!std::isfinite(x) || !std::isfinite(y) ||
+               !std::isfinite(width) || !std::isfinite(height)))
     return;
 
   path_.AddRect(FloatRect(x, y, width, height));
@@ -455,7 +458,7 @@
     const HeapVector<Member<V8UnionDOMPointInitOrUnrestrictedDouble>>& radii,
     ExceptionState& exception_state) {
   const int num_radii = radii.size();
-  if (num_radii < 1 || num_radii > 4) {
+  if (UNLIKELY(num_radii < 1 || num_radii > 4)) {
     exception_state.ThrowRangeError(
         String::Number(num_radii) +
         " radii provided. Between one and four radii are necessary.");
@@ -465,11 +468,11 @@
   float y = base::saturated_cast<float>(double_y);
   float width = base::saturated_cast<float>(double_width);
   float height = base::saturated_cast<float>(double_height);
-  if (!IsTransformInvertible())
+  if (UNLIKELY(!IsTransformInvertible()))
     return;
 
-  if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(width) ||
-      !std::isfinite(height))
+  if (UNLIKELY(!std::isfinite(x) || !std::isfinite(y) ||
+               !std::isfinite(width) || !std::isfinite(height)))
     return;
 
   FloatSize r[num_radii];
diff --git a/third_party/blink/renderer/modules/webgpu/gpu.cc b/third_party/blink/renderer/modules/webgpu/gpu.cc
index fbb3d08..ab48663 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu.cc
@@ -7,9 +7,12 @@
 #include <utility>
 
 #include "gpu/command_buffer/client/webgpu_interface.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h"
 #include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
 #include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
+#include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
+#include "third_party/blink/public/mojom/gpu/gpu.mojom-blink.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/web_graphics_context_3d_provider.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
@@ -72,6 +75,20 @@
     context_provider = CreateContextProviderOnMainThread(url);
   }
 
+  // Note that we check for API blocking *after* creating the context. This is
+  // because context creation synchronizes against GpuProcessHost lifetime in
+  // the browser process, and GpuProcessHost destruction is what updates API
+  // blocking state on a GPU process crash. See https://crbug.com/1215907#c10
+  // for more details.
+  bool blocked = true;
+  mojo::Remote<mojom::blink::GpuDataManager> gpu_data_manager;
+  Platform::Current()->GetBrowserInterfaceBroker()->GetInterface(
+      gpu_data_manager.BindNewPipeAndPassReceiver());
+  gpu_data_manager->Are3DAPIsBlockedForUrl(url, &blocked);
+  if (blocked) {
+    return nullptr;
+  }
+
   // TODO(kainino): we will need a better way of accessing the GPU interface
   // from multiple threads than BindToCurrentThread et al.
   if (context_provider && !context_provider->BindToCurrentThread()) {
diff --git a/third_party/blink/renderer/platform/loader/fetch/cached_metadata.cc b/third_party/blink/renderer/platform/loader/fetch/cached_metadata.cc
index e0879d1..04141eb 100644
--- a/third_party/blink/renderer/platform/loader/fetch/cached_metadata.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/cached_metadata.cc
@@ -62,12 +62,7 @@
   DCHECK(data_type_id);
   DCHECK(data);
 
-  vector_.ReserveInitialCapacity(kCachedMetaDataStart + size);
-  uint32_t marker = CachedMetadataHandler::kSingleEntry;
-  vector_.Append(reinterpret_cast<const uint8_t*>(&marker), sizeof(uint32_t));
-  vector_.Append(reinterpret_cast<const uint8_t*>(&data_type_id),
-                 sizeof(uint32_t));
-  vector_.Append(data, size);
+  vector_ = CachedMetadata::GetSerializedData(data_type_id, data, size);
 }
 
 CachedMetadata::CachedMetadata(mojo_base::BigBuffer data) {
diff --git a/third_party/blink/renderer/platform/loader/fetch/cached_metadata.h b/third_party/blink/renderer/platform/loader/fetch/cached_metadata.h
index 66b6bda..9b58818d 100644
--- a/third_party/blink/renderer/platform/loader/fetch/cached_metadata.h
+++ b/third_party/blink/renderer/platform/loader/fetch/cached_metadata.h
@@ -34,6 +34,7 @@
 #include <stdint.h>
 #include "base/memory/scoped_refptr.h"
 #include "mojo/public/cpp/base/big_buffer.h"
+#include "third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
@@ -62,6 +63,20 @@
         new CachedMetadata(data_type_id, data, SafeCast<wtf_size_t>(size)));
   }
 
+  static Vector<uint8_t> GetSerializedData(uint32_t data_type_id,
+                                           const uint8_t* data,
+                                           size_t size) {
+    Vector<uint8_t> vector;
+    vector.ReserveInitialCapacity(kCachedMetaDataStart +
+                                  SafeCast<wtf_size_t>(size));
+    uint32_t marker = CachedMetadataHandler::kSingleEntry;
+    vector.Append(reinterpret_cast<const uint8_t*>(&marker), sizeof(uint32_t));
+    vector.Append(reinterpret_cast<const uint8_t*>(&data_type_id),
+                  sizeof(uint32_t));
+    vector.Append(data, SafeCast<wtf_size_t>(size));
+    return vector;
+  }
+
   static scoped_refptr<CachedMetadata> CreateFromSerializedData(
       const uint8_t* data,
       size_t);
diff --git a/third_party/blink/tools/blinkpy/common/config/builders.json b/third_party/blink/tools/blinkpy/common/config/builders.json
index 2d28e48..e22e3d6 100644
--- a/third_party/blink/tools/blinkpy/common/config/builders.json
+++ b/third_party/blink/tools/blinkpy/common/config/builders.json
@@ -14,6 +14,11 @@
         "port_name": "linux-trusty",
         "specifiers": ["Trusty", "Debug"]
     },
+    "Mac10.12 Tests": {
+        "master": "chromium.mac",
+        "port_name": "mac-mac10.12",
+        "specifiers": ["Mac10.12", "Release"]
+    },
     "Mac10.13 Tests": {
         "master": "chromium.mac",
         "port_name": "mac-mac10.13",
@@ -84,6 +89,12 @@
         "has_webdriver_tests": true,
         "is_try_builder": true
     },
+    "mac10.12-blink-rel": {
+        "master": "tryserver.blink",
+        "port_name": "mac-mac10.12",
+        "specifiers": ["Mac10.12", "Release"],
+        "is_try_builder": true
+    },
     "mac10.13-blink-rel": {
         "master": "tryserver.blink",
         "port_name": "mac-mac10.13",
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 b268976..fb073475 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
@@ -930,6 +930,7 @@
             'third_party/blink/renderer/core/execution_context/execution_context.cc',
             'third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.h',
             'third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.cc',
+            'third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc',
         ],
         'allowed': [
             # TODO(mythria): Allow use of non-blink mojo interface. Once
diff --git a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/OWNERS b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/OWNERS
new file mode 100644
index 0000000..428f610
--- /dev/null
+++ b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/OWNERS
@@ -0,0 +1 @@
+bsheedy@chromium.org
diff --git a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/__init__.py b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/__init__.py
diff --git a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/remove_stale_expectations.py b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/remove_stale_expectations.py
new file mode 100644
index 0000000..ffa6fd7
--- /dev/null
+++ b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/remove_stale_expectations.py
@@ -0,0 +1,85 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import argparse
+import logging
+import sys
+
+assert sys.version_info[0] == 3
+
+
+def ParseArgs():
+    parser = argparse.ArgumentParser(description=(
+        'Script for finding cases of stale expectations that can be '
+        'removed/modified.'))
+    parser.add_argument('--large-query-mode',
+                        action='store_true',
+                        default=False,
+                        help=('Run the script in large query mode. This '
+                              'incurs a significant performance hit, but '
+                              'allows the use of larger sample sizes by '
+                              'working around a hard memory limit in '
+                              'BigQuery.'))
+    parser.add_argument('--project',
+                        default='chrome-unexpected-pass-data',
+                        help=('The billing project to use for BigQuery '
+                              'queries. Must have access to the ResultDB BQ '
+                              'tables, e.g. "chrome-luci-data.chromium.'
+                              'blink_web_testes_ci_results".'))
+    parser.add_argument('--num-samples',
+                        type=int,
+                        default=100,
+                        help='The number of recent builds to query.')
+    parser.add_argument('--output-format',
+                        choices=['html', 'print'],
+                        default='html',
+                        help='How to output script results.')
+    parser.add_argument('--remove-stale-expectations',
+                        action='store_true',
+                        default=False,
+                        help=('Automatically remove any expectations that are '
+                              'determined to be stale from the expectation '
+                              'files.'))
+    parser.add_argument('-v',
+                        '--verbose',
+                        action='count',
+                        default=0,
+                        help=('Increase logging verbosity, can be passed '
+                              'multiple times.'))
+    parser.add_argument('-q',
+                        '--quiet',
+                        action='store_true',
+                        default=False,
+                        help='Disable logging for non-errors.')
+
+    args = parser.parse_args()
+    if args.quiet:
+        args.verbose = -1
+    SetLoggingVerbosity(args.verbose)
+
+    return args
+
+
+def SetLoggingVerbosity(verbosity_level):
+    if verbosity_level == -1:
+        level = logging.ERROR
+    elif verbosity_level == 0:
+        level = logging.WARNING
+    elif verbosity_level == 1:
+        level = logging.INFO
+    else:
+        level = logging.DEBUG
+    logging.getLogger().setLevel(level)
+
+
+def main():
+    args = ParseArgs()
+    raise RuntimeError(
+        'Script is still under active development and not currently functional'
+    )
+    return 0
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/third_party/blink/tools/remove_stale_expectations.py b/third_party/blink/tools/remove_stale_expectations.py
new file mode 100755
index 0000000..79fec6b
--- /dev/null
+++ b/third_party/blink/tools/remove_stale_expectations.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env vpython3
+# Copyright 2021 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.
+
+from blinkpy.web_tests.stale_expectation_removal import (
+    remove_stale_expectations)
+
+import sys
+
+if __name__ == '__main__':
+    rc = remove_stale_expectations.main()
+    sys.exit(rc)
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 414e7d6..49f975d 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1069,6 +1069,7 @@
 virtual/layout_ng_block_frag/external/wpt/css/css-break/out-of-flow-in-multicolumn-063.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-break/out-of-flow-in-multicolumn-065.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-break/out-of-flow-in-multicolumn-066.html [ Pass ]
+virtual/layout_ng_block_frag/external/wpt/css/css-break/out-of-flow-in-multicolumn-073.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-break/overflow-clip-000.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-break/overflow-clip-001.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-break/overflowed-block-with-no-room-after-000.html [ Pass ]
@@ -3821,6 +3822,7 @@
 crbug.com/829028 external/wpt/css/css-break/out-of-flow-in-multicolumn-063.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-break/out-of-flow-in-multicolumn-065.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-break/out-of-flow-in-multicolumn-066.html [ Failure ]
+crbug.com/829028 external/wpt/css/css-break/out-of-flow-in-multicolumn-073.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-break/overflow-clip-000.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-break/overflow-clip-001.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-break/overflowed-block-with-no-room-after-001.html [ Failure ]
@@ -4122,7 +4124,6 @@
 crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/modify-transferred-listitem-different-attr.html [ Failure ]
 crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text.html [ Failure ]
 crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration.html [ Failure ]
-crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-mask-update.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-match-svg.html [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale.html [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-viewbox-rescale.html [ Failure ]
@@ -6045,9 +6046,6 @@
 # Sheriff 2020-08-03
 crbug.com/1106429 virtual/percent-based-scrolling/max-percent-delta-page-zoom.html [ Failure Pass ]
 
-# Flaky test
-crbug.com/1112778 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url-worker.sub.html [ Failure Pass ]
-
 # Sheriff 2020-08-05
 crbug.com/1113050 fast/borders/border-radius-mask-video-ratio.html [ Failure Pass ]
 crbug.com/1113127 fast/canvas/downsample-quality.html [ Crash Failure Pass ]
diff --git a/third_party/blink/web_tests/WebGPUExpectations b/third_party/blink/web_tests/WebGPUExpectations
index 53be6ef..55e7c95 100644
--- a/third_party/blink/web_tests/WebGPUExpectations
+++ b/third_party/blink/web_tests/WebGPUExpectations
@@ -19,6 +19,9 @@
 # external/wpt/webgpu/cts.html, as the latter is not run.
 # ****************************************************************************
 
+# Workaround page loaded when content_shell starts, but not run as a test.
+crbug.com/1231599 wpt_internal/webgpu/000_run_me_first.html [ Skip ]
+
 ###
 ### Slow tests. Please prefer to split tests rather than adding to this section.
 ###
@@ -133,9 +136,6 @@
 ### Platform-independent failures
 ###
 
-# This test runs first, and is often slow due to some browser startup not being complete.
-crbug.com/953991 wpt_internal/webgpu/000_run_me_first.html [ Slow ]
-
 crbug.com/dawn/999 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,buffers,map_oom:mappedAtCreation,smaller_getMappedRange:* [ Failure ]
 crbug.com/dawn/999 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,buffers,map_oom:mappedAtCreation,full_getMappedRange:* [ Failure ]
 
diff --git a/third_party/blink/web_tests/android/ChromeWPTOverrideExpectations b/third_party/blink/web_tests/android/ChromeWPTOverrideExpectations
index 3318d83..cea7580 100644
--- a/third_party/blink/web_tests/android/ChromeWPTOverrideExpectations
+++ b/third_party/blink/web_tests/android/ChromeWPTOverrideExpectations
@@ -1054,7 +1054,6 @@
 crbug.com/1050754 external/wpt/idle-detection/idle-detection-default-feature-policy.https.sub.html [ Failure ]
 crbug.com/1050754 external/wpt/import-maps/data-driven/parsing-internal.https.html [ Failure ]
 crbug.com/1050754 external/wpt/import-maps/data-driven/resolving-internal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-retargeting-iframe.tentative.html [ Failure Pass ]
 crbug.com/1050754 external/wpt/inert/inert-retargeting.tentative.html [ Failure ]
 crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception-following-subtest.html [ Failure ]
 crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations b/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
index a2a7b8f..a3449cab 100644
--- a/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
+++ b/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
@@ -1138,7 +1138,6 @@
 crbug.com/1050754 external/wpt/idle-detection/idle-detection-default-feature-policy.https.sub.html [ Failure ]
 crbug.com/1050754 external/wpt/import-maps/data-driven/parsing-internal.https.html [ Failure ]
 crbug.com/1050754 external/wpt/import-maps/data-driven/resolving-internal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-retargeting-iframe.tentative.html [ Failure ]
 crbug.com/1050754 external/wpt/inert/inert-retargeting.tentative.html [ Failure ]
 crbug.com/1050754 external/wpt/infrastructure/assumptions/non-local-ports.sub.window.html [ Timeout ]
 crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception-following-subtest.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebviewWPTExpectations b/third_party/blink/web_tests/android/WebviewWPTExpectations
index 044297b4..2111960 100644
--- a/third_party/blink/web_tests/android/WebviewWPTExpectations
+++ b/third_party/blink/web_tests/android/WebviewWPTExpectations
@@ -3114,7 +3114,6 @@
 crbug.com/1050754 external/wpt/inert/inert-node-is-unfocusable.tentative.html [ Failure ]
 crbug.com/1050754 external/wpt/inert/inert-node-is-unselectable.tentative.html [ Failure ]
 crbug.com/1050754 external/wpt/inert/inert-on-slots.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-retargeting-iframe.tentative.html [ Failure ]
 crbug.com/1050754 external/wpt/inert/inert-retargeting.tentative.html [ Failure ]
 crbug.com/1050754 external/wpt/infrastructure/assumptions/allowed-to-play.html [ Failure ]
 crbug.com/1050754 external/wpt/infrastructure/expected-fail/failing-test.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-044.html b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-044.html
index 4c2b9c9..d06f404 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-044.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-044.html
@@ -11,7 +11,7 @@
     column-gap: 0px;
     height: 100px;
     width: 100px;
-    margin-left: -50px;
+    margin-left: -200px;
     margin-top: -50px;
   }
   .rel {
@@ -30,7 +30,8 @@
 <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
 <div class="multicol">
   <div class="rel" style="top: 50px; left: 50px;">
-    <div style="transform: translateX(0); height: 200px; background: red;">
+    <div style="transform: translateX(0); height: 200px;">
+      <div class="abs" style="width: 50px; height: 200px; top: 100px; left: 100px; background: red;"></div>
       <div class="rel" style="top: 100px; left: 100px;">
         <div class="abs">
           <div class="abs">
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-073.html b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-073.html
new file mode 100644
index 0000000..57093e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-073.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<title>
+  Nested fixedpos should be affected by relative positioned offset.
+</title>
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#abspos-breaking">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<style>
+  .multicol {
+    columns: 2;
+    column-fill: auto;
+    height: 100px;
+    width: 100px;
+    column-gap: 0px;
+    margin-top: -100px;
+    margin-left: -150px;
+  }
+  .box {
+    width: 50px;
+    height: 200px;
+  }
+  .fixed {
+    position: fixed;
+    background: green;
+  }
+  .abs {
+    position: absolute;
+  }
+  .rel {
+    position: relative;
+    top: 100px;
+    left: 50px;
+  }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="multicol">
+  <div class="rel" style="transform: translateX(0);">
+    <div class="abs box" style="background: red; top: 100px; left: 50px;"></div>
+    <div class="rel">
+      <div class="abs">
+        <div class="fixed box"></div>
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-ltr-in-multicol.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-ltr-in-multicol.html
index 173ba5a7..45de6ff 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-ltr-in-multicol.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-ltr-in-multicol.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-rtl-in-multicol.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-rtl-in-multicol.tentative.html
index dc9daf48..9cb6c26 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-rtl-in-multicol.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-ltr-rtl-in-multicol.tentative.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-ltr-in-multicol.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-ltr-in-multicol.tentative.html
index 8b30512..5a09498 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-ltr-in-multicol.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-ltr-in-multicol.tentative.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-rtl-in-multicol.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-rtl-in-multicol.html
index 6e9702f6..e7c4088 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-rtl-in-multicol.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vlr-rtl-rtl-in-multicol.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-ltr-in-multicol.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-ltr-in-multicol.html
index 8ceae51..ae5059ce 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-ltr-in-multicol.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-ltr-in-multicol.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-rtl-in-multicol.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-rtl-in-multicol.tentative.html
index 9d2ef3d7..44bf087 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-rtl-in-multicol.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-ltr-rtl-in-multicol.tentative.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-ltr-in-multicol.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-ltr-in-multicol.tentative.html
index 871d755..3cf8e67 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-ltr-in-multicol.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-ltr-in-multicol.tentative.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-rtl-in-multicol.html b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-rtl-in-multicol.html
index e239dc5..a13f1cf3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-rtl-in-multicol.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/multicol/static-position/vrl-rtl-rtl-in-multicol.html
@@ -21,7 +21,11 @@
     inline-size: 160px;
   }
   .red { color: red; }
-  .cb { position: relative; }
+  .cb {
+    position: relative;
+    inset-block-start: 15px;
+    inset-inline-start: 20px;
+  }
   .rtl { direction: rtl; }
   .ltr { direction: ltr; }
   .inline { display: inline; }
@@ -41,6 +45,7 @@
   <div class="container rtl">
     X<span class="rtl cb">X<div class="abs inline">XX</div><span class="red">XX</span></span>
   </div>
+
   <div class="container rtl">
     X<span class="rtl cb">X<div class="abs block">XX</div><br><span class="red">XX</span></span>
   </div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-ltr.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-ltr.html
index aa929a7b..992bb72 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-ltr.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-ltr.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-rtl.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-rtl.tentative.html
index c423d18..9491fb8 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-rtl.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ltr-rtl.tentative.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ref.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ref.html
index 2dc2012..2ab92decd 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-ref.html
@@ -7,6 +7,7 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 
 .large { width: 32px; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-ltr.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-ltr.tentative.html
index 1a0ab00..e334ff7 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-ltr.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-ltr.tentative.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-rtl.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-rtl.html
index ead69bb..45c8aa3c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-rtl.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vlr-rtl-rtl.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-ltr.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-ltr.html
index e22bf64..9e3c1306 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-ltr.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-ltr.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-rtl.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-rtl.tentative.html
index f38a90b..a0923f3b 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-rtl.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ltr-rtl.tentative.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ref.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ref.html
index 31be2b5..5e607dbb 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-ref.html
@@ -7,6 +7,7 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 
 .large { width: 32px; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-ltr.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-ltr.tentative.html
index bf95d6bd5..29ae6a5f 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-ltr.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-ltr.tentative.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-rtl.html b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-rtl.html
index c341531..cfb4118 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-rtl.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/static-position/vrl-rtl-rtl.html
@@ -13,9 +13,14 @@
   border: solid black 3px;
   height: 400px;
   margin: 0 16px;
+  padding: 2px;
 }
 .red { color: red; }
-.cb { position: relative; }
+.cb {
+  position: relative;
+  inset-block-start: 2px;
+  inset-inline-start: 2px;
+}
 .rtl { direction: rtl; }
 .ltr { direction: ltr; }
 .inline { display: inline; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/percent-height-replaced-in-percent-cell-002.html b/third_party/blink/web_tests/external/wpt/css/css-tables/percent-height-replaced-in-percent-cell-002.html
new file mode 100644
index 0000000..78d4b0b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-tables/percent-height-replaced-in-percent-cell-002.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="help" href="http://crbug.com/1234300">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="display: table-cell; height: 100px; line-height: 0;">
+  <canvas width=200 height=200 style="background: green; max-height: 100%;"></canvas>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/inert/inert-retargeting-iframe.tentative.html b/third_party/blink/web_tests/external/wpt/inert/inert-retargeting-iframe.tentative.html
index d363adc..579fc57b 100644
--- a/third_party/blink/web_tests/external/wpt/inert/inert-retargeting-iframe.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/inert/inert-retargeting-iframe.tentative.html
@@ -136,7 +136,7 @@
 
 function movePointerTo(x, y) {
   return new test_driver.Actions()
-      .pointerMove(x, y, { origin: "viewport" })
+      .pointerMove(Math.ceil(x), Math.ceil(y), { origin: "viewport" })
       .send();
 }
 
@@ -155,7 +155,7 @@
         step_timeout(() => {
           element.removeEventListener(event, f, { capture: true });
           reject("did not get " + event + " on " + element.id);
-        }, 1000);
+        }, 5000);
       });
       promises.push(promise);
     })(event, element);
diff --git a/third_party/blink/web_tests/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container-expected.txt b/third_party/blink/web_tests/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container-expected.txt
new file mode 100644
index 0000000..6378c8e
--- /dev/null
+++ b/third_party/blink/web_tests/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container-expected.txt
@@ -0,0 +1,6 @@
+Test CSS.getQueryingDescendantsForContainer method for container query containers
+Are the returned nodes the expected descendants for #container-unnamed?
+false
+Are the returned nodes the expected descendants for #container-named?
+false
+
diff --git a/third_party/blink/web_tests/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container.js b/third_party/blink/web_tests/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container.js
new file mode 100644
index 0000000..092fb0e
--- /dev/null
+++ b/third_party/blink/web_tests/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container.js
@@ -0,0 +1,39 @@
+(async function (testRunner) {
+  const { dp } = await testRunner.startURL(
+    '../resources/dom-get-querying-descendants-for-container.html',
+    'Test CSS.getQueryingDescendantsForContainer method for container query containers');
+  await dp.DOM.enable();
+
+  const documentResponse = await dp.DOM.getDocument();
+  const documentNodeId = documentResponse.result.root.nodeId;
+
+  const testQueryingDescendantsResult = async (containerSelector, descendantsSelector) => {
+    // Test unnamed container query descendants.
+    const containerSelectorResponse = await dp.DOM.querySelector({nodeId: documentNodeId, selector: containerSelector});
+    const containerNodeId = containerSelectorResponse.result.nodeId;
+
+    const descendantsQuerySelectorResponse = await dp.DOM.querySelectorAll({nodeId: documentNodeId, selector: descendantsSelector});
+    const expectedDescendants = new Set(descendantsQuerySelectorResponse.result.nodeIds);
+
+    const getQueryingDescendantsResponse = await dp.DOM.getQueryingDescendantsForContainer({
+      nodeId: containerNodeId,
+    });
+
+    const queryingDescendants = getQueryingDescendantsResponse.result.nodeIds;
+    if (!queryingDescendants) {
+      testRunner.completeTest();
+      return;
+    }
+
+    testRunner.log(`Are the returned nodes the expected descendants for ${containerSelector}?`);
+    testRunner.log(
+      queryingDescendants.length === expectedDescendants.size &&
+      queryingDescendants.every(nodeId => expectedDescendants.has(nodeId))
+    );
+  }
+
+  await testQueryingDescendantsResult('#container-unnamed', '.desc-unnamed');
+  await testQueryingDescendantsResult('#container-named', '.desc-named');
+
+  testRunner.completeTest();
+});
diff --git a/third_party/blink/web_tests/inspector-protocol/dom/resources/dom-get-querying-descendants-for-container.html b/third_party/blink/web_tests/inspector-protocol/dom/resources/dom-get-querying-descendants-for-container.html
new file mode 100644
index 0000000..76b3562
--- /dev/null
+++ b/third_party/blink/web_tests/inspector-protocol/dom/resources/dom-get-querying-descendants-for-container.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<style>
+#container-unnamed {
+  container-type: inline-size block-size;
+  width: 100px;
+  height: 100px;
+}
+
+#container-named {
+  container-name: container-named;
+  container-type: inline-size;
+  width: 100px;
+  height: 100px;
+}
+
+@container (min-width: 50px) and (min-height: 50px) {
+  .query-unnamed { margin-top: 5px; }
+}
+
+@container container-named (min-width: 50px) {
+  .query-named { margin-top: 10px; }
+}
+
+@container (min-width: 50px) {
+  .query-unnamed-inline { margin-top: 15px; }
+}
+
+@container container-named-other (min-height: 50px) {
+  .query-named-other { margin-top: 20px; }
+}
+</style>
+<body>
+<div id="container-unnamed">
+  <div class="query-unnamed desc-unnamed"></div>
+  <div class="query-unnamed desc-unnamed" id="container-named">    
+    <div class="query-named-other">
+      <div class="query-unnamed"></div>
+      <div class="query-unnamed-inline desc-named"></div>
+    </div>
+    <div class="query-named desc-named"></div>
+  </div>
+  <div>
+    <div class="query-unnamed desc-unnamed"></div>
+  </div>
+</div>
+</body>
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css/focus-ring-multiline-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css/focus-ring-multiline-expected.png
index fc2315dc..b7f621b 100644
--- a/third_party/blink/web_tests/platform/fuchsia/fast/css/focus-ring-multiline-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css/focus-ring-multiline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
index e103866b..67b553b 100644
--- a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
index 6a99d77..3ec0aa9 100644
--- a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
index 72174737..a431968 100644
--- a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
index 438f25d..57a16d8a 100644
--- a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
index 7d109259..fc70a3b 100644
--- a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/replaced/selection-rect-transform-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/replaced/selection-rect-transform-expected.png
index 16a6ab87..8b5c715 100644
--- a/third_party/blink/web_tests/platform/fuchsia/fast/replaced/selection-rect-transform-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/replaced/selection-rect-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/paint/invalidation/outline/focus-layers-expected.png b/third_party/blink/web_tests/platform/fuchsia/paint/invalidation/outline/focus-layers-expected.png
index ca92d13..d809984 100644
--- a/third_party/blink/web_tests/platform/fuchsia/paint/invalidation/outline/focus-layers-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/paint/invalidation/outline/focus-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug2479-3-expected.png
index 53c1a2ed..bf4d50c 100644
--- a/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug2479-3-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug2479-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
index 2159bd6..335aa2f1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
index 70dfb9d8..9bac769 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-drawImage-video-reset-expected.png
new file mode 100644
index 0000000..0232744
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-drawImage-video-reset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-pattern-video-expected.png
new file mode 100644
index 0000000..c3d252a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
new file mode 100644
index 0000000..bfbe29a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
new file mode 100644
index 0000000..8f9f1ff
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
new file mode 100644
index 0000000..9ba062e
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
new file mode 100644
index 0000000..919283b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
deleted file mode 100644
index c366218..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
deleted file mode 100644
index be3771d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
rename to third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
new file mode 100644
index 0000000..81e5ecf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
new file mode 100644
index 0000000..0232744
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-pattern-video-expected.png
new file mode 100644
index 0000000..c3d252a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
new file mode 100644
index 0000000..2eeea6d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
new file mode 100644
index 0000000..01067598
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
new file mode 100644
index 0000000..0232744
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
new file mode 100644
index 0000000..0232744
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-pattern-video-expected.png
new file mode 100644
index 0000000..c3d252a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/no-alloc-direct-call/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
new file mode 100644
index 0000000..0232744
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
new file mode 100644
index 0000000..0232744
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-pattern-video-expected.png
new file mode 100644
index 0000000..c3d252a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png
new file mode 100644
index 0000000..bfbe29a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
new file mode 100644
index 0000000..8f9f1ff
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
new file mode 100644
index 0000000..9ba062e
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
new file mode 100644
index 0000000..919283b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 1676cee..b1642de 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
index 546ed807..c995328 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/password/password-eye-icon-zoom-0.5x-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/password/password-eye-icon-zoom-0.5x-expected.png
deleted file mode 100644
index 219c631d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/password/password-eye-icon-zoom-0.5x-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
index fb7dcf9..110d54d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
index 08ea65e..8d3d001 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
index f6bd31a..74e2734 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
index 2ffcfd0..fb22df9d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
index 4bca1bd..d527675 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/track/track-cue-rendering-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/track/track-cue-rendering-horizontal-expected.png
index e4fe615..3a80aad5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/track/track-cue-rendering-horizontal-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/track/track-cue-rendering-horizontal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
index e5bf622..93e60a8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
index cd748fa..d82ecad 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png
index 22b5f9e..f181b5b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 64421fff..f4b05e7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
index c5a16b4f3..684e6f5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 7c1f2de..1090b5b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
index b3a4a8e..0aa297f2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
index 74b35534f..276fb57 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-after-reload-expected.png
index fb7dcf9..110d54d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-strict-expected.png
index 08ea65e..8d3d001 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-expected.png
index f6bd31a..74e2734 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png
index 2ffcfd0..fb22df9d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-without-preload-expected.png
index 4bca1bd..d527675 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png
index e4fe615..3a80aad5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png
index e5bf622..93e60a8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-display-toggle-expected.png
index cd748fa..d82ecad 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
index 22b5f9e..f181b5b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/layers-inside-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/layers-inside-overflow-scroll-expected.png
deleted file mode 100644
index 74918d8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/layers-inside-overflow-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/self-painting-layers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/self-painting-layers-expected.png
deleted file mode 100644
index 5629ccb..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/self-painting-layers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/video/video-controls-squashing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/video/video-controls-squashing-expected.png
deleted file mode 100644
index 0b38a72..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/video/video-controls-squashing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/visibility/visibility-simple-video-layer-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/compositing/visibility/visibility-simple-video-layer-expected.png
deleted file mode 100644
index 7d2a82d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/compositing/visibility/visibility-simple-video-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 6904a0c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index d28437f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/media/video-overlay-menu-expected.png
deleted file mode 100644
index c1c4f39e5..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
deleted file mode 100644
index 27d9a69..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-expected.png
deleted file mode 100644
index 94a9be87..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-expected.png
deleted file mode 100644
index bbbfc6d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-filter-expected.png
deleted file mode 100644
index 9ebfd14..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-filter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-object-fit-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-object-fit-expected.png
deleted file mode 100644
index f0d3fca..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/color-profile-video-seek-object-fit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-after-reload-expected.png
deleted file mode 100644
index a85412f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-after-reload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-strict-expected.png
deleted file mode 100644
index 0282f7c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-styling-expected.png
deleted file mode 100644
index 4d576a99..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-styling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-styling-strict-expected.png
deleted file mode 100644
index 321055a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-styling-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-without-preload-expected.png
deleted file mode 100644
index 353492c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-without-preload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/track/track-cue-rendering-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/track/track-cue-rendering-horizontal-expected.png
deleted file mode 100644
index 1a96aa8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/track/track-cue-rendering-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/track/track-cue-rendering-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/track/track-cue-rendering-vertical-expected.png
deleted file mode 100644
index 2d321a90..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/track/track-cue-rendering-vertical-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-aspect-ratio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-aspect-ratio-expected.png
deleted file mode 100644
index 9e64707d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-aspect-ratio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-canvas-alpha-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-canvas-alpha-expected.png
deleted file mode 100644
index fd6a9eba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-canvas-alpha-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-controls-rendering-expected.png
deleted file mode 100644
index dc7208f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-controls-rendering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-display-toggle-expected.png
deleted file mode 100644
index a42e45b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-display-toggle-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-remove-insert-repaints-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-remove-insert-repaints-expected.png
deleted file mode 100644
index 4bbeaaf..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-remove-insert-repaints-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-replaces-poster-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-replaces-poster-expected.png
deleted file mode 100644
index 3405eb4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-replaces-poster-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-zoom-controls-expected.png
deleted file mode 100644
index d41fbdd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-zoom-controls-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-zoom-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-zoom-expected.png
deleted file mode 100644
index 8ad3c9a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-zoom-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
deleted file mode 100644
index a91dd17..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
deleted file mode 100644
index 6b9a591..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
deleted file mode 100644
index d179d3c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
deleted file mode 100644
index 5c806c3..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
deleted file mode 100644
index 82a8ad6..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-mode-increase-text-contrast/dark-mode/colors/web-theme-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-mode-increase-text-contrast/dark-mode/colors/web-theme-expected.png
deleted file mode 100644
index b581251..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-mode-increase-text-contrast/dark-mode/colors/web-theme-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 452d917..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index b9f9948..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 6904a0c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index d28437f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index d64f7d18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index 800294b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-expected.png
deleted file mode 100644
index 94a9be87..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png
deleted file mode 100644
index bbbfc6d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png
deleted file mode 100644
index 9ebfd14..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png
deleted file mode 100644
index f0d3fca..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-after-reload-expected.png
deleted file mode 100644
index a85412f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-after-reload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-strict-expected.png
deleted file mode 100644
index 0282f7c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-styling-expected.png
deleted file mode 100644
index 4d576a99..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-styling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png
deleted file mode 100644
index 321055a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-without-preload-expected.png
deleted file mode 100644
index 353492c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/controls-without-preload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png
deleted file mode 100644
index 1a96aa8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/track/track-cue-rendering-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/track/track-cue-rendering-vertical-expected.png
deleted file mode 100644
index 2d321a90..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/track/track-cue-rendering-vertical-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png
deleted file mode 100644
index 9e64707d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png
deleted file mode 100644
index fd6a9eba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png
deleted file mode 100644
index dc7208f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-display-toggle-expected.png
deleted file mode 100644
index a42e45b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-display-toggle-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png
deleted file mode 100644
index 4bbeaaf..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png
deleted file mode 100644
index 3405eb4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
deleted file mode 100644
index d41fbdd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-zoom-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-zoom-expected.png
deleted file mode 100644
index 8ad3c9a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/synchronous_html_parser/media/video-zoom-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png
deleted file mode 100644
index 7d2a82d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/layers-inside-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/layers-inside-overflow-scroll-expected.png
deleted file mode 100644
index 74918d8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/layers-inside-overflow-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/self-painting-layers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/self-painting-layers-expected.png
deleted file mode 100644
index 5629ccb..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/self-painting-layers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/video/video-controls-squashing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/video/video-controls-squashing-expected.png
deleted file mode 100644
index 0b38a72..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/video/video-controls-squashing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/visibility/visibility-simple-video-layer-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/visibility/visibility-simple-video-layer-expected.png
deleted file mode 100644
index 7d2a82d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/visibility/visibility-simple-video-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 6904a0c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index d28437f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-expected.png
deleted file mode 100644
index 94a9be87..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-expected.png
deleted file mode 100644
index bbbfc6d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-filter-expected.png
deleted file mode 100644
index 9ebfd14..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-filter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-object-fit-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-object-fit-expected.png
deleted file mode 100644
index f0d3fca..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/color-profile-video-seek-object-fit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-aspect-ratio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-aspect-ratio-expected.png
deleted file mode 100644
index 9e64707d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-aspect-ratio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-canvas-alpha-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-canvas-alpha-expected.png
deleted file mode 100644
index fd6a9eba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-canvas-alpha-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-remove-insert-repaints-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-remove-insert-repaints-expected.png
deleted file mode 100644
index 4bbeaaf..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-remove-insert-repaints-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-replaces-poster-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-replaces-poster-expected.png
deleted file mode 100644
index 3405eb4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-replaces-poster-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-zoom-controls-expected.png
deleted file mode 100644
index d41fbdd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-zoom-controls-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-zoom-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-zoom-expected.png
deleted file mode 100644
index 8ad3c9a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-zoom-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-mode-increase-text-contrast/dark-mode/colors/web-theme-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-mode-increase-text-contrast/dark-mode/colors/web-theme-expected.png
deleted file mode 100644
index b581251..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-mode-increase-text-contrast/dark-mode/colors/web-theme-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 452d917..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index b9f9948..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 6904a0c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index d28437f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index d64f7d18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index 800294b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-expected.png
deleted file mode 100644
index 94a9be87..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png
deleted file mode 100644
index bbbfc6d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png
deleted file mode 100644
index 9ebfd14..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png
deleted file mode 100644
index f0d3fca..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png
deleted file mode 100644
index 9e64707d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png
deleted file mode 100644
index fd6a9eba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png
deleted file mode 100644
index 4bbeaaf..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png
deleted file mode 100644
index 3405eb4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
deleted file mode 100644
index d41fbdd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-zoom-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-zoom-expected.png
deleted file mode 100644
index 8ad3c9a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/media/video-zoom-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png
deleted file mode 100644
index 7d2a82d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/layers-inside-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/layers-inside-overflow-scroll-expected.png
deleted file mode 100644
index 74918d8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/layers-inside-overflow-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/self-painting-layers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/self-painting-layers-expected.png
deleted file mode 100644
index 5629ccb..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/self-painting-layers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/video/video-controls-squashing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/video/video-controls-squashing-expected.png
deleted file mode 100644
index 0b38a72..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/video/video-controls-squashing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/visibility/visibility-simple-video-layer-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/compositing/visibility/visibility-simple-video-layer-expected.png
deleted file mode 100644
index 7d2a82d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/compositing/visibility/visibility-simple-video-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 6904a0c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index d28437f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/media/video-overlay-menu-expected.png
deleted file mode 100644
index 7a28f67f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
deleted file mode 100644
index 3052bcd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-expected.png
deleted file mode 100644
index 94a9be87..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-expected.png
deleted file mode 100644
index bbbfc6d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-filter-expected.png
deleted file mode 100644
index 9ebfd14..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-filter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-object-fit-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-object-fit-expected.png
deleted file mode 100644
index f0d3fca..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/color-profile-video-seek-object-fit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-after-reload-expected.png
deleted file mode 100644
index 88fed9a9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-after-reload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-strict-expected.png
deleted file mode 100644
index fc4d3c9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-styling-expected.png
deleted file mode 100644
index 9cca21c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-styling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-styling-strict-expected.png
deleted file mode 100644
index aaf3dbf2..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-styling-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-without-preload-expected.png
deleted file mode 100644
index 171b2f8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/controls-without-preload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/track/track-cue-rendering-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/track/track-cue-rendering-horizontal-expected.png
deleted file mode 100644
index c0199be..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/track/track-cue-rendering-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/track/track-cue-rendering-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/track/track-cue-rendering-vertical-expected.png
deleted file mode 100644
index 3b61e30..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/track/track-cue-rendering-vertical-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-aspect-ratio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-aspect-ratio-expected.png
deleted file mode 100644
index 9e64707d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-aspect-ratio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-canvas-alpha-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-canvas-alpha-expected.png
deleted file mode 100644
index fd6a9eba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-canvas-alpha-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-controls-rendering-expected.png
deleted file mode 100644
index 07f01276..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-controls-rendering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-display-toggle-expected.png
deleted file mode 100644
index bffbb6e..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-display-toggle-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-remove-insert-repaints-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-remove-insert-repaints-expected.png
deleted file mode 100644
index 4bbeaaf..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-remove-insert-repaints-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-replaces-poster-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-replaces-poster-expected.png
deleted file mode 100644
index 3405eb4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-replaces-poster-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-zoom-controls-expected.png
deleted file mode 100644
index d41fbdd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-zoom-controls-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-zoom-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/media/video-zoom-expected.png
deleted file mode 100644
index 8ad3c9a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/media/video-zoom-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 06b5458..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/backface-visibility-interop/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
deleted file mode 100644
index 8477d83..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
deleted file mode 100644
index c8a32c9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
deleted file mode 100644
index 0f2f03a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
deleted file mode 100644
index 0306a2e2..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
deleted file mode 100644
index 11620df..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 452d917..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index b9f9948..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index 6904a0c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index d28437f..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/no-alloc-direct-call/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index d64f7d18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index 800294b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
deleted file mode 100644
index 87ecfee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
deleted file mode 100644
index 88cdfd65..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/oopr-canvas2d/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-expected.png
deleted file mode 100644
index 94a9be87..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png
deleted file mode 100644
index bbbfc6d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png
deleted file mode 100644
index 9ebfd14..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-filter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png
deleted file mode 100644
index f0d3fca..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/color-profile-video-seek-object-fit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-after-reload-expected.png
deleted file mode 100644
index 88fed9a9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-after-reload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-styling-expected.png
deleted file mode 100644
index 9cca21c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-styling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png
deleted file mode 100644
index aaf3dbf2..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-styling-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-without-preload-expected.png
deleted file mode 100644
index 171b2f8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/controls-without-preload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png
deleted file mode 100644
index c0199be..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/track/track-cue-rendering-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/track/track-cue-rendering-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/track/track-cue-rendering-vertical-expected.png
deleted file mode 100644
index 3b61e30..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/track/track-cue-rendering-vertical-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png
deleted file mode 100644
index 9e64707d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-aspect-ratio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png
deleted file mode 100644
index fd6a9eba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-canvas-alpha-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png
deleted file mode 100644
index 07f01276..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-controls-rendering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-display-toggle-expected.png
deleted file mode 100644
index bffbb6e..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-display-toggle-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png
deleted file mode 100644
index 4bbeaaf..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-remove-insert-repaints-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png
deleted file mode 100644
index 3405eb4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-replaces-poster-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
deleted file mode 100644
index d41fbdd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-zoom-controls-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-zoom-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-zoom-expected.png
deleted file mode 100644
index 8ad3c9a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/synchronous_html_parser/media/video-zoom-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png
deleted file mode 100644
index 7d2a82d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/threaded/compositing/visibility/visibility-simple-video-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 2c5ced9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 071f9ba..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index ce33a85..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/transform-interop-disabled/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/blink/web_tests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png
index 2b8d1e1..06b5458 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/geometry/video-opacity-overlay-expected.png b/third_party/blink/web_tests/platform/mac/compositing/geometry/video-opacity-overlay-expected.png
index 7dbda6b..2c5ced9 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/geometry/video-opacity-overlay-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/geometry/video-opacity-overlay-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png
index dc21b2f..74918d8 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/blink/web_tests/platform/mac/compositing/overflow/overflow-compositing-descendant-expected.png
index f922fb7..071f9ba 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/overflow/overflow-compositing-descendant-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/overflow/overflow-compositing-descendant-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/blink/web_tests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png
index 9cd05e6..ce33a85 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/self-painting-layers-expected.png b/third_party/blink/web_tests/platform/mac/compositing/self-painting-layers-expected.png
index 0ec0172d..5629ccb 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/self-painting-layers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/self-painting-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-squashing-expected.png b/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-squashing-expected.png
index 4cdeceb..0b38a72 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-squashing-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-squashing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-simple-video-layer-expected.png b/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-simple-video-layer-expected.png
index 31a69f6..7d2a82d 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-simple-video-layer-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-simple-video-layer-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-expected.png
index 04a6f33..6904a0c 100644
--- a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-shadow-expected.png
index 98da6ce5..d28437f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-shadow-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-video-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-expected.png
index 5f36585..87ecfee 100644
--- a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-reset-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-reset-expected.png
index 0232744..88cdfd65 100644
--- a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-reset-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-drawImage-video-reset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-pattern-video-expected.png
index c3d252a..00357c7 100644
--- a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-pattern-video-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 44afb914..7a28f67f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
index 9bcf75b..3052bcd 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/color-profile-video-expected.png b/third_party/blink/web_tests/platform/mac/media/color-profile-video-expected.png
index 7a1dcbc8..94a9be87 100644
--- a/third_party/blink/web_tests/platform/mac/media/color-profile-video-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/color-profile-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-expected.png b/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-expected.png
index f0cb84e..bbbfc6d 100644
--- a/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-filter-expected.png b/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-filter-expected.png
index 31b4272..9ebfd14 100644
--- a/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-filter-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-object-fit-expected.png b/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-object-fit-expected.png
index 88c9e85..f0d3fca 100644
--- a/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-object-fit-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/color-profile-video-seek-object-fit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
index cd6e5df..88fed9a9 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
index 85b1ea5..fc4d3c9 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
index 822a692..9cca21c 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
index 12ef72a..aaf3dbf2 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
index 8cbfcad..171b2f8 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-horizontal-expected.png b/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-horizontal-expected.png
index 57ca3a7e..c0199be 100644
--- a/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-horizontal-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-horizontal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-vertical-expected.png b/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-vertical-expected.png
index 006be3aa..3b61e30 100644
--- a/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/track/track-cue-rendering-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-aspect-ratio-expected.png b/third_party/blink/web_tests/platform/mac/media/video-aspect-ratio-expected.png
index 6a98d67..9e64707d 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-aspect-ratio-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-aspect-ratio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-canvas-alpha-expected.png b/third_party/blink/web_tests/platform/mac/media/video-canvas-alpha-expected.png
index c5a5d1f..fd6a9eba 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-canvas-alpha-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-canvas-alpha-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
index b287b8d..07f01276 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
index 89a47c1e..bffbb6e 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-remove-insert-repaints-expected.png b/third_party/blink/web_tests/platform/mac/media/video-remove-insert-repaints-expected.png
index d08573f..4bbeaaf 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-remove-insert-repaints-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-remove-insert-repaints-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-replaces-poster-expected.png b/third_party/blink/web_tests/platform/mac/media/video-replaces-poster-expected.png
index a25b1f4b..3405eb4 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-replaces-poster-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-replaces-poster-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png
index 1535bb1..d41fbdd 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-zoom-expected.png b/third_party/blink/web_tests/platform/mac/media/video-zoom-expected.png
index 4aad12b..8ad3c9a 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 0344095..8477d83 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
index 23d8a5c..c8a32c9 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index ddb4cd7..0f2f03a 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
index 906b71b..0306a2e2 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
index d67cd1f..11620df 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
index 570ce3d7..c366218 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
index 6fa2a8e..be3771d 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
index b03258f..452d917 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
index 81e5ecf..b9f9948 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-video-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-pattern-video-expected.png
index c3d252a..00357c7 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-pattern-video-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/no-alloc-direct-call/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac/virtual/no-alloc-direct-call/fast/canvas/canvas-pattern-video-expected.png
new file mode 100644
index 0000000..00357c7
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/no-alloc-direct-call/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
index a16ba98..d64f7d18 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
index f3fccb8..800294b 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-pattern-video-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-pattern-video-expected.png
new file mode 100644
index 0000000..00357c7
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-pattern-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
index 0833ca8..807abd7 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
index 9aa08f7..c698a08 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/imagemap-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
deleted file mode 100644
index 0eb58da..0000000
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-play-button-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/gpu/fast/canvas/canvas-composite-video-expected.png b/third_party/blink/web_tests/platform/win7/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
deleted file mode 100644
index e68ec73e..0000000
--- a/third_party/blink/web_tests/platform/win7/virtual/gpu/fast/canvas/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/container-queries/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container-expected.txt b/third_party/blink/web_tests/virtual/container-queries/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container-expected.txt
new file mode 100644
index 0000000..c5ed501e
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/container-queries/inspector-protocol/dom/container-queries/dom-get-querying-descendants-for-container-expected.txt
@@ -0,0 +1,6 @@
+Test CSS.getQueryingDescendantsForContainer method for container query containers
+Are the returned nodes the expected descendants for #container-unnamed?
+true
+Are the returned nodes the expected descendants for #container-named?
+true
+
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/activate-from-iframe.html b/third_party/blink/web_tests/wpt_internal/prerender/activate-from-iframe.html
index 6e8b172..42b8515c 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/activate-from-iframe.html
+++ b/third_party/blink/web_tests/wpt_internal/prerender/activate-from-iframe.html
@@ -7,22 +7,22 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
 <script>
 
 promise_test(async t => {
-  const resultChannel = new BroadcastChannel('result-channel');
-  t.add_cleanup(_ => resultChannel.close());
+  const channel = new BroadcastChannel('result-channel');
+  const messageQueue = new BroadcastMessageQueue(channel);
+  t.add_cleanup(_ => channel.close());
 
   const url = `resources/activate-from-iframe.html?mode=triggering`;
   window.open(url, '_blank', 'noopener');
 
-  const gotActivationMessage =
-      await new Promise(r => resultChannel.onmessage = r);
-  assert_equals(gotActivationMessage.data,
+  const gotActivationMessage = await messageQueue.nextMessage();
+  assert_equals(gotActivationMessage,
       'attempting prerender activation');
-  const gotReloadMessage =
-      await new Promise(r => resultChannel.onmessage = r);
-  assert_equals(gotReloadMessage.data, 'loaded from scratch');
+  const gotReloadMessage = await messageQueue.nextMessage();
+  assert_equals(gotReloadMessage, 'loaded from scratch');
 }, `Navigation on the main frame initiated by window opened by an ` +
     `iframe opening via window.parent.location should not activate a ` +
     `prerendered page`);
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/iframe-added-post-activation.html b/third_party/blink/web_tests/wpt_internal/prerender/iframe-added-post-activation.html
index b448d65..7f63dd6 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/iframe-added-post-activation.html
+++ b/third_party/blink/web_tests/wpt_internal/prerender/iframe-added-post-activation.html
@@ -10,38 +10,20 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
 <body>
 <script>
 promise_test(async t => {
   const channel = new BroadcastChannel('test-channel');
-  let messages = [];
-  let resolves = [];
-
-  channel.addEventListener('message', e => {
-    if (resolves.length > 0) {
-      const fn = resolves.shift();
-      fn(e.data);
-    } else {
-      messages.push(e.data);
-    }
-  });
-
-  function nextMessage() {
-    return new Promise(resolve => {
-      if (messages.length > 0)
-        resolve(messages.shift())
-      else
-        resolves.push(resolve);
-    });
-  }
-
+  const messageQueue = new BroadcastMessageQueue(channel);
+  t.add_cleanup(_ => channel.close());
 
   // Make the window to start the prerender.
   const url = `resources/iframe-added-post-activation.html`;
   window.open(url, '_blank', 'noopener');
 
   // Wait for done.
-  const msg = await nextMessage();
+  const msg = await messageQueue.nextMessage();
   assert_equals(msg, 'PASS');
 }, 'iframe added after activation has false document.prerendering');
 </script>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-cross-origin-subframe-navigation.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-cross-origin-subframe-navigation.html
index a2a5e57c..ed9015e 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-cross-origin-subframe-navigation.html
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-cross-origin-subframe-navigation.html
@@ -40,14 +40,7 @@
   bc.postMessage(message);
   bc.postMessage('Done');
 } else if (state === 'same-origin-frame') {
-  // unload handler should be triggered after the frame navigation.
-  // The deferred cross-origin navigation resumes when the browser process
-  // starts activation, and when Blink handles the unload event handler,
-  // document.prerendering state is unstable.
-  // TODO(https://crbug.com/1222547): Fix this unstable state by waiting for
-  // DidActivateForPrerendering() before proceeding with the subframe
-  // navigation.
-  addEventListeners('same-origin-frame', false);
+  addEventListeners('same-origin-frame');
 
   // Run a cross-origin navigation.
   document.location = createCrossOriginTestUrl('cross-origin-frame');
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-remove-subframe.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-remove-subframe.html
index 1c4c7e4..227bd75b 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-remove-subframe.html
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-remove-subframe.html
@@ -33,7 +33,7 @@
   await promise;
   bc.postMessage('Done');
 } else if (state == 'frame') {
-  addEventListeners('frame', true);
+  addEventListeners('frame');
   bc.postMessage('request removal');
 }
 bc.close();
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-same-origin-subframe-navigation.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-same-origin-subframe-navigation.html
index f978010..6c3f2d8 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-same-origin-subframe-navigation.html
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-on-prerender-same-origin-subframe-navigation.html
@@ -23,7 +23,7 @@
   addFrame(createTestUrl('same-origin-frame1'));
 } else if (state === 'same-origin-frame1') {
   // unload handler should be triggered after the frame navigation.
-  addEventListeners('same-origin-frame1', true);
+  addEventListeners('same-origin-frame1');
 
   // Run a same-origin navigation.
   document.location = createTestUrl('same-origin-frame2');
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-utils.js b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-utils.js
index 51089dc..a93c959 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-utils.js
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/unload-utils.js
@@ -25,13 +25,12 @@
   return frame;
 }
 
-function addEventListeners(name, checkPrerenderingState) {
+function addEventListeners(name) {
   ['unload', 'pagehide', 'pageshow', 'visibilitychange'].forEach(eventName => {
     window.addEventListener(eventName, e => {
       const bc = openChannel();
       bc.postMessage(eventName + ' ' + name +
-          (checkPrerenderingState && document.prerendering ? ' in prerendering'
-                                                             : ''));
+          (document.prerendering ? ' in prerendering' : ''));
       bc.close();
     });
   });
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/utils.js b/third_party/blink/web_tests/wpt_internal/prerender/resources/utils.js
index fb53e73..44e35f6 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/resources/utils.js
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/utils.js
@@ -88,3 +88,39 @@
     window.close();
   });
 }
+
+// Returns messages received from the given BroadcastChannel
+// so that callers do not need to add their own event listeners.
+// nextMessage() returns a promise which resolves with the next message.
+//
+// Usage:
+//   const channel = new BroadcastChannel('channel-name');
+//   const messageQueue = new BroadcastMessageQueue(channel);
+//   const message1 = await messageQueue.nextMessage();
+//   const message2 = await messageQueue.nextMessage();
+//   message1 and message2 are the messages received.
+class BroadcastMessageQueue {
+  constructor(broadcastChannel) {
+    this.messages = [];
+    this.resolveFunctions = [];
+    this.channel = broadcastChannel;
+    this.channel.addEventListener('message', e => {
+      if (this.resolveFunctions.length > 0) {
+        const fn = this.resolveFunctions.shift();
+        fn(e.data);
+      } else {
+        this.messages.push(e.data);
+      }
+    });
+  }
+
+  // Returns a promise that resolves with the next message from this queue.
+  nextMessage() {
+    return new Promise(resolve => {
+      if (this.messages.length > 0)
+        resolve(this.messages.shift())
+      else
+        this.resolveFunctions.push(resolve);
+    });
+  }
+}
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/unload-on-prerender-cross-origin-subframe-navigation.html b/third_party/blink/web_tests/wpt_internal/prerender/unload-on-prerender-cross-origin-subframe-navigation.html
index 32a0c91..205d7bd 100644
--- a/third_party/blink/web_tests/wpt_internal/prerender/unload-on-prerender-cross-origin-subframe-navigation.html
+++ b/third_party/blink/web_tests/wpt_internal/prerender/unload-on-prerender-cross-origin-subframe-navigation.html
@@ -29,7 +29,7 @@
     'load prerendering',
     'load same-origin-frame',
     'request activation',
-    'visibilitychange same-origin-frame',
+    'visibilitychange same-origin-frame in prerendering',
     'pagehide same-origin-frame',
     'visibilitychange same-origin-frame',
     'unload same-origin-frame',
diff --git a/third_party/closure_compiler/externs/accessibility_private.js b/third_party/closure_compiler/externs/accessibility_private.js
index 748afdd9..407a5d92 100644
--- a/third_party/closure_compiler/externs/accessibility_private.js
+++ b/third_party/closure_compiler/externs/accessibility_private.js
@@ -34,6 +34,15 @@
 chrome.accessibilityPrivate.ScreenRect;
 
 /**
+ * Point in global screen coordinates.
+ * @typedef {{
+ *   x: number,
+ *   y: number
+ * }}
+ */
+chrome.accessibilityPrivate.ScreenPoint;
+
+/**
  * @enum {string}
  */
 chrome.accessibilityPrivate.Gesture = {
@@ -416,6 +425,12 @@
 chrome.accessibilityPrivate.moveMagnifierToRect = function(rect) {};
 
 /**
+ * Called by the Accessibility Common extension to center magnifier at |point|.
+ * @param {!chrome.accessibilityPrivate.ScreenPoint} point
+ */
+chrome.accessibilityPrivate.magnifierCenterOnPoint = function(point) {};
+
+/**
  * Toggles dictation between active and inactive states.
  */
 chrome.accessibilityPrivate.toggleDictation = function() {};
diff --git a/third_party/dav1d/dav1d_generated.gni b/third_party/dav1d/dav1d_generated.gni
index 6af524fd..ab2d341 100644
--- a/third_party/dav1d/dav1d_generated.gni
+++ b/third_party/dav1d/dav1d_generated.gni
@@ -16,6 +16,7 @@
   "libdav1d/src/x86/film_grain_avx2.asm",
   "libdav1d/src/x86/film_grain_sse.asm",
   "libdav1d/src/x86/ipred16_avx2.asm",
+  "libdav1d/src/x86/ipred16_sse.asm",
   "libdav1d/src/x86/ipred_avx2.asm",
   "libdav1d/src/x86/ipred_sse.asm",
   "libdav1d/src/x86/itx16_avx2.asm",
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium
index 50335a0..f78a33d2 100644
--- a/third_party/freetype/README.chromium
+++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@
 Name: FreeType
 URL: http://www.freetype.org/
-Version: VER-2-11-0-13-g47b1a541c
-Revision: 47b1a541cb1943d85da3976b93f9a5ed490288e2
+Version: VER-2-11-0-16-g09195a82a
+Revision: 09195a82a4a39afb0f8281563f48ce4493455b4e
 CPEPrefix: cpe:/a:freetype:freetype:2.10.4
 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent
          JPEG Group) licenses"
diff --git a/third_party/libwebp/OWNERS b/third_party/libwebp/OWNERS
index 2f08782..8761a39 100644
--- a/third_party/libwebp/OWNERS
+++ b/third_party/libwebp/OWNERS
@@ -1,4 +1,7 @@
-fbarchard@chromium.org
+# Primary OWNER
 jzern@chromium.org
 jzern@google.com
-urvang@chromium.org
+
+# Past project members, please only use when primary is unavailable.
+fbarchard@chromium.org  # Prefer jzern@ if available.
+urvang@chromium.org  # Prefer jzern@ if available.
diff --git a/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt b/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt
index 76f44a7..f9a7f55 100644
--- a/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt
+++ b/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt
@@ -24,6 +24,7 @@
 
 # Populated manually - conflicting types in an initializer list
 WebUITabStripContainerView::tab_counter_
+DownloadItemView::review_button_
 
 # Populated manually to avoid returning a reference to a temporary T* (result of
 # implicitly casting CheckedPtr<T> to T*).  This covers functions that return
@@ -116,9 +117,9 @@
 performance_manager::v8_memory::(anonymous namespace)::V8ContextTrackerTest::tracker_
 content::(anonymous namespace)::BackForwardCacheMessageFilter::interface_name_
 base::trace_event::MemoryDumpProviderInfo::name
-content::Navigationrequest::frame_tree_node_
-content::Navigationrequest::rfh_restored_from_back_forward_cache_
-scheduler::FrameSchedulerImpl::blame_context_
+content::NavigationRequest::frame_tree_node_
+content::NavigationRequest::rfh_restored_from_back_forward_cache_
+blink::scheduler::FrameSchedulerImpl::blame_context_
 
 # Populated manually - requires rewriting member pointer type
 courgette::LabelManagerTest_SimpleIndexAssigner_Test::TestBody()::TestCase::input
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
index 9921b06a..0ca863b 100644
--- a/tools/gritsettings/resource_ids.spec
+++ b/tools/gritsettings/resource_ids.spec
@@ -302,7 +302,7 @@
     "META": {"sizes": {"includes": [10]}},
     "includes": [2065],
   },
-  "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/download_internals/resources.grd": {
+  "<(SHARED_INTERMEDIATE_DIR)/components/download/resources/download_internals/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
     "includes": [2070],
   },
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index e0463ba..7da425d 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -314,6 +314,8 @@
       'android-backuprefptr-arm64-fyi-rel': 'release_trybot_backuprefptr_arm64',
       'chromeos-amd64-generic-rel-dchecks': 'chromeos_amd64-generic_use_fake_dbus_clients_dchecks',
       'chromeos-amd64-generic-rel (reclient)': 'chromeos_amd64-generic_use_fake_dbus_clients_reclient',
+      # TODO(crbug.com/1235218): remove after the migration.
+      'chromeos-amd64-generic-rel (reclient compare)': 'chromeos_amd64-generic_use_fake_dbus_clients_reclient',
       'chromeos-amd64-generic-rel (goma cache silo)': 'chromeos_amd64-generic_use_fake_dbus_clients',
       'fuchsia-code-coverage': 'fuchsia_clang_code_coverage',
       'fuchsia-fyi-arm64-dbg': 'debug_bot_fuchsia_arm64',
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json
index bc6a355..f9b9151d 100644
--- a/tools/mb/mb_config_expectations/chromium.fyi.json
+++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -544,6 +544,15 @@
       "use_real_dbus_clients": false
     }
   },
+  "chromeos-amd64-generic-rel (reclient compare)": {
+    "args_file": "//build/args/chromeos/amd64-generic.gni",
+    "gn_args": {
+      "is_chromeos_device": true,
+      "ozone_platform_headless": true,
+      "use_rbe": true,
+      "use_real_dbus_clients": false
+    }
+  },
   "chromeos-amd64-generic-rel (reclient)": {
     "args_file": "//build/args/chromeos/amd64-generic.gni",
     "gn_args": {
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index bdb7eea..9d7ed52 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -16175,6 +16175,15 @@
   </description>
 </action>
 
+<action name="MobileTabGridSelectionShareTabs">
+  <owner>mrefaat@chromium.org</owner>
+  <owner>michaeldo@chromium.org</owner>
+  <description>
+    Users in the iOS tab grid used the share button in the selection mode to
+    share multiple tabs at once.
+  </description>
+</action>
+
 <action name="MobileTabGridSelectRegularPanel">
   <owner>edchin@chromium.org</owner>
   <owner>marq@chromium.org</owner>
@@ -16201,6 +16210,14 @@
   </description>
 </action>
 
+<action name="MobileTabGridTabContextMenuSelectTabs">
+  <owner>mrefaat@chromium.org</owner>
+  <owner>michaeldo@chromium.org</owner>
+  <description>
+    User in the iOS tab grid used the tab context menu to enter selection mode.
+  </description>
+</action>
+
 <action name="MobileTabGridUndoCloseAllRegularTabs">
   <owner>edchin@chromium.org</owner>
   <owner>marq@chromium.org</owner>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 8ca30ff..5d47a964 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -1143,8 +1143,8 @@
 
 <enum name="AccuracyTipInteraction">
   <int value="0" label="kNoAction"/>
-  <int value="1" label="kLearnMorePressed"/>
-  <int value="2" label="kOptOutPressed"/>
+  <int value="1" label="kLearnMore"/>
+  <int value="2" label="kOptOut"/>
   <int value="3" label="kClosed"/>
   <int value="4" label="kDisabledByExperiment"/>
 </enum>
@@ -28820,6 +28820,7 @@
   <int value="1563" label="AUTOTESTPRIVATE_SETSHELFICONPIN"/>
   <int value="1564" label="SCRIPTING_GETREGISTEREDCONTENTSCRIPTS"/>
   <int value="1565" label="OS_TELEMETRY_GETVPDINFO"/>
+  <int value="1566" label="ACCESSIBILITY_PRIVATE_MAGNIFIERCENTERONPOINT"/>
 </enum>
 
 <enum name="ExtensionIconState">
@@ -40859,6 +40860,27 @@
              scheduled."/>
 </enum>
 
+<enum name="Http2WireErrorCodes">
+  <summary>
+    Error codes defined at
+    https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#error-code
+  </summary>
+  <int value="0" label="NO_ERROR"/>
+  <int value="1" label="PROTOCOL_ERROR"/>
+  <int value="2" label="INTERNAL_ERROR"/>
+  <int value="3" label="FLOW_CONTROL_ERROR"/>
+  <int value="4" label="SETTINGS_TIMEOUT"/>
+  <int value="5" label="STREAM_CLOSED"/>
+  <int value="6" label="FRAME_SIZE_ERROR"/>
+  <int value="7" label="REFUSED_STREAM"/>
+  <int value="8" label="CANCEL"/>
+  <int value="9" label="COMPRESSION_ERROR"/>
+  <int value="10" label="CONNECT_ERROR"/>
+  <int value="11" label="ENHANCE_YOUR_CALM"/>
+  <int value="12" label="INADEQUATE_SECURITY"/>
+  <int value="13" label="HTTP_1_1_REQUIRED"/>
+</enum>
+
 <enum name="HttpAuthCount">
   <int value="0" label="Basic Start"/>
   <int value="1" label="Basic Reject"/>
@@ -49703,6 +49725,8 @@
   <int value="460475728" label="wake-on-wifi-packet"/>
   <int value="461306840"
       label="AdaptiveButtonInTopToolbarCustomization:disabled"/>
+  <int value="461523297"
+      label="UsernameFirstFlowFallbackCrowdsourcing:enabled"/>
   <int value="461641589" label="WebAppWindowControlsOverlay:disabled"/>
   <int value="463582989" label="CompositorThreadedScrollbarScrolling:disabled"/>
   <int value="464226051" label="CrOSComponent:enabled"/>
@@ -50199,6 +50223,8 @@
   <int value="857445869" label="enable-captive-portal-bypass-proxy"/>
   <int value="857716462" label="FeedInteractiveRefresh:enabled"/>
   <int value="859449217" label="MagnifierPanningImprovements:enabled"/>
+  <int value="859495772"
+      label="UsernameFirstFlowFallbackCrowdsourcing:disabled"/>
   <int value="860336036" label="ChromeModernDesign:enabled"/>
   <int value="862453793" label="TranslateUI2016Q2:enabled"/>
   <int value="864024033" label="IsolatePrerendersMustProbeOrigin:enabled"/>
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml
index d578707..c03e66d 100644
--- a/tools/metrics/histograms/metadata/android/histograms.xml
+++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -3160,6 +3160,9 @@
 
 <histogram name="Android.WebView.CustomDefaultVideoPoster" enum="Boolean"
     expires_after="2021-08-01">
+  <obsolete>
+    Removed Aug 2021.
+  </obsolete>
   <owner>torne@chromium.org</owner>
   <owner>src/android_webview/OWNERS</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/commerce/histograms.xml b/tools/metrics/histograms/metadata/commerce/histograms.xml
index 8b517cc0..3b1dd8c 100644
--- a/tools/metrics/histograms/metadata/commerce/histograms.xml
+++ b/tools/metrics/histograms/metadata/commerce/histograms.xml
@@ -21,7 +21,20 @@
   <variant name="NavigationComplete" summary="completes a navigation."/>
 </variants>
 
-<histogram name="Commerce.PriceDrops.{LocationIdentifier}.ContainsPrice"
+<variants name="TabUsageStatuses">
+  <variant name="">
+    <obsolete>
+      Previous histogram didn't differentiate between Stale and Active Tab.
+    </obsolete>
+  </variant>
+  <variant name="ActiveTab"
+      summary="Tabs between 0 and 1 day since last usage."/>
+  <variant name="StaleTab"
+      summary="Tabs between 1 and 90 days since last usage."/>
+</variants>
+
+<histogram
+    name="Commerce.PriceDrops.{TabUsageStatus}{LocationIdentifier}.ContainsPrice"
     enum="BooleanContainsPrice" expires_after="2022-06-07">
   <owner>davidjm@chromium.org</owner>
   <owner>ayman@chromium.org</owner>
@@ -30,12 +43,14 @@
     Records if a page contains a price, as determined by the commerce data
     obtained to power the price drop feature. This data is acquired when the
     user finishes navigating to a page. Recorded when the user
-    {LocationIdentifier}.
+    {LocationIdentifier}. Recorded for {TabUsageStatus}.
   </summary>
   <token key="LocationIdentifier" variants="LocationIdentifiers"/>
+  <token key="TabUsageStatus" variants="TabUsageStatuses"/>
 </histogram>
 
-<histogram name="Commerce.PriceDrops.{LocationIdentifier}.ContainsPriceDrop"
+<histogram
+    name="Commerce.PriceDrops.{TabUsageStatus}{LocationIdentifier}.ContainsPriceDrop"
     enum="BooleanContainsPriceDrop" expires_after="2022-06-07">
   <owner>davidjm@chromium.org</owner>
   <owner>ayman@chromium.org</owner>
@@ -45,11 +60,14 @@
     previously seen price for the offer. This is determined by the commerce data
     obtained to power the price drop feature. The data is acquired when the user
     finishes navigating to a page. Recorded when the user {LocationIdentifier}.
+    Recorded for {TabUsageStatus}.
   </summary>
   <token key="LocationIdentifier" variants="LocationIdentifiers"/>
+  <token key="TabUsageStatus" variants="TabUsageStatuses"/>
 </histogram>
 
-<histogram name="Commerce.PriceDrops.{LocationIdentifier}.IsProductDetailPage"
+<histogram
+    name="Commerce.PriceDrops.{TabUsageStatus}{LocationIdentifier}.IsProductDetailPage"
     enum="BooleanIsProductDetailPage" expires_after="2022-06-07">
   <owner>davidjm@chromium.org</owner>
   <owner>ayman@chromium.org</owner>
@@ -58,9 +76,10 @@
     Records if a page is a product detail page, as determined by the commerce
     data obtained to power the price drop feature. This data is acquired when
     the user finishes navigating to a page. Recorded when the user
-    {LocationIdentifier}.
+    {LocationIdentifier}. Recorded for {TabUsageStatus}.
   </summary>
   <token key="LocationIdentifier" variants="LocationIdentifiers"/>
+  <token key="TabUsageStatus" variants="TabUsageStatuses"/>
 </histogram>
 
 </histograms>
diff --git a/tools/metrics/histograms/metadata/custom_tabs/histograms.xml b/tools/metrics/histograms/metadata/custom_tabs/histograms.xml
index 34d11c90..793721fc 100644
--- a/tools/metrics/histograms/metadata/custom_tabs/histograms.xml
+++ b/tools/metrics/histograms/metadata/custom_tabs/histograms.xml
@@ -247,10 +247,13 @@
 </histogram>
 
 <histogram name="CustomTabs.ShareOptionLocation" enum="ShareOptionLocation"
-    expires_after="M94">
+    expires_after="M99">
   <owner>sophey@chromium.org</owner>
   <owner>src/components/send_tab_to_self/OWNERS</owner>
-  <summary>Records the location of the share option in the Custom Tab.</summary>
+  <summary>
+    Records the location of the share option in the Custom Tab. Recorded when
+    the share option is added while the Custom Tab is being constructed.
+  </summary>
 </histogram>
 
 <histogram name="CustomTabs.SpareWebContents.Status2"
diff --git a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
index 48ee5fd..164e31a 100644
--- a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
@@ -76,6 +76,18 @@
   <affected-histogram name="Signin.DiceMigrationNotReady.Reason"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="AccuracyTipInteraction" separator=".">
+  <suffix name="Closed"
+      label="The Accuracy Tip was closed by close button or pressing ESC"/>
+  <suffix name="LearnMore"
+      label="Learn more button within Accuracy Tip was clicked"/>
+  <suffix name="NoAction"
+      label="The accuracy tip was closed without user interaction"/>
+  <suffix name="OptOut" label="Opt-out button within Accuracy Tip was clicked"/>
+  <affected-histogram name="Privacy.AccuracyTip.AccuracyTipTimeOpen"/>
+  <affected-histogram name="Privacy.AccuracyTip.NumDialogsShown"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="ActiveNetworkState" separator="_">
   <suffix name="Offline"
       label="network manager thinks that the active network is offline"/>
diff --git a/tools/metrics/histograms/metadata/ios/histograms.xml b/tools/metrics/histograms/metadata/ios/histograms.xml
index 592a6d5..a4a72fb 100644
--- a/tools/metrics/histograms/metadata/ios/histograms.xml
+++ b/tools/metrics/histograms/metadata/ios/histograms.xml
@@ -182,6 +182,17 @@
   </summary>
 </histogram>
 
+<histogram name="IOS.CredentialExtension.KeychainSavePasswordFailureCount"
+    units="count" expires_after="2022-03-31">
+  <owner>javierrobles@chromium.org</owner>
+  <owner>rkgibson@google.com</owner>
+  <summary>
+    The number of times the Credential Extension failed to save a
+    newly-generated password into the system Keychain since last Chrome
+    foregrounding. Reported when Chrome is put in foreground.
+  </summary>
+</histogram>
+
 <histogram name="IOS.CredentialExtension.PasswordUseCount" units="count"
     expires_after="2021-12-11">
   <owner>javierrobles@chromium.org</owner>
@@ -215,6 +226,17 @@
   </summary>
 </histogram>
 
+<histogram name="IOS.CredentialExtension.SaveCredentialFailureCount"
+    units="count" expires_after="2022-03-31">
+  <owner>javierrobles@chromium.org</owner>
+  <owner>rkgibson@google.com</owner>
+  <summary>
+    The number of times the Credential Extension failed to save a
+    newly-generated credential to disk since last Chrome foregrounding. Reported
+    when Chrome is put in foreground.
+  </summary>
+</histogram>
+
 <histogram name="IOS.CredentialExtension.SearchCount" units="count"
     expires_after="2021-12-11">
   <owner>javierrobles@chromium.org</owner>
@@ -1222,8 +1244,30 @@
   </summary>
 </histogram>
 
+<histogram name="IOS.TabGrid.Selection.AddToBookmarks" units="Tabs"
+    expires_after="2022-01-30">
+  <owner>mrefaat@chromium.org</owner>
+  <owner>michaeldo@chromium.org</owner>
+  <owner>bling-team@google.com</owner>
+  <summary>
+    The number of Tab Grid items bookmarked with a single add to bookmarks
+    operation from the tab grid selection mode.
+  </summary>
+</histogram>
+
+<histogram name="IOS.TabGrid.Selection.AddToReadingList" units="Tabs"
+    expires_after="2022-01-30">
+  <owner>mrefaat@chromium.org</owner>
+  <owner>michaeldo@chromium.org</owner>
+  <owner>bling-team@google.com</owner>
+  <summary>
+    The number of Tab Grid items added to reading list with a single add to
+    reading list operation from the tab grid selection mode.
+  </summary>
+</histogram>
+
 <histogram name="IOS.TabGrid.Selection.CloseTabs" units="Tabs"
-    expires_after="M95">
+    expires_after="2022-01-30">
   <owner>mrefaat@chromium.org</owner>
   <owner>michaeldo@chromium.org</owner>
   <owner>bling-team@google.com</owner>
@@ -1233,6 +1277,17 @@
   </summary>
 </histogram>
 
+<histogram name="IOS.TabGrid.Selection.ShareTabs" units="Tabs"
+    expires_after="2022-01-30">
+  <owner>mrefaat@chromium.org</owner>
+  <owner>michaeldo@chromium.org</owner>
+  <owner>bling-team@google.com</owner>
+  <summary>
+    The number of Tab Grid items shared with a single share operation from the
+    tab grid selection mode.
+  </summary>
+</histogram>
+
 <histogram name="IOS.TabSwitcher.PageChangeInteraction"
     enum="IOSTabSwitcherPageChangeInteraction" expires_after="M99">
   <owner>marq@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/net/histograms.xml b/tools/metrics/histograms/metadata/net/histograms.xml
index 95c542d..60ecc75 100644
--- a/tools/metrics/histograms/metadata/net/histograms.xml
+++ b/tools/metrics/histograms/metadata/net/histograms.xml
@@ -5063,6 +5063,15 @@
   <summary>Socket connected status in SpdySession::CreateStream.</summary>
 </histogram>
 
+<histogram name="Net.SpdySession.GoAwayReceived" enum="Http2WireErrorCodes"
+    expires_after="2022-07-22">
+  <owner>bnc@chromium.org</owner>
+  <owner>src/net/OWNERS</owner>
+  <summary>
+    Records the error code value received in each HTTP/2 GOAWAY frame.
+  </summary>
+</histogram>
+
 <histogram name="Net.SpdySession.PushedAndUnclaimedBytes" units="count"
     expires_after="2022-05-11">
   <owner>dschinazi@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/optimization/histograms.xml b/tools/metrics/histograms/metadata/optimization/histograms.xml
index d760445..6e27f32 100644
--- a/tools/metrics/histograms/metadata/optimization/histograms.xml
+++ b/tools/metrics/histograms/metadata/optimization/histograms.xml
@@ -33,7 +33,7 @@
 </variants>
 
 <histogram base="true" name="OptimizationGuide.ApplyDecision"
-    enum="OptimizationGuideOptimizationTypeDecision" expires_after="M94">
+    enum="OptimizationGuideOptimizationTypeDecision" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -56,7 +56,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.ClearFetchedHints.StoreAvailable"
-    units="BooleanAvailable" expires_after="M94">
+    units="BooleanAvailable" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -66,7 +66,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.ClearHostModelFeatures.StoreAvailable"
-    units="BooleanAvailable" expires_after="M94">
+    units="BooleanAvailable" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -76,7 +76,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintCache.HintType.Loaded"
-    enum="HintCacheStoreEntryType" expires_after="M94">
+    enum="HintCacheStoreEntryType" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -87,7 +87,7 @@
 
 <histogram name="OptimizationGuide.HintCacheLevelDBStore.LoadMetadataResult"
     enum="OptimizationGuideHintCacheLevelDBStoreLoadMetadataResult"
-    expires_after="M94">
+    expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -97,7 +97,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintCacheLevelDBStore.Status"
-    enum="OptimizationGuideHintCacheLevelDBStoreStatus" expires_after="M94">
+    enum="OptimizationGuideHintCacheLevelDBStoreStatus" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -107,7 +107,7 @@
 
 <histogram base="true"
     name="OptimizationGuide.HintsFetcher.GetHintsRequest.ActiveRequestCanceled"
-    units="counts" expires_after="M94">
+    units="counts" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -127,7 +127,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintsFetcher.GetHintsRequest.HintCount"
-    units="units" expires_after="M94">
+    units="units" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -137,7 +137,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount"
-    units="total host count" expires_after="M94">
+    units="total host count" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -167,7 +167,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintsFetcher.GetHintsRequest.UrlCount"
-    units="total url count" expires_after="M94">
+    units="total url count" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -177,7 +177,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintsFetcher.RequestStatus.BatchUpdate"
-    enum="OptimizationGuideHintsFetcherRequestStatus" expires_after="M94">
+    enum="OptimizationGuideHintsFetcherRequestStatus" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -188,7 +188,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintsFetcher.RequestStatus.PageNavigation"
-    enum="OptimizationGuideHintsFetcherRequestStatus" expires_after="M94">
+    enum="OptimizationGuideHintsFetcherRequestStatus" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -255,7 +255,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.HintsManager.ActiveTabUrlsToFetchFor"
-    units="counts" expires_after="M94">
+    units="counts" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -268,7 +268,7 @@
 
 <histogram
     name="OptimizationGuide.HintsManager.ConcurrentPageNavigationFetches"
-    units="counts" expires_after="M94">
+    units="counts" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -280,7 +280,7 @@
 
 <histogram
     name="OptimizationGuide.HintsManager.PageNavigationHintsReturnedBeforeDataFlushed"
-    units="BooleanStored" expires_after="M94">
+    units="BooleanStored" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -304,7 +304,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.IsPredictionModelValid" units="BooleanValid"
-    expires_after="M94">
+    expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -329,7 +329,7 @@
 
 <histogram
     name="OptimizationGuide.ModelExecutor.ModelAvailableToLoad.{OptimizationTarget}"
-    enum="BooleanAvailable" expires_after="M94">
+    enum="BooleanAvailable" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -346,7 +346,7 @@
 
 <histogram
     name="OptimizationGuide.ModelExecutor.ModelLoadingDuration.{OptimizationTarget}"
-    units="ms" expires_after="M94">
+    units="ms" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -359,7 +359,7 @@
 
 <histogram
     name="OptimizationGuide.ModelExecutor.ModelLoadingResult.{OptimizationTarget}"
-    enum="ModelExecutorLoadingState" expires_after="M94">
+    enum="ModelExecutorLoadingState" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -387,7 +387,7 @@
 
 <histogram
     name="OptimizationGuide.ModelExecutor.TaskExecutionLatency.{OptimizationTarget}"
-    units="ms" expires_after="M94">
+    units="ms" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -400,7 +400,7 @@
 
 <histogram
     name="OptimizationGuide.ModelExecutor.TaskSchedulingLatency.{OptimizationTarget}"
-    units="ms" expires_after="M94">
+    units="ms" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -413,7 +413,7 @@
 
 <histogram
     name="OptimizationGuide.ModelExecutor.TimeSincePreviousRun.{OptimizationTarget}"
-    units="ms" expires_after="M94">
+    units="ms" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -424,7 +424,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.ModelFilesVerified.{OptimizationTarget}"
-    enum="BooleanValid" expires_after="M94">
+    enum="BooleanValid" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -449,7 +449,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.OptimizationHintsComponent.MajorVersion"
-    units="major version number" expires_after="M94">
+    units="major version number" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -461,7 +461,7 @@
 
 <histogram
     name="OptimizationGuide.PageContentAnnotationsService.ContentAnnotated"
-    enum="BooleanAnnotated" expires_after="M94">
+    enum="BooleanAnnotated" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -474,7 +474,7 @@
 <histogram
     name="OptimizationGuide.PageContentAnnotationsService.ContentAnnotationsStorageStatus"
     enum="OptimizationGuidePageContentAnnotationsStorageStatus"
-    expires_after="M94">
+    expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -486,7 +486,7 @@
 
 <histogram
     name="OptimizationGuide.PageContentAnnotationsService.ModelAvailable"
-    enum="BooleanAvailable" expires_after="M94">
+    enum="BooleanAvailable" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -497,7 +497,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PageTextDump.AbandonedRequests"
-    units="count" expires_after="M94">
+    units="count" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -509,7 +509,7 @@
 
 <histogram
     name="OptimizationGuide.PageTextDump.FrameDumpLength.{PageTextDumpEvent}"
-    units="bytes" expires_after="M94">
+    units="bytes" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -528,7 +528,7 @@
 
 <histogram
     name="OptimizationGuide.PageTextDump.OutstandingRequests.DidFinishLoad"
-    units="count" expires_after="M94">
+    units="count" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -538,7 +538,7 @@
 
 <histogram
     name="OptimizationGuide.PageTextDump.TimeUntilFrameDisconnected.{PageTextDumpEvent}"
-    units="ms" expires_after="M94">
+    units="ms" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -557,7 +557,7 @@
 
 <histogram
     name="OptimizationGuide.PageTextDump.TimeUntilFrameDumpCompleted.{PageTextDumpEvent}"
-    units="ms" expires_after="M94">
+    units="ms" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -576,7 +576,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionManager.DownloadServiceAvailabilityBlockedFetch"
-    units="BooleanBlocked" expires_after="M94">
+    units="BooleanBlocked" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -588,7 +588,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionManager.HasHostModelFeaturesForHost"
-    enum="Boolean" expires_after="M94">
+    enum="Boolean" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -598,7 +598,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PredictionManager.HostModelFeaturesMapSize"
-    units="total host count" expires_after="M94">
+    units="total host count" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -609,7 +609,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PredictionManager.IsDownloadUrlValid"
-    units="BooleanValid" expires_after="M94">
+    units="BooleanValid" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -620,7 +620,7 @@
 
 <histogram base="true"
     name="OptimizationGuide.PredictionManager.ModelTypeChanged"
-    units="BooleanChanged" expires_after="M94">
+    units="BooleanChanged" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -632,7 +632,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionModelDownloadManager.DownloadStatus"
-    enum="OptimizationGuidePredictionModelDownloadStatus" expires_after="M94">
+    enum="OptimizationGuidePredictionModelDownloadStatus" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -643,7 +643,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionModelDownloadManager.DownloadSucceeded"
-    units="BooleanSuccess" expires_after="M94">
+    units="BooleanSuccess" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -654,7 +654,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionModelDownloadManager.ReplaceFileError"
-    enum="PlatformFileError" expires_after="M94">
+    enum="PlatformFileError" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -667,7 +667,7 @@
 
 <histogram base="true"
     name="OptimizationGuide.PredictionModelEvaluationLatency" units="ms"
-    expires_after="M94">
+    expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -679,7 +679,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PredictionModelExpired"
-    units="BooleanExpired" expires_after="M94">
+    units="BooleanExpired" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
@@ -720,7 +720,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionModelFetcher.GetModelsResponse.NetErrorCode"
-    enum="NetErrorCodes" expires_after="M94">
+    enum="NetErrorCodes" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -731,7 +731,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionModelFetcher.GetModelsResponse.Status"
-    enum="HttpResponseCode" expires_after="M94">
+    enum="HttpResponseCode" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -741,7 +741,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PredictionModelLoadedVersion"
-    units="version number" expires_after="M94">
+    units="version number" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -753,7 +753,7 @@
 
 <histogram
     name="OptimizationGuide.PredictionModelStore.HostModelFeaturesLoadMetadataResult"
-    enum="BooleanLoaded" expires_after="M94">
+    enum="BooleanLoaded" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -763,7 +763,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PredictionModelUpdateVersion"
-    units="version number" expires_after="M94">
+    units="version number" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -773,7 +773,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PredictionModelValidationLatency" units="ms"
-    expires_after="M94">
+    expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -796,7 +796,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.ProcessingComponentAtShutdown"
-    enum="BooleanYesNo" expires_after="M94">
+    enum="BooleanYesNo" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -806,7 +806,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PushNotifications.CachedNotificationCount"
-    units="count" expires_after="M94">
+    units="count" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -818,7 +818,7 @@
 
 <histogram
     name="OptimizationGuide.PushNotifications.CachedNotificationsHandledSuccessfully"
-    enum="BooleanSuccess" expires_after="M94">
+    enum="BooleanSuccess" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -828,7 +828,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PushNotifications.DidOverflow"
-    enum="Boolean" expires_after="M94">
+    enum="Boolean" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -838,7 +838,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PushNotifications.GotPushNotification"
-    enum="Boolean" expires_after="M94">
+    enum="Boolean" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>Records a true sample for every incoming push notification.</summary>
@@ -846,7 +846,7 @@
 
 <histogram
     name="OptimizationGuide.PushNotifications.PushNotificationHandledSuccessfully"
-    enum="BooleanSuccess" expires_after="M94">
+    enum="BooleanSuccess" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -856,7 +856,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PushNotifications.ReadCacheResult"
-    enum="OptimizationGuideReadCacheResult" expires_after="M94">
+    enum="OptimizationGuideReadCacheResult" expires_after="M106">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
@@ -880,7 +880,7 @@
 
 <histogram
     name="OptimizationGuide.ShouldTargetNavigation.PredictionModelStatus"
-    enum="OptimizationGuidePredictionManagerModelStatus" expires_after="M94">
+    enum="OptimizationGuidePredictionManagerModelStatus" expires_after="M106">
   <owner>mcrouse@chromium.org</owner>
   <owner>sophiechang@chromium.org</owner>
   <summary>
@@ -892,7 +892,7 @@
 </histogram>
 
 <histogram base="true" name="OptimizationGuide.TargetDecision"
-    enum="OptimizationGuideOptimizationTargetDecision" expires_after="M94">
+    enum="OptimizationGuideOptimizationTargetDecision" expires_after="M106">
   <owner>sophiechang@chromium.org</owner>
   <owner>mcrouse@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml
index 5f3474df..09850a5 100644
--- a/tools/metrics/histograms/metadata/others/histograms.xml
+++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -17870,7 +17870,7 @@
 </histogram>
 
 <histogram name="UpgradeDetector.DaysBeforeUpgrade" units="days"
-    expires_after="2022-01-02">
+    expires_after="2022-05-31">
   <owner>emshack@chromium.org</owner>
   <owner>pbos@chromium.org</owner>
   <summary>
@@ -17883,7 +17883,7 @@
 </histogram>
 
 <histogram name="UpgradeDetector.HoursBeforeUpgrade" units="hours"
-    expires_after="M94">
+    expires_after="2022-05-31">
   <owner>emshack@chromium.org</owner>
   <owner>pbos@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml
index ce9176a..39419c50 100644
--- a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml
+++ b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml
@@ -925,6 +925,30 @@
 </histogram>
 
 <histogram
+    name="SafeBrowsing.NavigationObserver.DroppedReferrerChainEntries.ClientRedirect"
+    units="units" expires_after="2022-07-23">
+  <owner>bdea@chromium.org</owner>
+  <owner>chrome-safebrowsing-alerts@google.com</owner>
+  <summary>
+    Logs the number of extra client redirect referrer chain entries that were
+    cleared. This is logged when the referrer chain is being created for Safe
+    Browsing pings (i.e. Phishguard, CSD).
+  </summary>
+</histogram>
+
+<histogram
+    name="SafeBrowsing.NavigationObserver.DroppedReferrerChainEntries.RecentNavigation"
+    units="units" expires_after="2022-07-23">
+  <owner>bdea@chromium.org</owner>
+  <owner>chrome-safebrowsing-alerts@google.com</owner>
+  <summary>
+    Logs the number of extra recent navigation (non-user gestured) referrer
+    chain entries that were cleared. This is logged when the referrer chain is
+    being created for Safe Browsing pings (i.e. Phishguard, CSD).
+  </summary>
+</histogram>
+
+<histogram
     name="SafeBrowsing.NavigationObserver.IdentifyReferrerChainByEventURLTime"
     units="ms" expires_after="2022-01-23">
   <owner>xinghuilu@chromium.org</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 610e25f..53d6dbf 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -1,16 +1,16 @@
 {
     "trace_processor_shell": {
         "win": {
-            "hash": "f867daebd5d6e2316a152f243a699e96da699c65",
-            "remote_path": "perfetto_binaries/trace_processor_shell/win/5d5769f0b54a2a505a62194493f1047dc3b686d1/trace_processor_shell.exe"
+            "hash": "dfe3ae9820abd756129c53fc0ec7f50c0851723a",
+            "remote_path": "perfetto_binaries/trace_processor_shell/win/70e408c9bc8610ab9a8484b2ed91461d8416166e/trace_processor_shell.exe"
         },
         "mac": {
             "hash": "e7000eeeefed60f263b77eea1156606a18304379",
-            "remote_path": "perfetto_binaries/trace_processor_shell/mac/5d5769f0b54a2a505a62194493f1047dc3b686d1/trace_processor_shell"
+            "remote_path": "perfetto_binaries/trace_processor_shell/mac/70e408c9bc8610ab9a8484b2ed91461d8416166e/trace_processor_shell"
         },
         "linux": {
             "hash": "672ed966e2e8072a7d6322367ac35c5fedd1ff9f",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/5d5769f0b54a2a505a62194493f1047dc3b686d1/trace_processor_shell"
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/70e408c9bc8610ab9a8484b2ed91461d8416166e/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index cbdcd11..60531d2 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -58,9 +58,7 @@
  <item id="cloud_print" added_in_milestone="65" hash_code="111712433" type="2" content_hash_code="60926140" os_list="linux,windows" semantics_fields="1,5" policy_fields="-1,3,4" file_path="chrome/service/cloud_print/cloud_print_url_fetcher.cc"/>
  <item id="cloud_print_backend" added_in_milestone="62" hash_code="71578042" type="1" second_id="111712433" content_hash_code="85425333" os_list="linux,windows" semantics_fields="2,3,4" file_path="chrome/service/cloud_print/cloud_print_proxy_backend.cc"/>
  <item id="cloud_print_credential_update" added_in_milestone="66" hash_code="137420486" type="0" content_hash_code="1179808" os_list="linux,windows" file_path="chrome/service/cloud_print/cloud_print_proxy_backend.cc"/>
- <item id="cloud_print_privet_register" added_in_milestone="62" hash_code="24978481" type="0" content_hash_code="131359002" os_list="linux,windows" file_path="chrome/browser/printing/cloud_print/gcd_api_flow_impl.cc"/>
  <item id="cloud_print_proxy" added_in_milestone="62" hash_code="50859288" type="1" second_id="111712433" content_hash_code="90868083" os_list="linux,windows" semantics_fields="2,3,4" file_path="chrome/service/cloud_print/cloud_print_proxy.cc"/>
- <item id="cloud_print_search" added_in_milestone="62" hash_code="132055347" type="0" content_hash_code="123783474" os_list="linux,windows" file_path="chrome/browser/printing/cloud_print/gcd_api_flow_impl.cc"/>
  <item id="cloud_speech_recognition" added_in_milestone="85" hash_code="61001455" type="0" content_hash_code="114921835" os_list="linux,windows" file_path="chrome/services/speech/cloud_speech_recognition_client.cc"/>
  <item id="content_hash_verification_job" added_in_milestone="62" hash_code="64733114" type="0" content_hash_code="127912411" os_list="linux,windows" file_path="extensions/browser/content_hash_fetcher.cc"/>
  <item id="content_resource_fetcher" added_in_milestone="63" hash_code="70796791" type="0" deprecated="2017-09-16" content_hash_code="135648626" file_path=""/>
@@ -257,7 +255,6 @@
  <item id="previews_litepage_prober" added_in_milestone="78" hash_code="33813109" type="0" deprecated="2020-04-23" content_hash_code="52572789" file_path="chrome/browser/previews/previews_lite_page_redirect_decider.cc"/>
  <item id="previews_prober" added_in_milestone="77" hash_code="41010697" type="0" deprecated="2019-07-24" content_hash_code="51581107" file_path=""/>
  <item id="printer_job_handler" added_in_milestone="62" hash_code="67638271" type="1" second_id="111712433" content_hash_code="75712693" os_list="linux,windows" semantics_fields="2,3,4" file_path="chrome/service/cloud_print/printer_job_handler.cc"/>
- <item id="privet_http_impl" added_in_milestone="62" hash_code="71251498" type="0" content_hash_code="107348604" os_list="linux,windows" file_path="chrome/browser/printing/cloud_print/privet_http_impl.cc"/>
  <item id="profile_avatar" added_in_milestone="62" hash_code="51164680" type="0" content_hash_code="113550845" os_list="linux,windows" file_path="chrome/browser/profiles/profile_avatar_downloader.cc"/>
  <item id="profile_resetter_upload" added_in_milestone="62" hash_code="105330607" type="0" content_hash_code="129329171" os_list="linux,windows" file_path="chrome/browser/profile_resetter/reset_report_uploader.cc"/>
  <item id="promo_service" added_in_milestone="72" hash_code="67052219" type="0" content_hash_code="32939033" os_list="linux,windows" file_path="chrome/browser/new_tab_page/promos/promo_service.cc"/>
diff --git a/ui/android/java/res/values/color_palette.xml b/ui/android/java/res/values/color_palette.xml
index 238acba..91e8c78 100644
--- a/ui/android/java/res/values/color_palette.xml
+++ b/ui/android/java/res/values/color_palette.xml
@@ -29,6 +29,7 @@
     <color name="baseline_neutral_0_with_neutral_600_alpha_20_with_primary_600_2" tools:ignore="UnusedResources">#DADBDE</color>
     <color name="baseline_neutral_50">#F2F2F2</color>
     <color name="baseline_neutral_100">#E3E3E3</color>
+    <color name="baseline_neutral_100_alpha_10">#19E3E3E3</color>
     <color name="baseline_neutral_100_alpha_12">#1EE3E3E3</color>
     <color name="baseline_neutral_100_alpha_38">#61E3E3E3</color>
     <color name="baseline_neutral_200">#C7C7C7</color>
@@ -41,6 +42,7 @@
     <color name="baseline_neutral_800">#303030</color>
     <color name="baseline_neutral_800_alpha_38">#61303030</color>
     <color name="baseline_neutral_900">#1F1F1F</color>
+    <color name="baseline_neutral_900_alpha_10">#191F1F1F</color>
     <color name="baseline_neutral_900_alpha_12">#1E1F1F1F</color>
     <color name="baseline_neutral_900_alpha_38">#611F1F1F</color>
     <color name="baseline_neutral_900_with_neutral_100_alpha_38">#696969</color>
diff --git a/ui/android/java/res/values/semantic_colors_non_adaptive.xml b/ui/android/java/res/values/semantic_colors_non_adaptive.xml
index c93bc5b..46245de 100644
--- a/ui/android/java/res/values/semantic_colors_non_adaptive.xml
+++ b/ui/android/java/res/values/semantic_colors_non_adaptive.xml
@@ -121,9 +121,10 @@
     <!-- Same as ?attr/colorOnSurfaceVariant. -->
     <color name="default_control_color_normal_light" tools:ignore="UnusedResources">@color/baseline_neutral_variant_700</color>
     <color name="default_control_color_normal_dark" tools:ignore="UnusedResources">@color/baseline_neutral_variant_200</color>
-    <!-- TODO(https://crbug/1216642): Figure out how to route this correctly. -->
-    <color name="default_control_color_highlight_light" tools:ignore="UnusedResources">@color/baseline_neutral_900</color>
-    <color name="default_control_color_highlight_dark" tools:ignore="UnusedResources">@color/baseline_neutral_100</color>
+    <!-- TODO(https://crbug/1216642): Rework to route through
+         ?attr/colorOnSurface with alpha. -->
+    <color name="default_control_color_highlight_light" tools:ignore="UnusedResources">@color/baseline_neutral_900_alpha_10</color>
+    <color name="default_control_color_highlight_dark" tools:ignore="UnusedResources">@color/baseline_neutral_100_alpha_10</color>
 
     <!--  Filled Button  -->
     <color name="filled_button_bg_color_dark">@color/modern_blue_600</color>
diff --git a/ui/events/ozone/evdev/event_device_info.cc b/ui/events/ozone/evdev/event_device_info.cc
index cc2f4f6..bf56271 100644
--- a/ui/events/ozone/evdev/event_device_info.cc
+++ b/ui/events/ozone/evdev/event_device_info.cc
@@ -38,11 +38,11 @@
     {0x045e, 0x082a},  // Microsoft Pro IntelliMouse
     {0x045e, 0x082f},  // Microsoft Bluetooth Mouse
     {0x045e, 0x0b05},  // Xbox One Elite Series 2 gamepad
-    {0x046d, 0x4069},  // Logitech MX Master 2S (Unifying)
+    {0x046d, 0x4069},  // Logitech MX Master 2S (Unifying) // nocheck
     {0x046d, 0xb00d},  // Logitech T630 Ultrathin
     {0x046d, 0xb011},  // Logitech M558
     {0x046d, 0xb016},  // Logitech M535
-    {0x046d, 0xb019},  // Logitech MX Master 2S (Bluetooth)
+    {0x046d, 0xb019},  // Logitech MX Master 2S (Bluetooth) // nocheck
     {0x046d, 0xb503},  // Logitech Spotlight Presentation Remote (Bluetooth)
     {0x046d, 0xc093},  // Logitech M500s
     {0x046d, 0xc53e},  // Logitech Spotlight Presentation Remote (USB dongle)
@@ -602,7 +602,7 @@
   } kUSBInternalDevices[] = {
       {0x18d1, 0x502b},  // Google, Hammer PID (soraka)
       {0x18d1, 0x5030},  // Google, Whiskers PID (nocturne)
-      {0x18d1, 0x503c},  // Google, Masterball PID (krane)
+      {0x18d1, 0x503c},  // Google, Masterball PID (krane) // nocheck
       {0x18d1, 0x503d},  // Google, Magnemite PID (kodama)
       {0x18d1, 0x5044},  // Google, Moonball PID (kakadu)
       {0x18d1, 0x504c},  // Google, Zed PID (coachz)
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index 64ce9a8c..f6050d1 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -1090,6 +1090,7 @@
 
   sources = [
     "accessible_pane_view_unittest.cc",
+    "animation/animation_builder_unittest.cc",
     "animation/bounds_animator_unittest.cc",
     "animation/bubble_slide_animator_unittest.cc",
     "animation/compositor_animation_runner_unittest.cc",
diff --git a/ui/views/animation/animation_builder.cc b/ui/views/animation/animation_builder.cc
index 0b8e9fd..29e596a 100644
--- a/ui/views/animation/animation_builder.cc
+++ b/ui/views/animation/animation_builder.cc
@@ -4,88 +4,82 @@
 
 #include "ui/views/animation/animation_builder.h"
 
-#include <utility>
-
 #include "ui/compositor/layer.h"
-#include "ui/compositor/layer_animation_element.h"
 #include "ui/compositor/layer_animation_sequence.h"
 #include "ui/compositor/layer_animator.h"
 
+namespace {
+constexpr auto kDefaultDuration = base::TimeDelta::FromMilliseconds(150);
+}  // namespace
+
 namespace views {
 
 AnimationBuilder::AnimationBuilder() = default;
 
 AnimationBuilder::~AnimationBuilder() {
+  // Collect all animations of a view into one vector so we can start them
+  // together.
+  std::map<View*, std::vector<ui::LayerAnimationSequence*>> all_animations;
   for (auto& animation : animation_sequences_) {
-    View* view = animation.first;
+    // TODO(elainechien): Change AnimationKey to a struct to avoid this
+    // confusing syntax.
+    View* view = animation.first.first;
     if (!view->layer())
       view->SetPaintToLayer();
-    std::vector<ui::LayerAnimationSequence*> sequences;
-    for (auto& s : animation.second) {
-      sequences.push_back(s.release());
-    }
-    view->layer()->GetAnimator()->StartTogether(sequences);
+    for (auto& s : animation.second)
+      all_animations[view].push_back(s.release());
   }
+  for (auto& a : all_animations)
+    a.first->layer()->GetAnimator()->StartTogether(a.second);
 }
 
 AnimationBuilder& AnimationBuilder::SetDuration(base::TimeDelta duration) {
-  if (in_sequence_)
-    old_duration_ = duration_;
   duration_ = duration;
   return *this;
 }
 
 AnimationBuilder& AnimationBuilder::SetOpacity(View* view,
                                                float target_opacity) {
-  // Create an entry if it doesn't exist.
-  if (animation_sequences_.find(view) == animation_sequences_.end())
-    CreateNewEntry(view);
-
-  AddAnimation(view, ui::LayerAnimationElement::CreateOpacityElement(
-                         target_opacity, duration_));
+  AnimationKey key = {view, ui::LayerAnimationElement::OPACITY};
+  AddAnimation(key, ui::LayerAnimationElement::CreateOpacityElement(
+                        target_opacity, duration_));
   return *this;
 }
 
 AnimationBuilder& AnimationBuilder::SetRoundedCorners(
     View* view,
     gfx::RoundedCornersF& rounded_corners) {
-  // Create an entry if it doesn't exist.
-  if (animation_sequences_.find(view) == animation_sequences_.end())
-    CreateNewEntry(view);
-
-  AddAnimation(view, ui::LayerAnimationElement::CreateRoundedCornersElement(
-                         rounded_corners, duration_));
+  AnimationKey key = {view, ui::LayerAnimationElement::ROUNDED_CORNERS};
+  AddAnimation(key, ui::LayerAnimationElement::CreateRoundedCornersElement(
+                        rounded_corners, duration_));
   return *this;
 }
 
 AnimationBuilder& AnimationBuilder::Repeat() {
   // Go through all empty sequences added in StartSequence() and set the correct
   // repeating behavior.
-  if (in_sequence_) {
-    is_sequence_repeating_ = true;
-    for (auto& animation : animation_sequences_) {
-      animation_sequences_[animation.first].back()->set_is_repeating(
-          is_sequence_repeating_);
-    }
+  is_sequence_repeating_ = true;
+  for (auto& animation : animation_sequences_) {
+    animation_sequences_[animation.first].back()->set_is_repeating(
+        is_sequence_repeating_);
   }
   return *this;
 }
 
-AnimationBuilder& AnimationBuilder::StartSequence() {
-  in_sequence_ = true;
-  // Add an empty sequence for all existing views.
+AnimationBuilder& AnimationBuilder::NewSequence() {
+  // Add an empty sequence for all existing views. If the same property is
+  // animated at the same time in different sequences PreemptionStrategy will
+  // determine how the animations are replaced.
   for (auto& animation : animation_sequences_) {
-    std::unique_ptr<ui::LayerAnimationSequence> new_sequence =
-        std::make_unique<ui::LayerAnimationSequence>();
+    auto new_sequence = std::make_unique<ui::LayerAnimationSequence>();
     animation_sequences_[animation.first].push_back(std::move(new_sequence));
   }
   return *this;
 }
 
 AnimationBuilder& AnimationBuilder::EndSequence() {
-  in_sequence_ = false;
   is_sequence_repeating_ = false;
-  duration_ = old_duration_;
+  duration_ = kDefaultDuration;
   // Remove sequences that were not added to.
   for (auto& animation : animation_sequences_) {
     if (animation_sequences_[animation.first].back()->size() == 0) {
@@ -95,31 +89,21 @@
   return *this;
 }
 
-void AnimationBuilder::CreateNewEntry(View* view) {
-  animation_sequences_[view] =
-      std::vector<std::unique_ptr<ui::LayerAnimationSequence>>();
-  if (in_sequence_) {
-    // New empty sequence has not been added in StartSequence yet
-    std::unique_ptr<ui::LayerAnimationSequence> new_sequence =
-        std::make_unique<ui::LayerAnimationSequence>();
-    new_sequence->set_is_repeating(is_sequence_repeating_);
-    animation_sequences_[view].push_back(std::move(new_sequence));
-  }
+void AnimationBuilder::CreateNewEntry(const AnimationKey& key) {
+  auto new_sequence = std::make_unique<ui::LayerAnimationSequence>();
+  new_sequence->set_is_repeating(is_sequence_repeating_);
+  animation_sequences_[key].push_back(std::move(new_sequence));
 }
 
+// TODO(elainechien): Add a DCHECK to make sure in one block we do not add two
+// different property changes on the same view.
 void AnimationBuilder::AddAnimation(
-    View* view,
+    const AnimationKey& key,
     std::unique_ptr<ui::LayerAnimationElement> element) {
-  if (in_sequence_) {
-    // Add to existing sequence so that these animations are done sequentially
-    animation_sequences_[view].back()->AddElement(std::move(element));
-  } else {
-    // Create a new sequence with one element
-    std::unique_ptr<ui::LayerAnimationSequence> new_sequence =
-        std::make_unique<ui::LayerAnimationSequence>();
-    new_sequence->AddElement(std::move(element));
-    animation_sequences_[view].push_back(std::move(new_sequence));
-  }
+  // Create an entry if it doesn't exist.
+  if (animation_sequences_.find(key) == animation_sequences_.end())
+    CreateNewEntry(key);
+  animation_sequences_[key].back()->AddElement(std::move(element));
 }
 
 }  // namespace views
diff --git a/ui/views/animation/animation_builder.h b/ui/views/animation/animation_builder.h
index e406a7ac..d2611ee 100644
--- a/ui/views/animation/animation_builder.h
+++ b/ui/views/animation/animation_builder.h
@@ -7,8 +7,10 @@
 
 #include <map>
 #include <memory>
+#include <utility>
 #include <vector>
 
+#include "ui/compositor/layer_animation_element.h"
 #include "ui/views/view.h"
 #include "ui/views/views_export.h"
 
@@ -34,23 +36,27 @@
   AnimationBuilder& SetRoundedCorners(views::View* view,
                                       gfx::RoundedCornersF& rounded_corners);
 
-  // No effect if called before StartSequence();
+  // No effect if called before NewSequence();
   AnimationBuilder& Repeat();
-  // Currently does not support nested sequences
-  AnimationBuilder& StartSequence();
+  AnimationBuilder& NewSequence();
   AnimationBuilder& EndSequence();
 
  private:
-  void CreateNewEntry(View* view);
-  void AddAnimation(View* view,
+  // We may want to change this to our own struct.
+  using AnimationKey =
+      std::pair<View*, ui::LayerAnimationElement::AnimatableProperty>;
+
+  void CreateNewEntry(const AnimationKey& key);
+  void AddAnimation(const AnimationKey& key,
                     std::unique_ptr<ui::LayerAnimationElement> element);
 
-  std::map<View*, std::vector<std::unique_ptr<ui::LayerAnimationSequence>>>
+  std::map<AnimationKey,
+           std::vector<std::unique_ptr<ui::LayerAnimationSequence>>>
       animation_sequences_;
-  bool in_sequence_ = false;
-  bool is_sequence_repeating_ = false;
+
   base::TimeDelta duration_ = base::TimeDelta::FromSeconds(1);
-  base::TimeDelta old_duration_;
+
+  bool is_sequence_repeating_ = false;
 };
 }  // namespace views
 
diff --git a/ui/views/animation/animation_builder_unittest.cc b/ui/views/animation/animation_builder_unittest.cc
new file mode 100644
index 0000000..88836a7
--- /dev/null
+++ b/ui/views/animation/animation_builder_unittest.cc
@@ -0,0 +1,106 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views/animation/animation_builder.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/compositor/layer.h"
+#include "ui/compositor/layer_animator.h"
+#include "ui/compositor/scoped_animation_duration_scale_mode.h"
+#include "ui/compositor/test/layer_animator_test_controller.h"
+#include "ui/compositor/test/test_layer_animation_delegate.h"
+#include "ui/gfx/geometry/rounded_corners_f.h"
+#include "ui/views/test/views_test_base.h"
+#include "ui/views/view.h"
+
+namespace views {
+
+class AnimationBuilderTest : public ViewsTestBase {
+ public:
+  AnimationBuilderTest() = default;
+
+  void SetUp() override {
+    ViewsTestBase::SetUp();
+    // Animation durations are set to zero in ViewsTestBase::SetUp. Set to
+    // normal duration so we can test animation progression.
+    animation_duration_scale_ =
+        std::make_unique<ui::ScopedAnimationDurationScaleMode>(
+            ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
+  }
+
+ private:
+  std::unique_ptr<ui::ScopedAnimationDurationScaleMode>
+      animation_duration_scale_;
+};
+
+// This test builds two animation sequences and checks that the properties are
+// animated in the specified durations.
+
+TEST_F(AnimationBuilderTest, SimpleAnimation) {
+  auto first_delegate = std::make_unique<ui::TestLayerAnimationDelegate>();
+  auto second_delegate = std::make_unique<ui::TestLayerAnimationDelegate>();
+  auto first_animating_view = std::make_unique<View>();
+  auto second_animating_view = std::make_unique<View>();
+
+  // Animation Builder will paint to layer automatically, but since we need to
+  // access the layer, paint first.
+  first_animating_view->SetPaintToLayer();
+  second_animating_view->SetPaintToLayer();
+
+  ui::LayerAnimator* first_layer_animator =
+      first_animating_view->layer()->GetAnimator();
+  first_layer_animator->set_disable_timer_for_test(true);
+  first_layer_animator->SetDelegate(first_delegate.get());
+
+  ui::LayerAnimator* second_layer_animator =
+      second_animating_view->layer()->GetAnimator();
+  second_layer_animator->set_disable_timer_for_test(true);
+  second_layer_animator->SetDelegate(second_delegate.get());
+
+  ui::LayerAnimatorTestController first_test_controller(first_layer_animator);
+  ui::LayerAnimatorTestController second_test_controller(second_layer_animator);
+
+  gfx::RoundedCornersF rounded_corners(12.0f, 12.0f, 12.0f, 12.0f);
+  constexpr auto kDelay = base::TimeDelta::FromSeconds(3);
+
+  {
+    AnimationBuilder b;
+    b.NewSequence()
+        .SetDuration(kDelay)
+        .SetOpacity(first_animating_view.get(), 0.4f)
+        .SetRoundedCorners(first_animating_view.get(), rounded_corners)
+        .EndSequence()
+        .NewSequence()
+        .SetDuration(kDelay * 2)
+        .SetOpacity(second_animating_view.get(), 0.9f)
+        .EndSequence();
+  }
+
+  // Original value before the animation steps.
+  EXPECT_TRUE(first_layer_animator->is_animating());
+  EXPECT_TRUE(second_layer_animator->is_animating());
+  EXPECT_FLOAT_EQ(first_delegate->GetOpacityForAnimation(), 1.0);
+  EXPECT_FLOAT_EQ(first_delegate->GetRoundedCornersForAnimation().upper_left(),
+                  0.0);
+  EXPECT_FLOAT_EQ(second_delegate->GetOpacityForAnimation(), 1.0);
+
+  first_test_controller.StartThreadedAnimationsIfNeeded();
+  second_test_controller.StartThreadedAnimationsIfNeeded();
+  first_animating_view->layer()->GetAnimator()->Step(base::TimeTicks::Now() +
+                                                     kDelay);
+  second_animating_view->layer()->GetAnimator()->Step(base::TimeTicks::Now() +
+                                                      kDelay);
+  EXPECT_FLOAT_EQ(first_delegate->GetOpacityForAnimation(), 0.4f);
+  // Sanity check one of the corners.
+  EXPECT_FLOAT_EQ(first_delegate->GetRoundedCornersForAnimation().upper_left(),
+                  12.0f);
+  // This animation should not be finished yet. The specific value can be tested
+  // more extensively after tween support is added.
+  EXPECT_NE(second_delegate->GetOpacityForAnimation(), 0.9f);
+  base::TimeTicks last_step_time = second_layer_animator->last_step_time();
+  second_animating_view->layer()->GetAnimator()->Step(last_step_time + kDelay);
+  EXPECT_FLOAT_EQ(second_delegate->GetOpacityForAnimation(), 0.9f);
+}
+
+}  // namespace views
diff --git a/ui/views/controls/button/toggle_button.cc b/ui/views/controls/button/toggle_button.cc
index 86415fa..0715e922 100644
--- a/ui/views/controls/button/toggle_button.cc
+++ b/ui/views/controls/button/toggle_button.cc
@@ -153,6 +153,9 @@
       },
       this));
 
+  // Even though ToggleButton doesn't paint anything, declare us as flipped in
+  // RTL mode so that FocusRing correctly flips as well.
+  SetFlipCanvasOnPaintForRTLUI(true);
   SetInstallFocusRingOnFocus(true);
   FocusRing::Get(this)->SetPathGenerator(
       std::make_unique<FocusRingHighlightPathGenerator>());
diff --git a/ui/views/controls/focus_ring.cc b/ui/views/controls/focus_ring.cc
index 4e684c25..7eb9d40 100644
--- a/ui/views/controls/focus_ring.cc
+++ b/ui/views/controls/focus_ring.cc
@@ -4,6 +4,7 @@
 
 #include "ui/views/controls/focus_ring.h"
 
+#include <algorithm>
 #include <memory>
 #include <utility>
 
@@ -158,8 +159,22 @@
   // by the time layout happens. This may be due to synchronous Layout() calls.
   const SkPath path = GetPath();
   if (IsPathUsable(path)) {
-    focus_bounds.Union(
-        gfx::ToEnclosingRect(gfx::SkRectToRectF(path.getBounds())));
+    const gfx::Rect path_bounds =
+        gfx::ToEnclosingRect(gfx::SkRectToRectF(path.getBounds()));
+    const gfx::Rect expanded_bounds =
+        gfx::UnionRects(focus_bounds, path_bounds);
+    // These insets are how much we need to inset `focus_bounds` to enclose the
+    // path as well. They'll be either zero or negative (we're effectively
+    // outsetting).
+    gfx::Insets expansion_insets = focus_bounds.InsetsFrom(expanded_bounds);
+    // Make sure we extend the focus-ring bounds symmetrically on the X axis to
+    // retain the shared center point with parent(). This is required for canvas
+    // flipping to position the focus-ring path correctly after the RTL flip.
+    const int min_x_inset =
+        std::min(expansion_insets.left(), expansion_insets.right());
+    expansion_insets.set_left(min_x_inset);
+    expansion_insets.set_right(min_x_inset);
+    focus_bounds.Inset(expansion_insets);
   }
 
   focus_bounds.Inset(gfx::Insets(FocusRing::kHaloInset));
diff --git a/ui/views/examples/animation_example.cc b/ui/views/examples/animation_example.cc
index 713e19f..7c1f460 100644
--- a/ui/views/examples/animation_example.cc
+++ b/ui/views/examples/animation_example.cc
@@ -169,11 +169,15 @@
     for (auto* view : container->children()) {
       // Property setting calls on the builder would be replaced with
       // view->SetOpacity(..) after animation integration with view::View class
-      b.SetDuration(base::TimeDelta::FromSeconds(10))
+      b.NewSequence()
+          .SetDuration(base::TimeDelta::FromSeconds(10))
           .SetRoundedCorners(view, rounded_corners)
-          .StartSequence()
+          .EndSequence()
+          .NewSequence()
           .Repeat()
           .SetDuration(base::TimeDelta::FromSeconds(2))
+          // TODO(elainechien): These two opacity changes will be separated by a
+          // .Then() call as they happen in sequence.
           .SetOpacity(view, 0.4f)
           .SetOpacity(view, 0.9f)
           .EndSequence();
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java
index 6d3e7f9..80a1ad2 100644
--- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java
+++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java
@@ -9,9 +9,11 @@
 import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
 import static androidx.test.espresso.matcher.ViewMatchers.withText;
 
+import android.app.Instrumentation;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
+import android.support.test.InstrumentationRegistry;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
@@ -31,6 +33,7 @@
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.content_public.browser.test.util.TestTouchUtils;
 import org.chromium.weblayer.BrowserControlsOffsetCallback;
 import org.chromium.weblayer.Tab;
 import org.chromium.weblayer.TestWebLayer;
@@ -102,6 +105,22 @@
         mPageHeightWithTopView = getVisiblePageHeight();
     }
 
+    private View createBottomView() throws Exception {
+        InstrumentationActivity activity = mActivityTestRule.getActivity();
+        View bottomView = TestThreadUtils.runOnUiThreadBlocking(() -> {
+            TextView view = new TextView(activity);
+            view.setText("BOTTOM");
+            activity.getBrowser().setBottomView(view);
+            return view;
+        });
+        mBrowserControlsHelper.waitForBrowserControlsViewToBeVisible(bottomView);
+        int bottomViewHeight =
+                TestThreadUtils.runOnUiThreadBlocking(() -> { return bottomView.getHeight(); });
+        mBrowserControlsHelper.waitForBrowserControlsMetadataState(
+                mTopViewHeight, bottomViewHeight);
+        return bottomView;
+    }
+
     // Disabled on L bots due to unexplained flakes. See crbug.com/1035894.
     @MinAndroidSdkLevel(Build.VERSION_CODES.M)
     @Test
@@ -248,6 +267,42 @@
         });
     }
 
+    @MinWebLayerVersion(94)
+    @Test
+    @SmallTest
+    public void testEvents() throws Exception {
+        createActivityWithTopView();
+        InstrumentationActivity activity = mActivityTestRule.getActivity();
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        View topView = activity.getTopContentsContainer();
+        View bottomView = createBottomView();
+
+        int fragmentHeight = TestThreadUtils.runOnUiThreadBlocking(
+                () -> { return mActivityTestRule.getFragment().getView().getHeight(); });
+        int pageHeight = getVisiblePageHeight();
+
+        // Record the maximum y position of clicks to detect if we clicked at the top or bottom.
+        mActivityTestRule.executeScriptSync(
+                "var max = 0; document.onclick = (e) => { max = Math.max(max, e.pageY); };",
+                true /* useSeparateIsolate */);
+
+        // Clicks on the bottom view should not propagate to the content layer.
+        TestTouchUtils.singleClickView(instrumentation, bottomView, 0, 0);
+        TestTouchUtils.sleepForDoubleTapTimeout(instrumentation);
+
+        // Click below the top view inside the content layer in the middle of the page.
+        TestTouchUtils.singleClickView(
+                instrumentation, topView, 0, topView.getHeight() + fragmentHeight / 2);
+        TestTouchUtils.sleepForDoubleTapTimeout(instrumentation);
+
+        // Wait until we see the click from the middle of the page.
+        CriteriaHelper.pollInstrumentationThread(() -> {
+            int max = mActivityTestRule.executeScriptAndExtractInt("max");
+            Criteria.checkThat(max, Matchers.greaterThan(pageHeight * 1 / 4));
+            Criteria.checkThat(max, Matchers.lessThan(pageHeight * 3 / 4));
+        });
+    }
+
     // Disabled on L bots due to unexplained flakes. See crbug.com/1035894.
     @MinAndroidSdkLevel(Build.VERSION_CODES.M)
     @Test
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java
index 26cca11..8604fb1 100644
--- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java
+++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java
@@ -651,7 +651,7 @@
                 curRedirectedCount, Arrays.asList(Uri.parse(url), Uri.parse(finalUrl)));
     }
 
-    @MinWebLayerVersion(94)
+    @MinWebLayerVersion(93)
     @Test
     @SmallTest
     public void testGetPageInOnNavigationCompletedForIncompleteNavigation() throws Exception {
@@ -1629,7 +1629,7 @@
         assertEquals(2, mCallback.onCompletedCallback.getNavigationEntryOffset());
     }
 
-    @MinWebLayerVersion(94)
+    @MinWebLayerVersion(93)
     @Test
     @SmallTest
     public void testOnPageLanguageDetermined() throws Exception {
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java b/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java
index 9d362324..876b27f 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java
@@ -7,6 +7,8 @@
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.graphics.Rect;
+import android.view.DragEvent;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewParent;
 import android.widget.FrameLayout;
@@ -431,6 +433,27 @@
         cancelDelayedFullscreenRunnable();
     }
 
+    // Don't forward any events to the ContentView as the BrowserControlsContainerView should be
+    // considered opaque and shouldn't pass position based events to views below it. Website content
+    // has been moved to not overlap BrowserControlsContainerView anyway.
+    @Override
+    public boolean onDragEvent(DragEvent event) {
+        return true;
+    }
+    @Override
+    public boolean onGenericMotionEvent(MotionEvent event) {
+        return true;
+    }
+    @Override
+    public boolean onHoverEvent(MotionEvent event) {
+        return true;
+    }
+    @SuppressLint("ClickableViewAccessibility")
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        return true;
+    }
+
     /* package */ State getState() {
         return new State(mControlsOffset, mContentOffset);
     }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java
index 340998b2..0216678 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java
@@ -303,7 +303,7 @@
 
     @CalledByNative
     private void onPageLanguageDetermined(PageImpl page, String language) throws RemoteException {
-        if (WebLayerFactoryImpl.getClientMajorVersion() < 94) return;
+        if (WebLayerFactoryImpl.getClientMajorVersion() < 93) return;
 
         mNavigationControllerClient.onPageLanguageDetermined(page.getClientPage(), language);
     }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl
index ff1179f2..5eeeb584 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl
+++ b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl
@@ -42,6 +42,6 @@
   IClientPage createClientPage() = 12;
   void onPageDestroyed(IClientPage page) = 13;
 
-  // Added in M94.
+  // Added in M93.
   void onPageLanguageDetermined(IClientPage page, in String language) = 14;
 }
diff --git a/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java b/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java
index 2618a9b..b943616 100644
--- a/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java
+++ b/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java
@@ -147,7 +147,7 @@
      * Called when the source language for |page| has been determined to be |language|.
      * Note: |language| is an ISO 639 language code (two letters, except for Chinese where a
      * localization is necessary).
-     * @since 94
+     * @since 93
      */
     public void onPageLanguageDetermined(@NonNull Page page, @NonNull String language) {}
 }