diff --git a/.eslintrc.js b/.eslintrc.js
index 766d2114..a9146e7d 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -6,18 +6,23 @@
   'root': true,
   'env': {
     'browser': true,
-    'es6': true
+    'es6': true,
+  },
+  'parserOptions': {
+    'ecmaVersion': 2017,
   },
   'rules': {
     // Enabled checks.
     'no-extra-semi': 'error',
     'no-new-wrappers': 'error',
-    'no-restricted-properties': ['error', {
-      'object': 'document',
-      'property': 'getElementById',
-      'message': 'Use $(\'id\') or getSVGElement(\'id\') ' +
-          'from chrome://resources/js/util.js instead of ' +
-          'document.getElementById(\'id\')',
+    'no-restricted-properties': [
+      'error',
+      {
+        'object': 'document',
+        'property': 'getElementById',
+        'message': 'Use $(\'id\') or getSVGElement(\'id\') ' +
+            'from chrome://resources/js/util.js instead of ' +
+            'document.getElementById(\'id\')',
       },
     ],
     'semi': ['error', 'always'],
diff --git a/DEPS b/DEPS
index 8d6fda8a..2b7322d 100644
--- a/DEPS
+++ b/DEPS
@@ -112,11 +112,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': 'ef211e600c1dba06113b837f410173ea61a99afb',
+  'skia_revision': 'e0dc346d9e45f3753c4960207596e67122381bff',
   # 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': 'a6b60a5ee6c631357bbfad3ae2295aae71dbaea5',
+  'v8_revision': 'd09fb9292fd649ae3b61d7ad928e3afb0dd493d2',
   # 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.
@@ -136,7 +136,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '3a1b3968f3884c2c778e2563c2aefaae19113183',
+  'pdfium_revision': '14e53bdd3de99145243070c646df9f762d082133',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
@@ -168,7 +168,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling HarfBuzz
   # and whatever else without interference from each other.
-  'harfbuzz_revision': '000d4b128eba58677acdc3b361829ff2f9a257b1',
+  'harfbuzz_revision': '79e7e3445efef2dc57f8a10c7e355e802af08868',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
@@ -220,7 +220,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.
-  'spv_tools_revision': 'a0816d03e973ff1901ac00ea11fc3389aa6d8f91',
+  'spv_tools_revision': '68d1dc66d2efdef9a8b11780cead84cdfa7fd684',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -236,7 +236,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': '66b024e499a11e2b98630d01c34543bd71f5c3c2',
+  'dawn_revision': '7b3ea34b6b132efe7d93f0025dc7cbbe50641b9c',
 }
 
 # Only these hosts are allowed for dependencies in this DEPS file.
@@ -404,15 +404,15 @@
       'packages': [
         {
           'package': 'infra/tools/luci/isolate/${{platform}}',
-          'version': 'git_revision:8c189891315769725ec1122446d5554b312ec725',
+          'version': 'git_revision:fdf05508e8a66c773a41521e0243c9d11b9a2a1c',
         },
         {
           'package': 'infra/tools/luci/isolated/${{platform}}',
-          'version': 'git_revision:8c189891315769725ec1122446d5554b312ec725',
+          'version': 'git_revision:fdf05508e8a66c773a41521e0243c9d11b9a2a1c',
         },
         {
           'package': 'infra/tools/luci/swarming/${{platform}}',
-          'version': 'git_revision:8c189891315769725ec1122446d5554b312ec725',
+          'version': 'git_revision:fdf05508e8a66c773a41521e0243c9d11b9a2a1c',
         },
       ],
       'dep_type': 'cipd',
@@ -651,7 +651,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'fa74b5c9e6051c181070b539fbfe8fe1987bd928',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'c41b683379d6c02f8d8e1d807023d1515bd8b94e',
       'condition': 'checkout_linux',
   },
 
@@ -676,7 +676,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '687ca907fdb9a879c6f162db61b15de67178868a',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '19238fc343b2404d13550dfe30d99708e1df7716',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -1008,7 +1008,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' +  '2f71da6f529ca7887212a27672a027574e876503',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' +  '4dcd01712d41b63bad0ab0fbced8cc543cc5ce27',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + 'ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78',
@@ -1081,7 +1081,7 @@
       'packages': [
           {
               'package': 'chromium/third_party/r8',
-              'version': 'ndmKWh0vZhDc2iLXEETOuWXVfafHbqwI_FcSgJJIfpoC',
+              'version': 'gMAAlElX8RMw__5KOpk-Ckdx3XDyEXspJVslmnblsrgC',
           },
       ],
       'condition': 'checkout_android',
@@ -1171,7 +1171,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '5b6cbd789b9b91b4e46dde883c9f2ecb31eddade',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'a713505c1888b86684054656e3d8801c8057c8d4',
+    Var('webrtc_git') + '/src.git' + '@' + 'c979c46bdaf206805c62cb687be450c93dbfb533',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1202,7 +1202,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@844c45b338b5c568fe5162bbb0628cc031c09d52',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@dbb2cce15b0ab78e8126d8487a00e6fd9cf7f405',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index fbe40a6..f1eb7405 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1865,7 +1865,6 @@
     "wm/overview/window_selector_controller_unittest.cc",
     "wm/overview/window_selector_unittest.cc",
     "wm/pip/pip_positioner_unittest.cc",
-    "wm/pip/pip_unittest.cc",
     "wm/pip/pip_window_resizer_unittest.cc",
     "wm/resize_shadow_and_cursor_unittest.cc",
     "wm/root_window_layout_manager_unittest.cc",
@@ -1899,6 +1898,7 @@
     "wm/workspace/workspace_window_resizer_unittest.cc",
     "wm/workspace_controller_unittest.cc",
     "ws/ash_window_manager_unittest.cc",
+    "ws/window_lookup_unittest.cc",
     "ws/window_service_delegate_impl_unittest.cc",
   ]
   configs += [
diff --git a/ash/shelf/app_list_button.cc b/ash/shelf/app_list_button.cc
index b5a7200..3a81e1d 100644
--- a/ash/shelf/app_list_button.cc
+++ b/ash/shelf/app_list_button.cc
@@ -115,21 +115,25 @@
 void AppListButton::OnGestureEvent(ui::GestureEvent* event) {
   // Handle gesture events that are on the app list circle.
   switch (event->type()) {
-    case ui::ET_GESTURE_SCROLL_BEGIN:
-      AnimateInkDrop(views::InkDropState::HIDDEN, event);
-      ImageButton::OnGestureEvent(event);
-      return;
     case ui::ET_GESTURE_TAP:
     case ui::ET_GESTURE_TAP_CANCEL:
       if (UseVoiceInteractionStyle()) {
         assistant_overlay_->EndAnimation();
         assistant_animation_delay_timer_->Stop();
       }
-      if (IsTabletMode())
+      if (!Shell::Get()->app_list_controller()->IsVisible() || IsTabletMode())
         AnimateInkDrop(views::InkDropState::ACTION_TRIGGERED, event);
+
       ImageButton::OnGestureEvent(event);
       return;
     case ui::ET_GESTURE_TAP_DOWN:
+      // If |!ShouldEnterPushedState|, ImageButton::OnGestureEvent will not set
+      // the event to be handled. This will cause the |ET_GESTURE_TAP| or
+      // |ET_GESTURE_TAP_CANCEL| not to be sent to |app_list_button|, therefore
+      // leaving the assistant overlay ripple stays visible.
+      if (!ShouldEnterPushedState(*event))
+        return;
+
       if (UseVoiceInteractionStyle()) {
         assistant_animation_delay_timer_->Start(
             FROM_HERE,
@@ -138,10 +142,14 @@
             base::Bind(&AppListButton::StartVoiceInteractionAnimation,
                        base::Unretained(this)));
       }
-      if (!Shell::Get()->app_list_controller()->IsVisible() || IsTabletMode()) {
+      if (!Shell::Get()->app_list_controller()->IsVisible() || IsTabletMode())
         AnimateInkDrop(views::InkDropState::ACTION_PENDING, event);
-      }
+
       ImageButton::OnGestureEvent(event);
+      // If assistant overlay animation starts, we need to make sure the event
+      // is handled in order to end the animation in |ET_GESTURE_TAP| or
+      // |ET_GESTURE_TAP_CANCEL|.
+      DCHECK(event->stopped_propagation());
       return;
     case ui::ET_GESTURE_LONG_PRESS:
       if (UseVoiceInteractionStyle()) {
@@ -227,8 +235,6 @@
 bool AppListButton::ShouldEnterPushedState(const ui::Event& event) {
   if (!shelf_view_->ShouldEventActivateButton(this, event))
     return false;
-  if (Shell::Get()->app_list_controller()->IsVisible())
-    return false;
   return views::ImageButton::ShouldEnterPushedState(event);
 }
 
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index bd3c702..29bec91 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -2589,7 +2589,8 @@
   EXPECT_EQ(views::InkDropState::HIDDEN,
             app_list_button_ink_drop_->GetTargetInkDropState());
   EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
-              ElementsAre(views::InkDropState::DEACTIVATED));
+              ElementsAre(views::InkDropState::ACTION_PENDING,
+                          views::InkDropState::DEACTIVATED));
 
   // Dragging mouse out and back and releasing the button should not change the
   // ink drop state.
@@ -2625,7 +2626,8 @@
   EXPECT_EQ(views::InkDropState::ACTIVATED,
             app_list_button_ink_drop_->GetTargetInkDropState());
   EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
-              ElementsAre(views::InkDropState::ACTIVATED));
+              ElementsAre(views::InkDropState::ACTION_TRIGGERED,
+                          views::InkDropState::ACTIVATED));
 }
 
 // Tests that when the app list is visible, tapping on the app list button
@@ -2676,7 +2678,7 @@
   EXPECT_EQ(views::InkDropState::HIDDEN,
             app_list_button_ink_drop_->GetTargetInkDropState());
   EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
-              ElementsAre(views::InkDropState::HIDDEN));
+              ElementsAre(views::InkDropState::ACTION_TRIGGERED));
 
   // Touch release should not change the ink drop state.
   generator->ReleaseTouch();
@@ -2687,7 +2689,7 @@
 }
 
 // Tests that when the app list is visible, tapping down on the app list button
-// and dragging the touch point transitions ink drop states correctly.
+// and dragging the touch point will not change ink drop states.
 TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapDragWhenVisible) {
   InitAppListButtonInkDrop();
 
@@ -2699,14 +2701,33 @@
               ElementsAre(views::InkDropState::ACTIVATED));
 
   // Touch press on the button, dragging the touch point, and releasing, which
-  // dismisses the app list, should end up in the hidden state.
+  // will not dismisses the app list, should end up in the |ACTIVATED| state.
   ui::test::EventGenerator* generator = GetEventGenerator();
-  generator->MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint());
-  generator->PressMoveAndReleaseTouchBy(app_list_button_->width(), 0);
-  EXPECT_EQ(views::InkDropState::HIDDEN,
+  gfx::Point touch_location =
+      app_list_button_->GetBoundsInScreen().CenterPoint();
+  generator->MoveMouseTo(touch_location);
+
+  // Touch press on the button should not change the ink drop state.
+  generator->PressTouch();
+  EXPECT_EQ(views::InkDropState::ACTIVATED,
             app_list_button_ink_drop_->GetTargetInkDropState());
   EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
-              ElementsAre(views::InkDropState::HIDDEN));
+              IsEmpty());
+
+  // Dragging the touch point should not hide the pending ink drop.
+  touch_location.Offset(app_list_button_->width(), 0);
+  generator->MoveTouch(touch_location);
+  EXPECT_EQ(views::InkDropState::ACTIVATED,
+            app_list_button_ink_drop_->GetTargetInkDropState());
+  EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+              IsEmpty());
+
+  // Touch release should not change the ink drop state.
+  generator->ReleaseTouch();
+  EXPECT_EQ(views::InkDropState::ACTIVATED,
+            app_list_button_ink_drop_->GetTargetInkDropState());
+  EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+              IsEmpty());
 }
 
 // Tests that clicking on a shelf item that does not show a menu transitions ink
diff --git a/ash/wm/pip/pip_unittest.cc b/ash/wm/pip/pip_unittest.cc
deleted file mode 100644
index 1c9e9b0..0000000
--- a/ash/wm/pip/pip_unittest.cc
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/wm/pip/pip_window_resizer.h"
-
-#include <string>
-#include <utility>
-
-#include "ash/root_window_controller.h"
-#include "ash/shelf/shelf.h"
-#include "ash/shelf/shelf_widget.h"
-#include "ash/shell.h"
-#include "ash/system/status_area_widget.h"
-#include "ash/test/ash_test_base.h"
-#include "ash/wm/window_state.h"
-#include "ash/wm/wm_event.h"
-#include "base/command_line.h"
-#include "ui/aura/window.h"
-#include "ui/events/test/event_generator.h"
-#include "ui/views/widget/widget.h"
-#include "ui/views/widget/widget_delegate.h"
-
-namespace ash {
-
-using PipTest = AshTestBase;
-
-std::unique_ptr<views::Widget> CreateWidget() {
-  std::unique_ptr<views::Widget> widget(new views::Widget);
-  views::Widget::InitParams params;
-  params.delegate = new views::WidgetDelegateView();
-  params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-  params.context = Shell::GetPrimaryRootWindow();
-  widget->Init(params);
-  return widget;
-}
-
-TEST_F(PipTest, ShowInactive) {
-  auto widget = CreateWidget();
-  const wm::WMEvent pip_event(wm::WM_EVENT_PIP);
-  auto* window_state = wm::GetWindowState(widget->GetNativeWindow());
-  window_state->OnWMEvent(&pip_event);
-  ASSERT_TRUE(window_state->IsPip());
-  ASSERT_FALSE(widget->IsVisible());
-  widget->Show();
-  ASSERT_TRUE(widget->IsVisible());
-  EXPECT_FALSE(widget->IsActive());
-
-  widget->Activate();
-  EXPECT_FALSE(widget->IsActive());
-
-  const wm::WMEvent normal_event(wm::WM_EVENT_NORMAL);
-  window_state->OnWMEvent(&normal_event);
-  EXPECT_FALSE(window_state->IsPip());
-  EXPECT_FALSE(widget->IsActive());
-
-  widget->Activate();
-  EXPECT_TRUE(widget->IsActive());
-
-  window_state->OnWMEvent(&pip_event);
-  EXPECT_FALSE(widget->IsActive());
-}
-
-TEST_F(PipTest, ShortcutNavigation) {
-  auto widget = CreateWidget();
-  auto pip_widget = CreateWidget();
-  widget->Show();
-  pip_widget->Show();
-  const wm::WMEvent pip_event(wm::WM_EVENT_PIP);
-  auto* pip_window_state = wm::GetWindowState(pip_widget->GetNativeWindow());
-  pip_window_state->OnWMEvent(&pip_event);
-  EXPECT_TRUE(pip_window_state->IsPip());
-  EXPECT_FALSE(pip_widget->IsActive());
-  ASSERT_TRUE(widget->IsActive());
-
-  auto* generator = GetEventGenerator();
-  generator->PressKey(ui::VKEY_V, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
-  EXPECT_TRUE(pip_widget->IsActive());
-  EXPECT_FALSE(widget->IsActive());
-
-  auto* shelf = AshTestBase::GetPrimaryShelf()->shelf_widget();
-  auto* status_area =
-      Shell::GetPrimaryRootWindowController()->GetStatusAreaWidget();
-
-  // Cycle Backward.
-  generator->PressKey(ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(shelf->IsActive());
-
-  generator->PressKey(ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(status_area->IsActive());
-
-  generator->PressKey(ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(widget->IsActive());
-
-  generator->PressKey(ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(pip_widget->IsActive());
-
-  // Forward
-  generator->PressKey(ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(widget->IsActive());
-
-  generator->PressKey(ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(status_area->IsActive());
-
-  generator->PressKey(ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(shelf->IsActive());
-
-  generator->PressKey(ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN);
-  EXPECT_TRUE(pip_widget->IsActive());
-}
-
-}  // namespace ash
diff --git a/ash/wm/window_state.cc b/ash/wm/window_state.cc
index 0fb0156..f513fa4 100644
--- a/ash/wm/window_state.cc
+++ b/ash/wm/window_state.cc
@@ -679,22 +679,13 @@
 
 void WindowState::UpdatePipState(bool was_pip) {
   auto* widget = views::Widget::GetWidgetForNativeWindow(window());
+
   if (IsPip()) {
-    // widget may not exit in some unit tests.
-    // TODO(oshima): Fix unit tests and add DCHECK.
-    if (widget) {
-      widget->widget_delegate()->set_can_activate(false);
-      if (widget->IsActive())
-        widget->Deactivate();
-      Shell::Get()->focus_cycler()->AddWidget(widget);
-    }
+    Shell::Get()->focus_cycler()->AddWidget(widget);
     ::wm::SetWindowVisibilityAnimationType(
         window(), WINDOW_VISIBILITY_ANIMATION_TYPE_FADE_IN_SLIDE_OUT);
   } else if (was_pip) {
-    if (widget) {
-      widget->widget_delegate()->set_can_activate(true);
-      Shell::Get()->focus_cycler()->RemoveWidget(widget);
-    }
+    Shell::Get()->focus_cycler()->RemoveWidget(widget);
     ::wm::SetWindowVisibilityAnimationType(
         window(), ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_DEFAULT);
   }
diff --git a/ash/ws/window_lookup.cc b/ash/ws/window_lookup.cc
index 9387bbd5c..45f10f2 100644
--- a/ash/ws/window_lookup.cc
+++ b/ash/ws/window_lookup.cc
@@ -6,17 +6,76 @@
 
 #include "ash/shell.h"
 #include "ash/ws/window_service_owner.h"
+#include "services/ws/common/util.h"
 #include "services/ws/window_service.h"
+#include "ui/aura/env.h"
+#include "ui/aura/mus/window_port_mus.h"
+#include "ui/aura/mus/window_tree_client.h"
+#include "ui/base/ui_base_features.h"
+#include "ui/views/mus/mus_client.h"
 
 namespace ash {
 namespace window_lookup {
 
-aura::Window* GetWindowByClientId(ws::Id transport_id) {
+bool IsProxyWindow(aura::Window* window) {
+  return ws::WindowService::HasRemoteClient(window);
+}
+
+aura::Window* GetProxyWindowForClientWindow(aura::Window* window) {
+  // This function only make sense in classic/single-process mash.
+  DCHECK(!features::IsMultiProcessMash());
+  if (!aura::WindowMus::Get(window))
+    return nullptr;
+
+  DCHECK(views::MusClient::Exists());
+  aura::WindowTreeClient* window_tree_client =
+      views::MusClient::Get()->window_tree_client();
+  DCHECK(window_tree_client);
+
+  aura::WindowPortMus* window_port_mus = aura::WindowPortMus::Get(window);
+  if (!window_tree_client->id().has_value())
+    return nullptr;  // The client doesn't know the id yet.
+
+  const ws::ClientSpecificId client_id = *(window_tree_client->id());
+  const ws::Id transport_id = ws::BuildTransportId(
+      client_id,
+      static_cast<ws::ClientSpecificId>(window_port_mus->server_id()));
   return Shell::Get()
       ->window_service_owner()
       ->window_service()
       ->GetWindowByClientId(transport_id);
 }
 
+aura::Window* GetClientWindowForProxyWindow(aura::Window* window) {
+  // This function only make sense in classic/single-process mash.
+  DCHECK(!features::IsMultiProcessMash());
+  DCHECK(IsProxyWindow(window));
+  DCHECK(views::MusClient::Get());
+
+  const ws::Id window_id = Shell::Get()
+                               ->window_service_owner()
+                               ->window_service()
+                               ->GetCompleteTransportIdForWindow(window);
+  if (window_id == ws::kInvalidTransportId)
+    return nullptr;
+
+  aura::WindowTreeClient* window_tree_client =
+      views::MusClient::Get()->window_tree_client();
+
+  if (!window_tree_client->id().has_value())
+    return nullptr;  // The client doesn't know its id yet.
+
+  const ws::ClientSpecificId client_id = *(window_tree_client->id());
+  if (ws::ClientIdFromTransportId(window_id) != client_id) {
+    // |window| is a proxy window, the client is in another process.
+    return nullptr;
+  }
+
+  // Clients use a client_id of 0 for all their windows.
+  aura::WindowMus* window_mus = window_tree_client->GetWindowByServerId(
+      ws::BuildTransportId(0, ws::ClientWindowIdFromTransportId(window_id)));
+  return window_mus ? window_mus->GetWindow() : nullptr;
+}
+
 }  // namespace window_lookup
 }  // namespace ash
diff --git a/ash/ws/window_lookup.h b/ash/ws/window_lookup.h
index 0c1c2c187..2b96256 100644
--- a/ash/ws/window_lookup.h
+++ b/ash/ws/window_lookup.h
@@ -17,8 +17,16 @@
 namespace ash {
 namespace window_lookup {
 
-// Returns the aura::Window by transport id.
-ASH_EXPORT aura::Window* GetWindowByClientId(ws::Id transport_id);
+// Returns true if |window| is a proxy created by the WindowService to represent
+// a window created by another client.
+ASH_EXPORT bool IsProxyWindow(aura::Window* window);
+
+// Returns the proxy aura::Window that represents a window created with aura
+// configured to use mus.
+ASH_EXPORT aura::Window* GetProxyWindowForClientWindow(aura::Window* window);
+
+// Returns the client window for a proxy window.
+ASH_EXPORT aura::Window* GetClientWindowForProxyWindow(aura::Window* window);
 
 }  // namespace window_lookup
 }  // namespace ash
diff --git a/ash/ws/window_lookup_unittest.cc b/ash/ws/window_lookup_unittest.cc
new file mode 100644
index 0000000..627d371
--- /dev/null
+++ b/ash/ws/window_lookup_unittest.cc
@@ -0,0 +1,97 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/ws/window_lookup.h"
+
+#include "ash/public/cpp/ash_switches.h"
+#include "ash/test/ash_test_base.h"
+#include "ash/test/ash_test_helper.h"
+#include "base/test/scoped_feature_list.h"
+#include "ui/aura/env.h"
+#include "ui/aura/test/env_test_helper.h"
+#include "ui/aura/test/mus/change_completion_waiter.h"
+#include "ui/aura/window.h"
+#include "ui/base/ui_base_features.h"
+#include "ui/views/mus/mus_client.h"
+#include "ui/views/widget/widget.h"
+
+namespace ash {
+
+class WindowLookupTest : public AshTestBase {
+ public:
+  WindowLookupTest() = default;
+  ~WindowLookupTest() override = default;
+
+  // AshTestBase:
+  void SetUp() override {
+    original_aura_env_mode_ =
+        aura::test::EnvTestHelper().SetMode(aura::Env::Mode::MUS);
+    feature_list_.InitWithFeatures({::features::kSingleProcessMash}, {});
+    AshTestBase::SetUp();
+  }
+  void TearDown() override {
+    AshTestBase::TearDown();
+    aura::test::EnvTestHelper().SetMode(original_aura_env_mode_);
+  }
+
+ private:
+  aura::Env::Mode original_aura_env_mode_ = aura::Env::Mode::LOCAL;
+  base::test::ScopedFeatureList feature_list_;
+
+  DISALLOW_COPY_AND_ASSIGN(WindowLookupTest);
+};
+
+TEST_F(WindowLookupTest, AddWindowToTabletMode) {
+  // TabletModeController calls to PowerManagerClient with a callback that is
+  // run via a posted task. Run the loop now so that we know the task is
+  // processed. Without this, the task gets processed later on, interfering
+  // with this test.
+  RunAllPendingInMessageLoop();
+
+  // This test configures views with mus, which means it triggers some of the
+  // DCHECKs ensuring Shell's Env is used.
+  SetRunningOutsideAsh();
+
+  // Configure views backed by mus.
+  views::MusClient::InitParams mus_client_init_params;
+  mus_client_init_params.connector =
+      ash_test_helper()->GetWindowServiceConnector();
+  mus_client_init_params.create_wm_state = false;
+  mus_client_init_params.running_in_ws_process = true;
+  views::MusClient mus_client(mus_client_init_params);
+
+  // Create a widget. This widget is backed by mus.
+  views::Widget widget;
+  views::Widget::InitParams params;
+  params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+  params.bounds = gfx::Rect(0, 0, 200, 200);
+  params.native_widget = mus_client.CreateNativeWidget(params, &widget);
+  widget.Init(params);
+
+  aura::Window* widget_root = widget.GetNativeWindow()->GetRootWindow();
+  ASSERT_TRUE(CurrentContext());
+  ASSERT_NE(widget_root, CurrentContext());
+
+  // At this point ash hasn't created the proxy (request is async, over mojo).
+  // So, there should be no proxy available yet.
+  EXPECT_FALSE(window_lookup::IsProxyWindow(widget_root));
+  EXPECT_FALSE(window_lookup::GetProxyWindowForClientWindow(widget_root));
+
+  // Flush all messages from the WindowTreeClient to ensure the window service
+  // has finished Widget creation.
+  aura::test::WaitForAllChangesToComplete();
+
+  // Now the proxy should be available.
+  EXPECT_FALSE(window_lookup::IsProxyWindow(widget_root));
+  aura::Window* proxy =
+      window_lookup::GetProxyWindowForClientWindow(widget_root);
+  ASSERT_TRUE(proxy);
+  EXPECT_NE(proxy, widget_root);
+  EXPECT_EQ(aura::Env::Mode::LOCAL, proxy->env()->mode());
+
+  // Ensure we can go back to the client created window.
+  EXPECT_EQ(widget_root, window_lookup::GetClientWindowForProxyWindow(proxy));
+}
+
+}  // namespace ash
diff --git a/base/allocator/allocator_interception_mac.mm b/base/allocator/allocator_interception_mac.mm
index 4cb9069e..f0d7200 100644
--- a/base/allocator/allocator_interception_mac.mm
+++ b/base/allocator/allocator_interception_mac.mm
@@ -30,6 +30,7 @@
 #include "base/allocator/buildflags.h"
 #include "base/allocator/malloc_zone_functions_mac.h"
 #include "base/bind.h"
+#include "base/bits.h"
 #include "base/logging.h"
 #include "base/mac/mac_util.h"
 #include "base/mac/mach_logging.h"
@@ -147,7 +148,7 @@
   // other reasons why NULL might be returned (see
   // http://opensource.apple.com/source/Libc/Libc-583/gen/malloc.c ).
   if (!result && size && alignment >= sizeof(void*) &&
-      (alignment & (alignment - 1)) == 0) {
+      base::bits::IsPowerOfTwo(alignment)) {
     TerminateBecauseOutOfMemory(size);
   }
   return result;
@@ -197,7 +198,7 @@
   // other reasons why NULL might be returned (see
   // http://opensource.apple.com/source/Libc/Libc-583/gen/malloc.c ).
   if (!result && size && alignment >= sizeof(void*) &&
-      (alignment & (alignment - 1)) == 0) {
+      base::bits::IsPowerOfTwo(alignment)) {
     TerminateBecauseOutOfMemory(size);
   }
   return result;
diff --git a/base/allocator/allocator_shim.cc b/base/allocator/allocator_shim.cc
index e919f09..68a8c0e0 100644
--- a/base/allocator/allocator_shim.cc
+++ b/base/allocator/allocator_shim.cc
@@ -9,6 +9,7 @@
 #include <new>
 
 #include "base/atomicops.h"
+#include "base/bits.h"
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/process/process_metrics.h"
@@ -218,7 +219,7 @@
   // posix_memalign is supposed to check the arguments. See tc_posix_memalign()
   // in tc_malloc.cc.
   if (((alignment % sizeof(void*)) != 0) ||
-      ((alignment & (alignment - 1)) != 0) || (alignment == 0)) {
+      !base::bits::IsPowerOfTwo(alignment)) {
     return EINVAL;
   }
   void* ptr = ShimMemalign(alignment, size, nullptr);
diff --git a/base/allocator/partition_allocator/page_allocator.cc b/base/allocator/partition_allocator/page_allocator.cc
index 680ea6e..e8a3801 100644
--- a/base/allocator/partition_allocator/page_allocator.cc
+++ b/base/allocator/partition_allocator/page_allocator.cc
@@ -11,6 +11,7 @@
 #include "base/allocator/partition_allocator/address_space_randomization.h"
 #include "base/allocator/partition_allocator/page_allocator_internal.h"
 #include "base/allocator/partition_allocator/spin_lock.h"
+#include "base/bits.h"
 #include "base/logging.h"
 #include "base/no_destructor.h"
 #include "base/numerics/checked_math.h"
@@ -107,7 +108,7 @@
   DCHECK(!(length & kPageAllocationGranularityOffsetMask));
   DCHECK(align >= kPageAllocationGranularity);
   // Alignment must be power of 2 for masking math to work.
-  DCHECK_EQ(align & (align - 1), 0UL);
+  DCHECK(base::bits::IsPowerOfTwo(align));
   DCHECK(!(reinterpret_cast<uintptr_t>(address) &
            kPageAllocationGranularityOffsetMask));
   uintptr_t align_offset_mask = align - 1;
diff --git a/base/android/jni_generator/golden/SampleForTests_jni.golden b/base/android/jni_generator/golden/SampleForTests_jni.golden
index e5946d8e..39eaba5 100644
--- a/base/android/jni_generator/golden/SampleForTests_jni.golden
+++ b/base/android/jni_generator/golden/SampleForTests_jni.golden
@@ -19,21 +19,32 @@
 // Step 1: Forward declarations.
 
 JNI_REGISTRATION_EXPORT extern const char
-    kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructA[];
-const char kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructA[] =
-    "org/chromium/example/jni_generator/SampleForTests$InnerStructA";
-
-JNI_REGISTRATION_EXPORT extern const char
     kClassPath_org_chromium_example_jni_1generator_SampleForTests[];
 const char kClassPath_org_chromium_example_jni_1generator_SampleForTests[] =
     "org/chromium/example/jni_generator/SampleForTests";
 
 JNI_REGISTRATION_EXPORT extern const char
+    kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructA[];
+const char kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructA[] =
+    "org/chromium/example/jni_generator/SampleForTests$InnerStructA";
+
+JNI_REGISTRATION_EXPORT extern const char
     kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructB[];
 const char kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructB[] =
     "org/chromium/example/jni_generator/SampleForTests$InnerStructB";
 // Leaking this jclass as we cannot use LazyInstance from some threads.
 JNI_REGISTRATION_EXPORT std::atomic<jclass>
+    g_org_chromium_example_jni_1generator_SampleForTests_clazz(nullptr);
+#ifndef org_chromium_example_jni_1generator_SampleForTests_clazz_defined
+#define org_chromium_example_jni_1generator_SampleForTests_clazz_defined
+inline jclass org_chromium_example_jni_1generator_SampleForTests_clazz(JNIEnv* env) {
+  return base::android::LazyGetClass(env,
+      kClassPath_org_chromium_example_jni_1generator_SampleForTests,
+      &g_org_chromium_example_jni_1generator_SampleForTests_clazz);
+}
+#endif
+// Leaking this jclass as we cannot use LazyInstance from some threads.
+JNI_REGISTRATION_EXPORT std::atomic<jclass>
     g_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructA_clazz(nullptr);
 #ifndef org_chromium_example_jni_1generator_SampleForTests_00024InnerStructA_clazz_defined
 #define org_chromium_example_jni_1generator_SampleForTests_00024InnerStructA_clazz_defined
@@ -46,17 +57,6 @@
 #endif
 // Leaking this jclass as we cannot use LazyInstance from some threads.
 JNI_REGISTRATION_EXPORT std::atomic<jclass>
-    g_org_chromium_example_jni_1generator_SampleForTests_clazz(nullptr);
-#ifndef org_chromium_example_jni_1generator_SampleForTests_clazz_defined
-#define org_chromium_example_jni_1generator_SampleForTests_clazz_defined
-inline jclass org_chromium_example_jni_1generator_SampleForTests_clazz(JNIEnv* env) {
-  return base::android::LazyGetClass(env,
-      kClassPath_org_chromium_example_jni_1generator_SampleForTests,
-      &g_org_chromium_example_jni_1generator_SampleForTests_clazz);
-}
-#endif
-// Leaking this jclass as we cannot use LazyInstance from some threads.
-JNI_REGISTRATION_EXPORT std::atomic<jclass>
     g_org_chromium_example_jni_1generator_SampleForTests_00024InnerStructB_clazz(nullptr);
 #ifndef org_chromium_example_jni_1generator_SampleForTests_00024InnerStructB_clazz_defined
 #define org_chromium_example_jni_1generator_SampleForTests_00024InnerStructB_clazz_defined
diff --git a/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuter.golden b/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuter.golden
index ccaf1219..5b695409 100644
--- a/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuter.golden
+++ b/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuter.golden
@@ -18,12 +18,21 @@
 
 // Step 1: Forward declarations.
 
+JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_TestJni[];
+const char kClassPath_org_chromium_TestJni[] = "org/chromium/TestJni";
+
 JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[];
 const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[] =
     "org/chromium/TestJni$MyOtherInnerClass";
-
-JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_TestJni[];
-const char kClassPath_org_chromium_TestJni[] = "org/chromium/TestJni";
+// Leaking this jclass as we cannot use LazyInstance from some threads.
+JNI_REGISTRATION_EXPORT std::atomic<jclass> g_org_chromium_TestJni_clazz(nullptr);
+#ifndef org_chromium_TestJni_clazz_defined
+#define org_chromium_TestJni_clazz_defined
+inline jclass org_chromium_TestJni_clazz(JNIEnv* env) {
+  return base::android::LazyGetClass(env, kClassPath_org_chromium_TestJni,
+      &g_org_chromium_TestJni_clazz);
+}
+#endif
 // Leaking this jclass as we cannot use LazyInstance from some threads.
 JNI_REGISTRATION_EXPORT std::atomic<jclass>
     g_org_chromium_TestJni_00024MyOtherInnerClass_clazz(nullptr);
@@ -34,15 +43,6 @@
       &g_org_chromium_TestJni_00024MyOtherInnerClass_clazz);
 }
 #endif
-// Leaking this jclass as we cannot use LazyInstance from some threads.
-JNI_REGISTRATION_EXPORT std::atomic<jclass> g_org_chromium_TestJni_clazz(nullptr);
-#ifndef org_chromium_TestJni_clazz_defined
-#define org_chromium_TestJni_clazz_defined
-inline jclass org_chromium_TestJni_clazz(JNIEnv* env) {
-  return base::android::LazyGetClass(env, kClassPath_org_chromium_TestJni,
-      &g_org_chromium_TestJni_clazz);
-}
-#endif
 
 
 // Step 2: Constants (optional).
diff --git a/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuterRegistrations.golden b/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuterRegistrations.golden
index 1109d142..04d7680 100644
--- a/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuterRegistrations.golden
+++ b/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuterRegistrations.golden
@@ -18,17 +18,9 @@
 
 // Step 1: Forward declarations (classes).
 
-extern const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[];
-
 extern const char kClassPath_org_chromium_TestJni[];
-extern std::atomic<jclass> g_org_chromium_TestJni_00024MyOtherInnerClass_clazz;
-#ifndef org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
-#define org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
-inline jclass org_chromium_TestJni_00024MyOtherInnerClass_clazz(JNIEnv* env) {
-  return base::android::LazyGetClass(env, kClassPath_org_chromium_TestJni_00024MyOtherInnerClass,
-      &g_org_chromium_TestJni_00024MyOtherInnerClass_clazz);
-}
-#endif
+
+extern const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[];
 extern std::atomic<jclass> g_org_chromium_TestJni_clazz;
 #ifndef org_chromium_TestJni_clazz_defined
 #define org_chromium_TestJni_clazz_defined
@@ -37,6 +29,14 @@
       &g_org_chromium_TestJni_clazz);
 }
 #endif
+extern std::atomic<jclass> g_org_chromium_TestJni_00024MyOtherInnerClass_clazz;
+#ifndef org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
+#define org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
+inline jclass org_chromium_TestJni_00024MyOtherInnerClass_clazz(JNIEnv* env) {
+  return base::android::LazyGetClass(env, kClassPath_org_chromium_TestJni_00024MyOtherInnerClass,
+      &g_org_chromium_TestJni_00024MyOtherInnerClass_clazz);
+}
+#endif
 
 
 // Step 2: Forward declarations (methods).
@@ -51,31 +51,18 @@
 
 // Step 3: Method declarations.
 
+static const JNINativeMethod kMethods_org_chromium_TestJni[] = {
+    { "nativeInit", "()I", reinterpret_cast<void*>(Java_org_chromium_TestJni_nativeInit) },
+};
+
+
 static const JNINativeMethod kMethods_org_chromium_TestJni_00024MyOtherInnerClass[] = {
     { "nativeInit", "()I",
         reinterpret_cast<void*>(Java_org_chromium_TestJni_00024MyOtherInnerClass_nativeInit) },
 };
 
 
-static const JNINativeMethod kMethods_org_chromium_TestJni[] = {
-    { "nativeInit", "()I", reinterpret_cast<void*>(Java_org_chromium_TestJni_nativeInit) },
-};
-
-
 JNI_REGISTRATION_EXPORT bool RegisterNative_org_chromium_TestJni(JNIEnv* env) {
-  const int kMethods_org_chromium_TestJni_00024MyOtherInnerClassSize =
-      arraysize(kMethods_org_chromium_TestJni_00024MyOtherInnerClass);
-  if (env->RegisterNatives(
-      org_chromium_TestJni_00024MyOtherInnerClass_clazz(env),
-      kMethods_org_chromium_TestJni_00024MyOtherInnerClass,
-      kMethods_org_chromium_TestJni_00024MyOtherInnerClassSize) < 0) {
-    jni_generator::HandleRegistrationError(env,
-        org_chromium_TestJni_00024MyOtherInnerClass_clazz(env),
-        __FILE__);
-    return false;
-  }
-
-
   const int kMethods_org_chromium_TestJniSize =
       arraysize(kMethods_org_chromium_TestJni);
   if (env->RegisterNatives(
@@ -88,6 +75,19 @@
     return false;
   }
 
+
+  const int kMethods_org_chromium_TestJni_00024MyOtherInnerClassSize =
+      arraysize(kMethods_org_chromium_TestJni_00024MyOtherInnerClass);
+  if (env->RegisterNatives(
+      org_chromium_TestJni_00024MyOtherInnerClass_clazz(env),
+      kMethods_org_chromium_TestJni_00024MyOtherInnerClass,
+      kMethods_org_chromium_TestJni_00024MyOtherInnerClassSize) < 0) {
+    jni_generator::HandleRegistrationError(env,
+        org_chromium_TestJni_00024MyOtherInnerClass_clazz(env),
+        __FILE__);
+    return false;
+  }
+
   return true;
 }
 
diff --git a/base/android/jni_generator/golden/testInnerClassNativesMultiple.golden b/base/android/jni_generator/golden/testInnerClassNativesMultiple.golden
index 3e53ece..983fb1f 100644
--- a/base/android/jni_generator/golden/testInnerClassNativesMultiple.golden
+++ b/base/android/jni_generator/golden/testInnerClassNativesMultiple.golden
@@ -18,26 +18,16 @@
 
 // Step 1: Forward declarations.
 
-JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[];
-const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[] =
-    "org/chromium/TestJni$MyOtherInnerClass";
-
 JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_TestJni[];
 const char kClassPath_org_chromium_TestJni[] = "org/chromium/TestJni";
 
 JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_TestJni_00024MyInnerClass[];
 const char kClassPath_org_chromium_TestJni_00024MyInnerClass[] =
     "org/chromium/TestJni$MyInnerClass";
-// Leaking this jclass as we cannot use LazyInstance from some threads.
-JNI_REGISTRATION_EXPORT std::atomic<jclass>
-    g_org_chromium_TestJni_00024MyOtherInnerClass_clazz(nullptr);
-#ifndef org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
-#define org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
-inline jclass org_chromium_TestJni_00024MyOtherInnerClass_clazz(JNIEnv* env) {
-  return base::android::LazyGetClass(env, kClassPath_org_chromium_TestJni_00024MyOtherInnerClass,
-      &g_org_chromium_TestJni_00024MyOtherInnerClass_clazz);
-}
-#endif
+
+JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[];
+const char kClassPath_org_chromium_TestJni_00024MyOtherInnerClass[] =
+    "org/chromium/TestJni$MyOtherInnerClass";
 // Leaking this jclass as we cannot use LazyInstance from some threads.
 JNI_REGISTRATION_EXPORT std::atomic<jclass> g_org_chromium_TestJni_clazz(nullptr);
 #ifndef org_chromium_TestJni_clazz_defined
@@ -56,6 +46,16 @@
       &g_org_chromium_TestJni_00024MyInnerClass_clazz);
 }
 #endif
+// Leaking this jclass as we cannot use LazyInstance from some threads.
+JNI_REGISTRATION_EXPORT std::atomic<jclass>
+    g_org_chromium_TestJni_00024MyOtherInnerClass_clazz(nullptr);
+#ifndef org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
+#define org_chromium_TestJni_00024MyOtherInnerClass_clazz_defined
+inline jclass org_chromium_TestJni_00024MyOtherInnerClass_clazz(JNIEnv* env) {
+  return base::android::LazyGetClass(env, kClassPath_org_chromium_TestJni_00024MyOtherInnerClass,
+      &g_org_chromium_TestJni_00024MyOtherInnerClass_clazz);
+}
+#endif
 
 
 // Step 2: Constants (optional).
diff --git a/base/android/jni_generator/golden/testNativeExportsOnlyOption.golden b/base/android/jni_generator/golden/testNativeExportsOnlyOption.golden
index bde7d5f..79c20bb 100644
--- a/base/android/jni_generator/golden/testNativeExportsOnlyOption.golden
+++ b/base/android/jni_generator/golden/testNativeExportsOnlyOption.golden
@@ -19,9 +19,9 @@
 // Step 1: Forward declarations.
 
 JNI_REGISTRATION_EXPORT extern const char
-    kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass[];
-const char kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass[] =
-    "org/chromium/example/jni_generator/SampleForTests$MyOtherInnerClass";
+    kClassPath_org_chromium_example_jni_1generator_SampleForTests[];
+const char kClassPath_org_chromium_example_jni_1generator_SampleForTests[] =
+    "org/chromium/example/jni_generator/SampleForTests";
 
 JNI_REGISTRATION_EXPORT extern const char
     kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024MyInnerClass[];
@@ -29,19 +29,18 @@
     "org/chromium/example/jni_generator/SampleForTests$MyInnerClass";
 
 JNI_REGISTRATION_EXPORT extern const char
-    kClassPath_org_chromium_example_jni_1generator_SampleForTests[];
-const char kClassPath_org_chromium_example_jni_1generator_SampleForTests[] =
-    "org/chromium/example/jni_generator/SampleForTests";
+    kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass[];
+const char kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass[] =
+    "org/chromium/example/jni_generator/SampleForTests$MyOtherInnerClass";
 // Leaking this jclass as we cannot use LazyInstance from some threads.
 JNI_REGISTRATION_EXPORT std::atomic<jclass>
-    g_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz(nullptr);
-#ifndef org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz_defined
-#define org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz_defined
-inline jclass
-    org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz(JNIEnv* env) {
+    g_org_chromium_example_jni_1generator_SampleForTests_clazz(nullptr);
+#ifndef org_chromium_example_jni_1generator_SampleForTests_clazz_defined
+#define org_chromium_example_jni_1generator_SampleForTests_clazz_defined
+inline jclass org_chromium_example_jni_1generator_SampleForTests_clazz(JNIEnv* env) {
   return base::android::LazyGetClass(env,
-      kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass,
-      &g_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz);
+      kClassPath_org_chromium_example_jni_1generator_SampleForTests,
+      &g_org_chromium_example_jni_1generator_SampleForTests_clazz);
 }
 #endif
 // Leaking this jclass as we cannot use LazyInstance from some threads.
@@ -58,13 +57,14 @@
 #endif
 // Leaking this jclass as we cannot use LazyInstance from some threads.
 JNI_REGISTRATION_EXPORT std::atomic<jclass>
-    g_org_chromium_example_jni_1generator_SampleForTests_clazz(nullptr);
-#ifndef org_chromium_example_jni_1generator_SampleForTests_clazz_defined
-#define org_chromium_example_jni_1generator_SampleForTests_clazz_defined
-inline jclass org_chromium_example_jni_1generator_SampleForTests_clazz(JNIEnv* env) {
+    g_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz(nullptr);
+#ifndef org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz_defined
+#define org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz_defined
+inline jclass
+    org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz(JNIEnv* env) {
   return base::android::LazyGetClass(env,
-      kClassPath_org_chromium_example_jni_1generator_SampleForTests,
-      &g_org_chromium_example_jni_1generator_SampleForTests_clazz);
+      kClassPath_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass,
+      &g_org_chromium_example_jni_1generator_SampleForTests_00024MyOtherInnerClass_clazz);
 }
 #endif
 
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
index 6e7a169..f8a5e2e5 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -988,7 +988,7 @@
     return template.substitute(values)
 
   def GetUniqueClasses(self, origin):
-    ret = {}
+    ret = collections.OrderedDict()
     for entry in origin:
       if isinstance(entry, NativeMethod) and entry.is_proxy:
         ret[ProxyHelpers.GetClass(self.use_proxy_hash)] \
diff --git a/base/files/dir_reader_linux.h b/base/files/dir_reader_linux.h
index 259bcfe..f12deeb2 100644
--- a/base/files/dir_reader_linux.h
+++ b/base/files/dir_reader_linux.h
@@ -62,7 +62,7 @@
     if (r == 0)
       return false;
     if (r == -1) {
-      DPLOG(FATAL) << "getdents64 returned an error: " << errno;
+      DPLOG(FATAL) << "getdents64 failed";
       return false;
     }
     size_ = r;
diff --git a/base/mac/sdk_forward_declarations.h b/base/mac/sdk_forward_declarations.h
index 6a4cd64..f2019b7 100644
--- a/base/mac/sdk_forward_declarations.h
+++ b/base/mac/sdk_forward_declarations.h
@@ -357,6 +357,10 @@
 @end
 
 BASE_EXPORT extern NSAppearanceName const NSAppearanceNameDarkAqua;
+BASE_EXPORT extern NSAppearanceName const
+    NSAppearanceNameAccessibilityHighContrastDarkAqua;
+BASE_EXPORT extern NSAppearanceName const
+    NSAppearanceNameAccessibilityHighContrastAqua;
 
 #endif
 
diff --git a/base/mac/sdk_forward_declarations.mm b/base/mac/sdk_forward_declarations.mm
index 1235e51a..a463c27 100644
--- a/base/mac/sdk_forward_declarations.mm
+++ b/base/mac/sdk_forward_declarations.mm
@@ -22,4 +22,8 @@
 #if !defined(MAC_OS_X_VERSION_10_14) || \
     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_14
 NSString* const NSAppearanceNameDarkAqua = @"NSAppearanceNameDarkAqua";
+NSString* const NSAppearanceNameAccessibilityHighContrastDarkAqua =
+    @"NSAppearanceNameAccessibilityHighContrastDarkAqua";
+NSString* const NSAppearanceNameAccessibilityHighContrastAqua =
+    @"NSAppearanceNameAccessibilityHighContrastAqua";
 #endif
diff --git a/base/memory/shared_memory_helper.cc b/base/memory/shared_memory_helper.cc
index f98b734..363a6dc 100644
--- a/base/memory/shared_memory_helper.cc
+++ b/base/memory/shared_memory_helper.cc
@@ -96,8 +96,7 @@
 
   *mapped_file = HANDLE_EINTR(dup(fd.get()));
   if (*mapped_file == -1) {
-    NOTREACHED() << "Call to dup failed, errno=" << errno;
-
+    DPCHECK(false) << "dup failed";
 #if defined(OS_CHROMEOS)
     if (errno == EMFILE) {
       // We're out of file descriptors and are probably about to crash somewhere
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc
index dcc9f8d1..f72f17d9 100644
--- a/base/message_loop/message_loop.cc
+++ b/base/message_loop/message_loop.cc
@@ -220,7 +220,8 @@
     MessageLoop::Type type) {
   std::unique_ptr<sequence_manager::internal::SequenceManagerImpl> manager =
       sequence_manager::internal::SequenceManagerImpl::CreateUnboundWithPump(
-          type);
+          sequence_manager::SequenceManager::Settings{.message_loop_type =
+                                                          type});
   // std::move() for nacl, it doesn't properly handle returning unique_ptr
   // for subtypes.
   return std::move(manager);
diff --git a/base/message_loop/message_pump_libevent.cc b/base/message_loop/message_pump_libevent.cc
index b98e436..6b924bc 100644
--- a/base/message_loop/message_pump_libevent.cc
+++ b/base/message_loop/message_pump_libevent.cc
@@ -269,8 +269,7 @@
   // Tell libevent (in a threadsafe way) that it should break out of its loop.
   char buf = 0;
   int nwrite = HANDLE_EINTR(write(wakeup_pipe_in_, &buf, 1));
-  DCHECK(nwrite == 1 || errno == EAGAIN)
-      << "[nwrite:" << nwrite << "] [errno:" << errno << "]";
+  DPCHECK(nwrite == 1 || errno == EAGAIN) << "nwrite:" << nwrite;
 }
 
 void MessagePumpLibevent::ScheduleDelayedWork(
diff --git a/base/process/internal_aix.cc b/base/process/internal_aix.cc
index 7f03aee..9d46476c 100644
--- a/base/process/internal_aix.cc
+++ b/base/process/internal_aix.cc
@@ -62,14 +62,12 @@
   ThreadRestrictions::ScopedAllowIO allow_io;
   int fileId;
   if ((fileId = open(file.value().c_str(), O_RDONLY)) < 0) {
-    DLOG(WARNING) << "Failed to open " << file.MaybeAsASCII()
-                  << " errno = " << errno;
+    DPLOG(WARNING) << "Failed to open " << file.MaybeAsASCII();
     return false;
   }
 
   if (read(fileId, info, sizeof(*info)) < 0) {
-    DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII()
-                  << " errno = " << errno;
+    DPLOG(WARNING) << "Failed to read " << file.MaybeAsASCII();
     return false;
   }
 
diff --git a/base/rand_util_posix.cc b/base/rand_util_posix.cc
index 2c1653d..c4a6344 100644
--- a/base/rand_util_posix.cc
+++ b/base/rand_util_posix.cc
@@ -27,11 +27,11 @@
   // AIX has no 64-bit support for open falgs such as -
   //  O_CLOEXEC, O_NOFOLLOW and O_TTY_INIT
   URandomFd() : fd_(HANDLE_EINTR(open("/dev/urandom", O_RDONLY))) {
-    DCHECK_GE(fd_, 0) << "Cannot open /dev/urandom: " << errno;
+    DPCHECK(fd_ >= 0) << "Cannot open /dev/urandom";
   }
 #else
   URandomFd() : fd_(HANDLE_EINTR(open("/dev/urandom", O_RDONLY | O_CLOEXEC))) {
-    DCHECK_GE(fd_, 0) << "Cannot open /dev/urandom: " << errno;
+    DPCHECK(fd_ >= 0) << "Cannot open /dev/urandom";
   }
 #endif
 
diff --git a/base/task/sequence_manager/sequence_manager.cc b/base/task/sequence_manager/sequence_manager.cc
index 3451f98..62fe19a 100644
--- a/base/task/sequence_manager/sequence_manager.cc
+++ b/base/task/sequence_manager/sequence_manager.cc
@@ -7,20 +7,11 @@
 namespace base {
 namespace sequence_manager {
 
-SequenceManager::MetricRecordingSettings::MetricRecordingSettings() {}
-
 SequenceManager::MetricRecordingSettings::MetricRecordingSettings(
-    bool cpu_time_for_each_task,
     double task_thread_time_sampling_rate)
-    : records_cpu_time_for_each_task(base::ThreadTicks::IsSupported() &&
-                                     cpu_time_for_each_task),
-      task_sampling_rate_for_recording_cpu_time(
-          task_thread_time_sampling_rate) {
-  if (records_cpu_time_for_each_task)
-    task_sampling_rate_for_recording_cpu_time = 1;
-  if (!base::ThreadTicks::IsSupported())
-    task_sampling_rate_for_recording_cpu_time = 0;
-}
+    : task_sampling_rate_for_recording_cpu_time(
+          base::ThreadTicks::IsSupported() ? task_thread_time_sampling_rate
+                                           : 0) {}
 
 }  // namespace sequence_manager
 }  // namespace base
diff --git a/base/task/sequence_manager/sequence_manager.h b/base/task/sequence_manager/sequence_manager.h
index 8319098..fa8861a0 100644
--- a/base/task/sequence_manager/sequence_manager.h
+++ b/base/task/sequence_manager/sequence_manager.h
@@ -35,20 +35,39 @@
   };
 
   struct MetricRecordingSettings {
-    MetricRecordingSettings();
-    // Note: These parameters are desired and MetricRecordingSetting's will
-    // update them for consistency (e.g. setting values to false when
-    // ThreadTicks are not supported).
-    MetricRecordingSettings(bool records_cpu_time_for_each_task,
-                            double task_sampling_rate_for_recording_cpu_time);
+    // This parameter will be updated for consistency on creation (setting
+    // value to 0 when ThreadTicks are not supported).
+    MetricRecordingSettings(double task_sampling_rate_for_recording_cpu_time);
 
-    // True if cpu time is measured for each task, so the integral
-    // metrics (as opposed to per-task metrics) can be recorded.
-    bool records_cpu_time_for_each_task = false;
     // The proportion of the tasks for which the cpu time will be
     // sampled or 0 if this is not enabled.
-    // This value is always 1 if the |records_cpu_time_for_each_task| is true.
+    // Since randomised sampling requires the use of Rand(), it is enabled only
+    // on platforms which support it.
+    // If it is 1 then cpu time is measured for each task, so the integral
+    // metrics (as opposed to per-task metrics) can be recorded.
     double task_sampling_rate_for_recording_cpu_time = 0;
+
+    bool records_cpu_time_for_some_tasks() const {
+      return task_sampling_rate_for_recording_cpu_time > 0.0;
+    }
+
+    bool records_cpu_time_for_all_tasks() const {
+      return task_sampling_rate_for_recording_cpu_time == 1.0;
+    }
+  };
+
+  // Settings defining the desired SequenceManager behaviour: the type of the
+  // MessageLoop and whether randomised sampling should be enabled.
+  struct Settings {
+    Settings() = default;
+    // In the future MessagePump (which is move-only) will also be a setting,
+    // so we are making Settings move-only in preparation.
+    Settings(Settings&& move_from) noexcept = default;
+
+    MessageLoop::Type message_loop_type = MessageLoop::Type::TYPE_DEFAULT;
+    bool randomised_sampling_enabled = false;
+
+    DISALLOW_COPY_AND_ASSIGN(Settings);
   };
 
   virtual ~SequenceManager() = default;
@@ -161,6 +180,9 @@
   // The total number of posted tasks that haven't executed yet.
   virtual size_t GetPendingTaskCountForTesting() const = 0;
 
+  // Returns a JSON string which describes all pending tasks.
+  virtual std::string DescribeAllPendingTasks() const = 0;
+
  protected:
   virtual std::unique_ptr<internal::TaskQueueImpl> CreateTaskQueueImpl(
       const TaskQueue::Spec& spec) = 0;
@@ -170,15 +192,15 @@
 // Implementation is located in sequence_manager_impl.cc.
 // TODO(scheduler-dev): Remove after every thread has a SequenceManager.
 BASE_EXPORT std::unique_ptr<SequenceManager>
-CreateSequenceManagerOnCurrentThread();
+CreateSequenceManagerOnCurrentThread(SequenceManager::Settings settings);
 
 // Create a SequenceManager using the given MessagePump on the current thread.
 // MessagePump instances can be created with
 // MessageLoop::CreateMessagePumpForType().
 BASE_EXPORT std::unique_ptr<SequenceManager>
 CreateSequenceManagerOnCurrentThreadWithPump(
-    MessageLoop::Type type,
-    std::unique_ptr<MessagePump> message_pump);
+    std::unique_ptr<MessagePump> message_pump,
+    SequenceManager::Settings settings = SequenceManager::Settings());
 
 // Create a SequenceManager for a future thread using the provided MessageLoop.
 // The SequenceManager can be initialized on the current thread and then needs
@@ -190,7 +212,8 @@
 // Remove when we get rid of MessageLoop.
 // TODO(scheduler-dev): Change this to CreateUnboundSequenceManagerWithPump.
 BASE_EXPORT std::unique_ptr<SequenceManager> CreateUnboundSequenceManager(
-    MessageLoopBase* message_loop_base);
+    MessageLoopBase* message_loop_base,
+    SequenceManager::Settings settings = SequenceManager::Settings());
 
 }  // namespace sequence_manager
 }  // namespace base
diff --git a/base/task/sequence_manager/sequence_manager_impl.cc b/base/task/sequence_manager/sequence_manager_impl.cc
index e9af972..ec4dc16 100644
--- a/base/task/sequence_manager/sequence_manager_impl.cc
+++ b/base/task/sequence_manager/sequence_manager_impl.cc
@@ -11,6 +11,7 @@
 #include "base/bit_cast.h"
 #include "base/compiler_specific.h"
 #include "base/debug/crash_logging.h"
+#include "base/json/json_writer.h"
 #include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop_current.h"
 #include "base/optional.h"
@@ -37,22 +38,26 @@
 // greater than current anticipated usage.
 static constexpr const size_t kInitialTaskExecutionStackReserveCount = 10;
 
-std::unique_ptr<SequenceManager> CreateSequenceManagerOnCurrentThread() {
-  return internal::SequenceManagerImpl::CreateOnCurrentThread();
+std::unique_ptr<SequenceManager> CreateSequenceManagerOnCurrentThread(
+    SequenceManager::Settings settings) {
+  return internal::SequenceManagerImpl::CreateOnCurrentThread(
+      std::move(settings));
 }
 
 std::unique_ptr<SequenceManager> CreateSequenceManagerOnCurrentThreadWithPump(
-    MessageLoop::Type type,
-    std::unique_ptr<MessagePump> message_pump) {
+    std::unique_ptr<MessagePump> message_pump,
+    SequenceManager::Settings settings) {
   std::unique_ptr<SequenceManager> sequence_manager =
-      internal::SequenceManagerImpl::CreateUnboundWithPump(type);
+      internal::SequenceManagerImpl::CreateUnboundWithPump(std::move(settings));
   sequence_manager->BindToMessagePump(std::move(message_pump));
   return sequence_manager;
 }
 
 std::unique_ptr<SequenceManager> CreateUnboundSequenceManager(
-    MessageLoopBase* message_loop_base) {
-  return internal::SequenceManagerImpl::CreateUnbound(message_loop_base);
+    MessageLoopBase* message_loop_base,
+    SequenceManager::Settings settings) {
+  return internal::SequenceManagerImpl::CreateUnbound(
+      message_loop_base, DefaultTickClock::GetInstance(), std::move(settings));
 }
 
 namespace internal {
@@ -80,24 +85,30 @@
   queue->SweepCanceledDelayedTasks(time_domain_now->at(time_domain));
 }
 
-SequenceManager::MetricRecordingSettings InitializeMetricRecordingSettings() {
-  bool cpu_time_recording_always_on =
+SequenceManager::MetricRecordingSettings InitializeMetricRecordingSettings(
+    bool randomised_sampling_enabled) {
+  if (!randomised_sampling_enabled)
+    return SequenceManager::MetricRecordingSettings(0);
+  bool records_cpu_time_for_each_task =
       base::RandDouble() < kThreadSamplingRateForRecordingCPUTime;
   return SequenceManager::MetricRecordingSettings(
-      cpu_time_recording_always_on, kTaskSamplingRateForRecordingCPUTime);
+      records_cpu_time_for_each_task ? 1
+                                     : kTaskSamplingRateForRecordingCPUTime);
 }
 
 }  // namespace
 
 SequenceManagerImpl::SequenceManagerImpl(
     std::unique_ptr<internal::ThreadController> controller,
-    MessageLoop::Type type)
+    SequenceManager::Settings settings)
     : associated_thread_(controller->GetAssociatedThread()),
       controller_(std::move(controller)),
-      type_(type),
-      metric_recording_settings_(InitializeMetricRecordingSettings()),
+      type_(settings.message_loop_type),
+      metric_recording_settings_(InitializeMetricRecordingSettings(
+          settings.randomised_sampling_enabled)),
       memory_corruption_sentinel_(kMemoryCorruptionSentinelValue),
-      main_thread_only_(associated_thread_),
+      main_thread_only_(associated_thread_,
+                        settings.randomised_sampling_enabled),
       weak_factory_(this) {
   TRACE_EVENT_WARMUP_CATEGORY("sequence_manager");
   TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("sequence_manager"));
@@ -151,21 +162,25 @@
 SequenceManagerImpl::AnyThread::~AnyThread() = default;
 
 SequenceManagerImpl::MainThreadOnly::MainThreadOnly(
-    const scoped_refptr<AssociatedThreadId>& associated_thread)
-    : random_generator(RandUint64()),
-      uniform_distribution(0.0, 1.0),
-      selector(associated_thread),
+    const scoped_refptr<AssociatedThreadId>& associated_thread,
+    bool randomised_sampling_enabled)
+    : selector(associated_thread),
       real_time_domain(new internal::RealTimeDomain()) {
+  if (randomised_sampling_enabled) {
+    random_generator = std::mt19937_64(RandUint64());
+    uniform_distribution = std::uniform_real_distribution<double>(0.0, 1.0);
+  }
   task_execution_stack.reserve(kInitialTaskExecutionStackReserveCount);
 }
 
 SequenceManagerImpl::MainThreadOnly::~MainThreadOnly() = default;
 
 // static
-std::unique_ptr<SequenceManagerImpl>
-SequenceManagerImpl::CreateOnCurrentThread() {
+std::unique_ptr<SequenceManagerImpl> SequenceManagerImpl::CreateOnCurrentThread(
+    SequenceManager::Settings settings) {
   std::unique_ptr<SequenceManagerImpl> manager =
-      CreateUnbound(MessageLoopCurrent::Get()->ToMessageLoopBaseDeprecated());
+      CreateUnbound(MessageLoopCurrent::Get()->ToMessageLoopBaseDeprecated(),
+                    DefaultTickClock::GetInstance(), std::move(settings));
   manager->BindToCurrentThread();
   manager->CompleteInitializationOnBoundThread();
   return manager;
@@ -174,18 +189,20 @@
 // static
 std::unique_ptr<SequenceManagerImpl> SequenceManagerImpl::CreateUnbound(
     MessageLoopBase* message_loop_base,
-    const TickClock* clock) {
+    const TickClock* clock,
+    SequenceManager::Settings settings) {
   return WrapUnique(new SequenceManagerImpl(
       ThreadControllerImpl::Create(message_loop_base, clock),
-      MessageLoop::Type::TYPE_DEFAULT));
+      std::move(settings)));
 }
 
 // static
 std::unique_ptr<SequenceManagerImpl> SequenceManagerImpl::CreateUnboundWithPump(
-    MessageLoop::Type type,
+    SequenceManager::Settings settings,
     const TickClock* clock) {
   return WrapUnique(new SequenceManagerImpl(
-      ThreadControllerWithMessagePumpImpl::CreateUnbound(clock), type));
+      ThreadControllerWithMessagePumpImpl::CreateUnbound(clock),
+      std::move(settings)));
 }
 
 void SequenceManagerImpl::BindToMessageLoop(
@@ -450,7 +467,9 @@
         main_thread_only().selector.SelectWorkQueueToService(&work_queue);
     TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
         TRACE_DISABLED_BY_DEFAULT("sequence_manager.debug"), "SequenceManager",
-        this, AsValueWithSelectorResult(should_run, work_queue));
+        this,
+        AsValueWithSelectorResult(should_run, work_queue,
+                                  /* force_verbose */ false));
 
     if (!should_run)
       return nullopt;
@@ -732,22 +751,23 @@
 std::unique_ptr<trace_event::ConvertableToTraceFormat>
 SequenceManagerImpl::AsValueWithSelectorResult(
     bool should_run,
-    internal::WorkQueue* selected_work_queue) const {
+    internal::WorkQueue* selected_work_queue,
+    bool force_verbose) const {
   DCHECK_CALLED_ON_VALID_THREAD(associated_thread_->thread_checker);
   std::unique_ptr<trace_event::TracedValue> state(
       new trace_event::TracedValue());
   TimeTicks now = NowTicks();
   state->BeginArray("active_queues");
   for (auto* const queue : main_thread_only().active_queues)
-    queue->AsValueInto(now, state.get());
+    queue->AsValueInto(now, state.get(), force_verbose);
   state->EndArray();
   state->BeginArray("queues_to_gracefully_shutdown");
   for (const auto& pair : main_thread_only().queues_to_gracefully_shutdown)
-    pair.first->AsValueInto(now, state.get());
+    pair.first->AsValueInto(now, state.get(), force_verbose);
   state->EndArray();
   state->BeginArray("queues_to_delete");
   for (const auto& pair : main_thread_only().queues_to_delete)
-    pair.first->AsValueInto(now, state.get());
+    pair.first->AsValueInto(now, state.get(), force_verbose);
   state->EndArray();
   state->BeginDictionary("selector");
   main_thread_only().selector.AsValueInto(state.get());
@@ -824,7 +844,9 @@
 }
 
 bool SequenceManagerImpl::ShouldRecordCPUTimeForTask() {
-  return ThreadTicks::IsSupported() &&
+  DCHECK(ThreadTicks::IsSupported() ||
+         !metric_recording_settings_.records_cpu_time_for_some_tasks());
+  return metric_recording_settings_.records_cpu_time_for_some_tasks() &&
          main_thread_only().uniform_distribution(
              main_thread_only().random_generator) <
              metric_recording_settings_
@@ -899,6 +921,12 @@
   return WrapRefCounted(new TaskQueue(CreateTaskQueueImpl(spec), spec));
 }
 
+std::string SequenceManagerImpl::DescribeAllPendingTasks() const {
+  return AsValueWithSelectorResult(/* should_run */ false, nullptr,
+                                   /* force_verbose */ true)
+      ->ToString();
+}
+
 void SequenceManagerImpl::AddDestructionObserver(
     MessageLoopCurrent::DestructionObserver* destruction_observer) {
   main_thread_only().destruction_observers.AddObserver(destruction_observer);
diff --git a/base/task/sequence_manager/sequence_manager_impl.h b/base/task/sequence_manager/sequence_manager_impl.h
index 593a1798..ec322f4 100644
--- a/base/task/sequence_manager/sequence_manager_impl.h
+++ b/base/task/sequence_manager/sequence_manager_impl.h
@@ -86,7 +86,8 @@
   // This function should be called only once per thread.
   // This function assumes that a MessageLoop is initialized for
   // the current thread.
-  static std::unique_ptr<SequenceManagerImpl> CreateOnCurrentThread();
+  static std::unique_ptr<SequenceManagerImpl> CreateOnCurrentThread(
+      SequenceManager::Settings settings = SequenceManager::Settings());
 
   // Create a SequenceManager for a future thread that will run the provided
   // MessageLoop. The SequenceManager can be initialized on the current thread
@@ -98,10 +99,11 @@
   // This function should be called only once per MessageLoop.
   static std::unique_ptr<SequenceManagerImpl> CreateUnbound(
       MessageLoopBase* message_loop_base,
-      const TickClock* clock = DefaultTickClock::GetInstance());
+      const TickClock* clock = DefaultTickClock::GetInstance(),
+      SequenceManager::Settings settings = Settings());
 
   static std::unique_ptr<SequenceManagerImpl> CreateUnboundWithPump(
-      MessageLoop::Type type,
+      SequenceManager::Settings settings,
       const TickClock* clock = DefaultTickClock::GetInstance());
 
   // SequenceManager implementation:
@@ -129,6 +131,7 @@
   size_t GetPendingTaskCountForTesting() const override;
   scoped_refptr<TaskQueue> CreateTaskQueue(
       const TaskQueue::Spec& spec) override;
+  std::string DescribeAllPendingTasks() const override;
 
   // SequencedTaskSource implementation:
   Optional<PendingTask> TakeTask() override;
@@ -202,7 +205,7 @@
   // Create a task queue manager where |controller| controls the thread
   // on which the tasks are eventually run.
   SequenceManagerImpl(std::unique_ptr<internal::ThreadController> controller,
-                      MessageLoop::Type type);
+                      SequenceManager::Settings settings = Settings());
 
   friend class internal::TaskQueueImpl;
   friend class ::base::sequence_manager::SequenceManagerForTest;
@@ -249,7 +252,8 @@
 
   struct MainThreadOnly {
     explicit MainThreadOnly(
-        const scoped_refptr<AssociatedThreadId>& associated_thread);
+        const scoped_refptr<AssociatedThreadId>& associated_thread,
+        bool randomised_sampling_enabled);
     ~MainThreadOnly();
 
     int nesting_depth = 0;
@@ -328,7 +332,8 @@
 
   std::unique_ptr<trace_event::ConvertableToTraceFormat>
   AsValueWithSelectorResult(bool should_run,
-                            internal::WorkQueue* selected_work_queue) const;
+                            internal::WorkQueue* selected_work_queue,
+                            bool force_verbose) const;
 
   // Adds |queue| to |any_thread().has_incoming_immediate_work_| and if
   // |schedule_work| is true it makes sure a DoWork is posted.
diff --git a/base/task/sequence_manager/sequence_manager_impl_unittest.cc b/base/task/sequence_manager/sequence_manager_impl_unittest.cc
index 75e2df9..74f1c4c0 100644
--- a/base/task/sequence_manager/sequence_manager_impl_unittest.cc
+++ b/base/task/sequence_manager/sequence_manager_impl_unittest.cc
@@ -39,17 +39,18 @@
 #include "build/build_config.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
+using base::sequence_manager::internal::EnqueueOrder;
+using testing::_;
 using testing::AnyNumber;
 using testing::Contains;
 using testing::ElementsAre;
 using testing::ElementsAreArray;
+using testing::HasSubstr;
 using testing::Mock;
 using testing::Not;
 using testing::Return;
 using testing::StrictMock;
 using testing::UnorderedElementsAre;
-using testing::_;
-using base::sequence_manager::internal::EnqueueOrder;
 
 namespace base {
 namespace sequence_manager {
@@ -105,9 +106,10 @@
     test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(1));
     start_time_ = GetTickClock()->NowTicks();
 
-    manager_ =
-        SequenceManagerForTest::Create(nullptr, ThreadTaskRunnerHandle::Get(),
-                                       test_task_runner_->GetMockTickClock());
+    manager_ = SequenceManagerForTest::Create(
+        nullptr, ThreadTaskRunnerHandle::Get(),
+        test_task_runner_->GetMockTickClock(),
+        SequenceManager::Settings{.randomised_sampling_enabled = false});
   }
 
   const TickClock* GetTickClock() {
@@ -178,7 +180,8 @@
 
     manager_ = SequenceManagerForTest::Create(
         message_loop_->GetMessageLoopBase(), ThreadTaskRunnerHandle::Get(),
-        &mock_clock_);
+        &mock_clock_,
+        SequenceManager::Settings{.randomised_sampling_enabled = false});
   }
 
   void SetUpWithMessagePump() {
@@ -186,7 +189,8 @@
     start_time_ = mock_clock_.NowTicks();
     manager_ = SequenceManagerForTest::Create(
         std::make_unique<ThreadControllerWithMessagePumpImpl>(
-            std::make_unique<MessagePumpDefault>(), &mock_clock_));
+            std::make_unique<MessagePumpDefault>(), &mock_clock_),
+        SequenceManager::Settings{.randomised_sampling_enabled = false});
     // ThreadControllerWithMessagePumpImpl doesn't provide
     // a default task runner.
     default_task_queue_ = manager_->CreateTaskQueueWithType<TestTaskQueue>(
@@ -213,7 +217,8 @@
 
     manager_ = SequenceManagerForTest::Create(
         message_loop_->GetMessageLoopBase(), ThreadTaskRunnerHandle::Get(),
-        &mock_clock_);
+        &mock_clock_,
+        SequenceManager::Settings{.randomised_sampling_enabled = false});
   }
 
   void SetUpWithMessagePump() {
@@ -221,7 +226,8 @@
     start_time_ = mock_clock_.NowTicks();
     manager_ = SequenceManagerForTest::Create(
         std::make_unique<ThreadControllerWithMessagePumpImpl>(
-            std::make_unique<MessagePumpDefault>(), &mock_clock_));
+            std::make_unique<MessagePumpDefault>(), &mock_clock_),
+        SequenceManager::Settings{.randomised_sampling_enabled = false});
     // ThreadControllerWithMessagePumpImpl doesn't provide
     // a default task runner.
     default_task_queue_ = manager_->CreateTaskQueueWithType<TestTaskQueue>(
@@ -298,7 +304,8 @@
   TestCountUsesTimeSource test_count_uses_time_source;
 
   manager_ = SequenceManagerForTest::Create(
-      nullptr, ThreadTaskRunnerHandle::Get(), &test_count_uses_time_source);
+      nullptr, ThreadTaskRunnerHandle::Get(), &test_count_uses_time_source,
+      SequenceManager::Settings{.randomised_sampling_enabled = false});
   manager_->SetWorkBatchSize(6);
 
   CreateTaskQueues(3u);
@@ -321,7 +328,8 @@
   TestCountUsesTimeSource test_count_uses_time_source;
 
   manager_ = SequenceManagerForTest::Create(
-      nullptr, ThreadTaskRunnerHandle::Get(), &test_count_uses_time_source);
+      nullptr, ThreadTaskRunnerHandle::Get(), &test_count_uses_time_source,
+      SequenceManager::Settings{.randomised_sampling_enabled = false});
   manager_->SetWorkBatchSize(6);
   manager_->AddTaskTimeObserver(&test_task_time_observer_);
 
@@ -346,7 +354,8 @@
   TestCountUsesTimeSource test_count_uses_time_source;
 
   manager_ = SequenceManagerForTest::Create(
-      nullptr, ThreadTaskRunnerHandle::Get(), &test_count_uses_time_source);
+      nullptr, ThreadTaskRunnerHandle::Get(), &test_count_uses_time_source,
+      SequenceManager::Settings{.randomised_sampling_enabled = false});
   manager_->SetWorkBatchSize(6);
   manager_->AddTaskTimeObserver(&test_task_time_observer_);
 
@@ -3376,8 +3385,10 @@
       MakeRefCounted<TestSimpleTaskRunner>();
   {
     std::unique_ptr<SequenceManagerForTest> manager =
-        SequenceManagerForTest::Create(message_loop.GetMessageLoopBase(),
-                                       message_loop.task_runner(), nullptr);
+        SequenceManagerForTest::Create(
+            message_loop.GetMessageLoopBase(), message_loop.task_runner(),
+            nullptr,
+            SequenceManager::Settings{.randomised_sampling_enabled = false});
     manager->SetDefaultTaskRunner(custom_task_runner);
     DCHECK_EQ(custom_task_runner, message_loop.task_runner());
   }
@@ -4071,6 +4082,37 @@
   thread.Stop();
 }
 
+void PostTaskA(scoped_refptr<TaskRunner> task_runner) {
+  task_runner->PostTask(FROM_HERE, BindOnce(&NopTask));
+  task_runner->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
+                               base::TimeDelta::FromMilliseconds(10));
+}
+
+void PostTaskB(scoped_refptr<TaskRunner> task_runner) {
+  task_runner->PostTask(FROM_HERE, BindOnce(&NopTask));
+  task_runner->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
+                               base::TimeDelta::FromMilliseconds(20));
+}
+
+void PostTaskC(scoped_refptr<TaskRunner> task_runner) {
+  task_runner->PostTask(FROM_HERE, BindOnce(&NopTask));
+  task_runner->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
+                               base::TimeDelta::FromMilliseconds(30));
+}
+
+TEST_P(SequenceManagerTest, DescribeAllPendingTasks) {
+  CreateTaskQueues(3u);
+
+  PostTaskA(queues_[0]->task_runner());
+  PostTaskB(queues_[1]->task_runner());
+  PostTaskC(queues_[2]->task_runner());
+
+  std::string description = manager_->DescribeAllPendingTasks();
+  EXPECT_THAT(description, HasSubstr("PostTaskA@"));
+  EXPECT_THAT(description, HasSubstr("PostTaskB@"));
+  EXPECT_THAT(description, HasSubstr("PostTaskC@"));
+}
+
 }  // namespace sequence_manager_impl_unittest
 }  // namespace internal
 }  // namespace sequence_manager
diff --git a/base/task/sequence_manager/sequence_manager_perftest.cc b/base/task/sequence_manager/sequence_manager_perftest.cc
index 42f1a36..9376068 100644
--- a/base/task/sequence_manager/sequence_manager_perftest.cc
+++ b/base/task/sequence_manager/sequence_manager_perftest.cc
@@ -75,6 +75,7 @@
   kUseUIMessageLoop = 7,
   kUseIOMessageLoop = 8,
   kUseSingleThreadInWorkerPool = 9,
+  kUseSequenceManagerWithMessagePumpAndRandomSampling = 10,
 };
 
 // Customization point for SequenceManagerPerfTest which allows us to test
@@ -150,7 +151,8 @@
       : name_(name), message_loop_(new MessageLoopType()) {
     SetSequenceManager(SequenceManagerForTest::Create(
         message_loop_->GetMessageLoopBase(), message_loop_->task_runner(),
-        DefaultTickClock::GetInstance()));
+        DefaultTickClock::GetInstance(),
+        SequenceManager::Settings{.randomised_sampling_enabled = false}));
   }
 
   ~SequenceManagerWithMessageLoopPerfTestDelegate() override { ShutDown(); }
@@ -165,13 +167,17 @@
 class SequenceManagerWithMessagePumpPerfTestDelegate
     : public BaseSequenceManagerPerfTestDelegate {
  public:
-  SequenceManagerWithMessagePumpPerfTestDelegate(const char* name,
-                                                 MessageLoop::Type type)
+  SequenceManagerWithMessagePumpPerfTestDelegate(
+      const char* name,
+      MessageLoop::Type type,
+      bool randomised_sampling_enabled = false)
       : name_(name) {
     SetSequenceManager(SequenceManagerForTest::Create(
         std::make_unique<internal::ThreadControllerWithMessagePumpImpl>(
             MessageLoop ::CreateMessagePumpForType(type),
-            DefaultTickClock::GetInstance())));
+            DefaultTickClock::GetInstance()),
+        SequenceManager::Settings{.randomised_sampling_enabled =
+                                      randomised_sampling_enabled}));
 
     // ThreadControllerWithMessagePumpImpl doesn't provide a default task
     // runner.
@@ -617,6 +623,11 @@
       case PerfTestType::kUseSingleThreadInWorkerPool:
         return std::make_unique<SingleThreadInWorkerPoolPerfTestDelegate>();
 
+      case PerfTestType::kUseSequenceManagerWithMessagePumpAndRandomSampling:
+        return std::make_unique<SequenceManagerWithMessagePumpPerfTestDelegate>(
+            " SequenceManager with MessagePumpDefault and random sampling ",
+            MessageLoop::TYPE_DEFAULT, true);
+
       default:
         NOTREACHED();
         return nullptr;
@@ -661,17 +672,18 @@
 INSTANTIATE_TEST_CASE_P(
     ,
     SequenceManagerPerfTest,
-    testing::Values(PerfTestType::kUseSequenceManagerWithMessageLoop,
-                    PerfTestType::kUseSequenceManagerWithMessagePump,
-                    PerfTestType::kUseSequenceManagerWithUIMessageLoop,
-                    PerfTestType::kUseSequenceManagerWithUIMessagePump,
-                    PerfTestType::kUseSequenceManagerWithIOMessageLoop,
-                    PerfTestType::kUseSequenceManagerWithIOMessagePump,
-                    PerfTestType::kUseMessageLoop,
-                    PerfTestType::kUseUIMessageLoop,
-                    PerfTestType::kUseIOMessageLoop,
-                    PerfTestType::kUseSingleThreadInWorkerPool));
-
+    testing::Values(
+        PerfTestType::kUseSequenceManagerWithMessageLoop,
+        PerfTestType::kUseSequenceManagerWithMessagePump,
+        PerfTestType::kUseSequenceManagerWithUIMessageLoop,
+        PerfTestType::kUseSequenceManagerWithUIMessagePump,
+        PerfTestType::kUseSequenceManagerWithIOMessageLoop,
+        PerfTestType::kUseSequenceManagerWithIOMessagePump,
+        PerfTestType::kUseMessageLoop,
+        PerfTestType::kUseUIMessageLoop,
+        PerfTestType::kUseIOMessageLoop,
+        PerfTestType::kUseSingleThreadInWorkerPool,
+        PerfTestType::kUseSequenceManagerWithMessagePumpAndRandomSampling));
 TEST_P(SequenceManagerPerfTest, PostDelayedTasks_OneQueue) {
   if (!delegate_->VirtualTimeIsSupported()) {
     LOG(INFO) << "Unsupported";
diff --git a/base/task/sequence_manager/task_queue_impl.cc b/base/task/sequence_manager/task_queue_impl.cc
index d189c219..5ede22e 100644
--- a/base/task/sequence_manager/task_queue_impl.cc
+++ b/base/task/sequence_manager/task_queue_impl.cc
@@ -494,7 +494,8 @@
 }
 
 void TaskQueueImpl::AsValueInto(TimeTicks now,
-                                trace_event::TracedValue* state) const {
+                                trace_event::TracedValue* state,
+                                bool force_verbose) const {
   AutoLock lock(any_thread_lock_);
   AutoLock immediate_incoming_queue_lock(immediate_incoming_queue_lock_);
   state->BeginDictionary();
@@ -551,7 +552,7 @@
       TRACE_DISABLED_BY_DEFAULT("sequence_manager.verbose_snapshots"),
       &verbose);
 
-  if (verbose) {
+  if (verbose || force_verbose) {
     state->BeginArray("immediate_incoming_queue");
     QueueAsValueInto(immediate_incoming_queue(), now, state);
     state->EndArray();
diff --git a/base/task/sequence_manager/task_queue_impl.h b/base/task/sequence_manager/task_queue_impl.h
index 5cffe9e..e74d047 100644
--- a/base/task/sequence_manager/task_queue_impl.h
+++ b/base/task/sequence_manager/task_queue_impl.h
@@ -140,7 +140,9 @@
   // Must only be called from the thread this task queue was created on.
   void ReloadImmediateWorkQueueIfEmpty();
 
-  void AsValueInto(TimeTicks now, trace_event::TracedValue* state) const;
+  void AsValueInto(TimeTicks now,
+                   trace_event::TracedValue* state,
+                   bool force_verbose) const;
 
   bool GetQuiescenceMonitored() const { return should_monitor_quiescence_; }
   bool GetShouldNotifyObservers() const { return should_notify_observers_; }
diff --git a/base/task/sequence_manager/test/sequence_manager_for_test.cc b/base/task/sequence_manager/test/sequence_manager_for_test.cc
index ae2c1cc..42e4921 100644
--- a/base/task/sequence_manager/test/sequence_manager_for_test.cc
+++ b/base/task/sequence_manager/test/sequence_manager_for_test.cc
@@ -38,18 +38,20 @@
 }  // namespace
 
 SequenceManagerForTest::SequenceManagerForTest(
-    std::unique_ptr<internal::ThreadController> thread_controller)
-    : SequenceManagerImpl(std::move(thread_controller),
-                          MessageLoop::Type::TYPE_DEFAULT) {}
+    std::unique_ptr<internal::ThreadController> thread_controller,
+    SequenceManager::Settings settings)
+    : SequenceManagerImpl(std::move(thread_controller), std::move(settings)) {}
 
 // static
 std::unique_ptr<SequenceManagerForTest> SequenceManagerForTest::Create(
     MessageLoopBase* message_loop_base,
     scoped_refptr<SingleThreadTaskRunner> task_runner,
-    const TickClock* clock) {
-  std::unique_ptr<SequenceManagerForTest> manager(
-      new SequenceManagerForTest(std::make_unique<ThreadControllerForTest>(
-          message_loop_base, std::move(task_runner), clock)));
+    const TickClock* clock,
+    SequenceManager::Settings settings) {
+  std::unique_ptr<SequenceManagerForTest> manager(new SequenceManagerForTest(
+      std::make_unique<ThreadControllerForTest>(message_loop_base,
+                                                std::move(task_runner), clock),
+      std::move(settings)));
   manager->BindToCurrentThread();
   manager->CompleteInitializationOnBoundThread();
   return manager;
@@ -57,9 +59,10 @@
 
 // static
 std::unique_ptr<SequenceManagerForTest> SequenceManagerForTest::Create(
-    std::unique_ptr<internal::ThreadController> thread_controller) {
-  std::unique_ptr<SequenceManagerForTest> manager(
-      new SequenceManagerForTest(std::move(thread_controller)));
+    std::unique_ptr<internal::ThreadController> thread_controller,
+    SequenceManager::Settings settings) {
+  std::unique_ptr<SequenceManagerForTest> manager(new SequenceManagerForTest(
+      std::move(thread_controller), std::move(settings)));
   manager->BindToCurrentThread();
   manager->CompleteInitializationOnBoundThread();
   return manager;
diff --git a/base/task/sequence_manager/test/sequence_manager_for_test.h b/base/task/sequence_manager/test/sequence_manager_for_test.h
index 7479c24..0b6afe4 100644
--- a/base/task/sequence_manager/test/sequence_manager_for_test.h
+++ b/base/task/sequence_manager/test/sequence_manager_for_test.h
@@ -25,11 +25,17 @@
   static std::unique_ptr<SequenceManagerForTest> Create(
       MessageLoopBase* message_loop_base,
       scoped_refptr<SingleThreadTaskRunner> task_runner,
-      const TickClock* clock);
+      const TickClock* clock,
+      // Since most test calls are in Blink, randomised sampling is enabled
+      // by default in the test SequenceManager, as opposed to production code.
+      SequenceManager::Settings settings = SequenceManager::Settings{
+          .randomised_sampling_enabled = true});
 
   // Creates SequenceManagerForTest using the provided ThreadController.
   static std::unique_ptr<SequenceManagerForTest> Create(
-      std::unique_ptr<internal::ThreadController> thread_controller);
+      std::unique_ptr<internal::ThreadController> thread_controller,
+      SequenceManager::Settings settings = SequenceManager::Settings{
+          .randomised_sampling_enabled = true});
 
   size_t ActiveQueuesCount() const;
   bool HasImmediateWork() const;
@@ -43,7 +49,8 @@
 
  private:
   explicit SequenceManagerForTest(
-      std::unique_ptr<internal::ThreadController> thread_controller);
+      std::unique_ptr<internal::ThreadController> thread_controller,
+      SequenceManager::Settings settings);
 };
 
 }  // namespace sequence_manager
diff --git a/base/task/sequence_manager/time_domain_unittest.cc b/base/task/sequence_manager/time_domain_unittest.cc
index 226bff1..34a67115 100644
--- a/base/task/sequence_manager/time_domain_unittest.cc
+++ b/base/task/sequence_manager/time_domain_unittest.cc
@@ -389,8 +389,8 @@
   constexpr auto kType = MessageLoop::TYPE_DEFAULT;
   constexpr auto kDelay = TimeDelta::FromMilliseconds(20);
   SimpleTestTickClock clock;
-  auto sequence_manager =
-      internal::SequenceManagerImpl::CreateUnboundWithPump(kType, &clock);
+  auto sequence_manager = internal::SequenceManagerImpl::CreateUnboundWithPump(
+      SequenceManager::Settings{.message_loop_type = kType}, &clock);
   sequence_manager->BindToMessagePump(
       MessageLoop::CreateMessagePumpForType(kType));
   auto high_prio_queue =
diff --git a/cc/paint/paint_flags.cc b/cc/paint/paint_flags.cc
index 04ecff6f..a54051f 100644
--- a/cc/paint/paint_flags.cc
+++ b/cc/paint/paint_flags.cc
@@ -24,7 +24,7 @@
   bitfields_.cap_type_ = SkPaint::kDefault_Cap;
   bitfields_.join_type_ = SkPaint::kDefault_Join;
   bitfields_.style_ = SkPaint::kFill_Style;
-  bitfields_.text_encoding_ = SkPaint::kUTF8_TextEncoding;
+  bitfields_.text_encoding_ = static_cast<unsigned>(kUTF8_SkTextEncoding);
   bitfields_.hinting_ = static_cast<unsigned>(SkFontHinting::kNormal);
   bitfields_.filter_quality_ = SkFilterQuality::kNone_SkFilterQuality;
 
@@ -145,7 +145,7 @@
   paint.setStrokeCap(static_cast<SkPaint::Cap>(getStrokeCap()));
   paint.setStrokeJoin(static_cast<SkPaint::Join>(getStrokeJoin()));
   paint.setStyle(static_cast<SkPaint::Style>(getStyle()));
-  paint.setTextEncoding(static_cast<SkPaint::TextEncoding>(getTextEncoding()));
+  paint.setTextEncoding(static_cast<SkTextEncoding>(getTextEncoding()));
   paint.setHinting(static_cast<SkFontHinting>(getHinting()));
   paint.setFilterQuality(getFilterQuality());
   return paint;
diff --git a/cc/paint/paint_flags.h b/cc/paint/paint_flags.h
index fda9cc5..28339d6f 100644
--- a/cc/paint/paint_flags.h
+++ b/cc/paint/paint_flags.h
@@ -100,10 +100,10 @@
     SetInternalFlag(dither, SkPaint::kDither_Flag);
   }
   enum TextEncoding {
-    kUTF8_TextEncoding = SkPaint::kUTF8_TextEncoding,
-    kUTF16_TextEncoding = SkPaint::kUTF16_TextEncoding,
-    kUTF32_TextEncoding = SkPaint::kUTF32_TextEncoding,
-    kGlyphID_TextEncoding = SkPaint::kGlyphID_TextEncoding
+    kUTF8_TextEncoding = static_cast<unsigned>(kUTF8_SkTextEncoding),
+    kUTF16_TextEncoding = static_cast<unsigned>(kUTF16_SkTextEncoding),
+    kUTF32_TextEncoding = static_cast<unsigned>(kUTF32_SkTextEncoding),
+    kGlyphID_TextEncoding = static_cast<unsigned>(kGlyphID_SkTextEncoding)
   };
   ALWAYS_INLINE TextEncoding getTextEncoding() const {
     return static_cast<TextEncoding>(bitfields_.text_encoding_);
diff --git a/chrome/android/java/res_autofill_assistant/layout/init_screen.xml b/chrome/android/java/res_autofill_assistant/layout/init_screen.xml
index 857a01aa..2691de0 100644
--- a/chrome/android/java/res_autofill_assistant/layout/init_screen.xml
+++ b/chrome/android/java/res_autofill_assistant/layout/init_screen.xml
@@ -122,7 +122,7 @@
                 android:layout_height="wrap_content"
                 android:gravity="bottom|center"
                 android:orientation="horizontal"
-                android:paddingTop="20dp">
+                android:paddingTop="32dp">
 
                 <!-- 'No' button -->
                 <org.chromium.ui.widget.ButtonCompat
@@ -157,7 +157,7 @@
                     android:text="@string/init_ok"
                     style="FilledButton" />
             </LinearLayout>
-            <Space android:layout_width="0dp" android:layout_height="5dp"/>
+            <Space android:layout_width="0dp" android:layout_height="24dp"/>
         </LinearLayout>
     </RelativeLayout>
 </FrameLayout>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index e470dc3..d5c5bb7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -1701,7 +1701,8 @@
     }
 
     private void maybeUpdateCctHeaderVisibility(String url) {
-        if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE) || !isModuleLoaded()) {
+        if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE)
+                || (!isModuleLoaded() && !isModuleLoading())) {
             return;
         }
         boolean isModuleManagedUrl = isModuleManagedUrl(url);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunner.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunner.java
new file mode 100644
index 0000000..fea0424a
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunner.java
@@ -0,0 +1,123 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.invalidation;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.os.SystemClock;
+import android.support.annotation.Nullable;
+
+/**
+ * Runner which can be paused. When the runner is paused, the execution of its
+ * scheduled task is delayed till the runner is resumed. This runner could be
+ * used as follows:
+ *
+ * <pre>
+ * {@code
+ *
+ * ResumableDelayedTaskRunner runner = new ResumableDelayedTaskRunner();
+ * mEnableSessionInvalidationsTimer.setRunnable(task, delayMs);
+ * runner.resume();  // Starts the count down.
+ * runner.pause();   // Pauses the count down.
+ * runner.resume();  // Resumes the count down.
+ * runner.cancel();  // Stops count down and clears the state.
+ *
+ * }
+ * </pre>
+ */
+public class ResumableDelayedTaskRunner {
+    private final Handler mHandler = new Handler();
+    private final Thread mThread = Thread.currentThread();
+
+    /**
+     * Runnable which is added to the handler's message queue.
+     */
+    @Nullable
+    private Runnable mHandlerRunnable;
+
+    /**
+     * User provided task.
+     */
+    @Nullable
+    private Runnable mRunnable;
+
+    /**
+     * Time at which the task is scheduled.
+     */
+    private long mScheduledTime;
+
+    /**
+     * This requires to be called on a thread where the Looper has been
+     * prepared.
+     */
+    public ResumableDelayedTaskRunner() {
+        assert Looper.myLooper()
+                != null : "ResumableDelayedTaskRunner can only be used on threads with a Looper";
+    }
+
+    /**
+     * Sets the task to run. The task will be run after the delay once
+     * {@link #resume()} is called. The previously scheduled task, if any, is
+     * cancelled. The Runnable |r| shouldn't call setRunnable() itself.
+     * @param r Task to run.
+     * @param delayMs Delay in milliseconds after which to run the task.
+     */
+    public void setRunnable(Runnable r, long delayMs) {
+        checkThread();
+        cancel();
+        mRunnable = r;
+        mScheduledTime = SystemClock.elapsedRealtime() + delayMs;
+    }
+
+    /**
+     * Blocks the task from being run.
+     */
+    public void pause() {
+        checkThread();
+        if (mHandlerRunnable == null) {
+            return;
+        }
+
+        mHandler.removeCallbacks(mHandlerRunnable);
+        mHandlerRunnable = null;
+    }
+
+    /**
+     * Unblocks the task from being run. If the task was scheduled for a time in the past, runs
+     * the task. Does nothing if no task is scheduled.
+     */
+    public void resume() {
+        checkThread();
+        if (mRunnable == null || mHandlerRunnable != null) {
+            return;
+        }
+
+        long delayMs = Math.max(mScheduledTime - SystemClock.elapsedRealtime(), 0);
+        mHandlerRunnable = new Runnable() {
+            @Override
+            public void run() {
+                mRunnable.run();
+                mRunnable = null;
+                mHandlerRunnable = null;
+            }
+        };
+        mHandler.postDelayed(mHandlerRunnable, delayMs);
+    }
+
+    /**
+     * Cancels the scheduled task, if any.
+     */
+    public void cancel() {
+        checkThread();
+        pause();
+        mRunnable = null;
+    }
+
+    private void checkThread() {
+        assert mThread
+                == Thread.currentThread()
+            : "ResumableDelayedTaskRunner must only be used on a single Thread.";
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManager.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManager.java
new file mode 100644
index 0000000..8d14401
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManager.java
@@ -0,0 +1,141 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.invalidation;
+
+import org.chromium.base.ApplicationState;
+import org.chromium.base.ApplicationStatus;
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.VisibleForTesting;
+import org.chromium.chrome.browser.ntp.ForeignSessionHelper;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Class responsible for managing registration for invalidations for noisy sync
+ * data types such as SESSIONS on Android. It keeps track of how many recent
+ * pages tab open and register/unregister for SESSIONS invalidation accordingly.
+ * It should be used only from the UI thread.
+ */
+public class SessionsInvalidationManager implements ApplicationStatus.ApplicationStateListener {
+    /**
+     * The amount of time after the RecentTabsPage is opened to register for session sync
+     * invalidations. The delay is designed so that only users who linger on the RecentTabsPage
+     * register for session sync invalidations. How long users spend on the RecentTabsPage is
+     * measured by the NewTabPage.RecentTabsPage.TimeVisibleAndroid UMA metric.
+     */
+    static final int REGISTER_FOR_SESSION_SYNC_INVALIDATIONS_DELAY_MS =
+            (int) TimeUnit.SECONDS.toMillis(20);
+
+    /**
+     * The amount of time after the RecentTabsPage is closed to unregister for session sync
+     * invalidations. The delay is long to avoid registering and unregistering a lot if the user
+     * visits the RecentTabsPage a lot.
+     */
+    static final int UNREGISTER_FOR_SESSION_SYNC_INVALIDATIONS_DELAY_MS =
+            (int) TimeUnit.HOURS.toMillis(1);
+
+    /**
+     * Used to schedule tasks to enable and disable session sync invalidations.
+     */
+    private final ResumableDelayedTaskRunner mEnableSessionInvalidationsRunner;
+
+    /**
+     * Used to call native code that enables and disables session invalidations.
+     */
+    private final ForeignSessionHelper mForeignSessionHelper;
+
+    private static SessionsInvalidationManager sInstance;
+
+    /**
+     *  Whether session sync invalidations are enabled.
+     */
+    private boolean mIsSessionInvalidationsEnabled;
+
+    /**
+     * The number of open RecentTabsPages
+     */
+    private int mNumRecentTabPages;
+
+    /**
+     * Returns the a singleton SessionsInvalidationManager.
+     *
+     * Calling this method will create the instance if it does not yet exist.
+     */
+    public static SessionsInvalidationManager get(ForeignSessionHelper foreignSessionHelper) {
+        ThreadUtils.assertOnUiThread();
+        if (sInstance == null) {
+            sInstance = new SessionsInvalidationManager(
+                    foreignSessionHelper, new ResumableDelayedTaskRunner());
+        }
+        return sInstance;
+    }
+
+    @VisibleForTesting
+    SessionsInvalidationManager(
+            ForeignSessionHelper foreignSessionHelper, ResumableDelayedTaskRunner runner) {
+        mForeignSessionHelper = foreignSessionHelper;
+        mIsSessionInvalidationsEnabled = false;
+        mEnableSessionInvalidationsRunner = runner;
+        ApplicationStatus.registerApplicationStateListener(this);
+    }
+
+    /**
+     * Called when a RecentTabsPage is opened.
+     */
+    public void onRecentTabsPageOpened() {
+        ++mNumRecentTabPages;
+        if (mNumRecentTabPages == 1) {
+            setSessionInvalidationsEnabled(true, REGISTER_FOR_SESSION_SYNC_INVALIDATIONS_DELAY_MS);
+        }
+    }
+
+    /**
+     * Called when a RecentTabsPage is closed.
+     */
+    public void onRecentTabsPageClosed() {
+        --mNumRecentTabPages;
+        if (mNumRecentTabPages == 0) {
+            setSessionInvalidationsEnabled(
+                    false, UNREGISTER_FOR_SESSION_SYNC_INVALIDATIONS_DELAY_MS);
+        }
+    }
+
+    /**
+     * Schedules a task to enable/disable session sync invalidations. Cancels any previously
+     * scheduled tasks to enable/disable session sync invalidations.
+     * @param isEnabled whether to enable or disable session sync invalidations.
+     * @param delayMs Delay in milliseconds after which to apply change.
+     */
+    private void setSessionInvalidationsEnabled(boolean isEnabled, long delayMs) {
+        mEnableSessionInvalidationsRunner.cancel();
+
+        if (mIsSessionInvalidationsEnabled == isEnabled) {
+            return;
+        }
+
+        mEnableSessionInvalidationsRunner.setRunnable(() -> {
+            mIsSessionInvalidationsEnabled = isEnabled;
+            mForeignSessionHelper.setInvalidationsForSessionsEnabled(isEnabled);
+        }, delayMs);
+        mEnableSessionInvalidationsRunner.resume();
+    }
+
+    @Override
+    public void onApplicationStateChange(int newState) {
+        // Registering for receiving invalidation requires calling native code. Therefore, we should
+        // pause the runner when Chrome goes to the background to postpone calling up native code
+        // until next time Chrome is running again.
+        if (newState == ApplicationState.HAS_RUNNING_ACTIVITIES) {
+            mEnableSessionInvalidationsRunner.resume();
+        } else if (newState == ApplicationState.HAS_PAUSED_ACTIVITIES) {
+            mEnableSessionInvalidationsRunner.pause();
+        }
+    }
+
+    @VisibleForTesting
+    public boolean isSessionInvalidationsEnabled() {
+        return mIsSessionInvalidationsEnabled;
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
index 9c50de1..292272b1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
@@ -15,7 +15,7 @@
  * This class exposes to Java information about sessions, windows, and tabs on the user's synced
  * devices.
  */
-class ForeignSessionHelper {
+public class ForeignSessionHelper {
     private long mNativeForeignSessionHelper;
 
     /**
@@ -200,7 +200,7 @@
     /**
      * Enable invalidations for sessions sync related datatypes.
      */
-    void setInvalidationsForSessionsEnabled(boolean enabled) {
+    public void setInvalidationsForSessionsEnabled(boolean enabled) {
         nativeSetInvalidationsForSessionsEnabled(mNativeForeignSessionHelper, enabled);
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
index e1c0a33..765dc829 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
@@ -13,10 +13,12 @@
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.favicon.FaviconHelper;
 import org.chromium.chrome.browser.favicon.FaviconHelper.FaviconImageCallback;
 import org.chromium.chrome.browser.history.HistoryManagerUtils;
 import org.chromium.chrome.browser.invalidation.InvalidationController;
+import org.chromium.chrome.browser.invalidation.SessionsInvalidationManager;
 import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSession;
 import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSessionTab;
 import org.chromium.chrome.browser.profiles.Profile;
@@ -116,7 +118,12 @@
         mForeignSessionHelper.triggerSessionSync();
         registerObservers();
 
-        InvalidationController.get().onRecentTabsPageOpened();
+        if (ChromeFeatureList.isInitialized()
+                && ChromeFeatureList.isEnabled(ChromeFeatureList.FCM_INVALIDATIONS)) {
+            SessionsInvalidationManager.get(mForeignSessionHelper).onRecentTabsPageOpened();
+        } else {
+            InvalidationController.get().onRecentTabsPageOpened();
+        }
     }
 
     /**
@@ -138,15 +145,21 @@
         mRecentlyClosedTabManager.destroy();
         mRecentlyClosedTabManager = null;
 
-        mForeignSessionHelper.destroy();
-        mForeignSessionHelper = null;
 
         mUpdatedCallback = null;
 
         mPrefs.destroy();
         mPrefs = null;
 
-        InvalidationController.get().onRecentTabsPageClosed();
+        if (ChromeFeatureList.isInitialized()
+                && ChromeFeatureList.isEnabled(ChromeFeatureList.FCM_INVALIDATIONS)) {
+            SessionsInvalidationManager.get(mForeignSessionHelper).onRecentTabsPageClosed();
+        } else {
+            InvalidationController.get().onRecentTabsPageClosed();
+        }
+
+        mForeignSessionHelper.destroy();
+        mForeignSessionHelper = null;
     }
 
     private void registerForForeignSessionUpdates() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
index 7daa544f1..5ac58e7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
@@ -145,7 +145,7 @@
 
     protected ViewGroup mToolbarButtonsContainer;
     private IncognitoToggleTabLayout mIncognitoToggleTabLayout;
-    protected ToggleTabStackButton mToggleTabStackButton;
+    protected @Nullable ToggleTabStackButton mToggleTabStackButton;
     protected NewTabButton mNewTabButton;
     protected @Nullable ImageButton mHomeButton;
     private TextView mUrlBar;
@@ -1923,7 +1923,9 @@
 
     @Override
     public void setOnTabSwitcherClickHandler(OnClickListener listener) {
-        mToggleTabStackButton.setOnTabSwitcherClickHandler(listener);
+        if (mToggleTabStackButton != null) {
+            mToggleTabStackButton.setOnTabSwitcherClickHandler(listener);
+        }
     }
 
     @Override
@@ -2125,7 +2127,7 @@
     public void onUrlFocusChange(final boolean hasFocus) {
         super.onUrlFocusChange(hasFocus);
 
-        mToggleTabStackButton.setClickable(!hasFocus);
+        if (mToggleTabStackButton != null) mToggleTabStackButton.setClickable(!hasFocus);
         triggerUrlFocusAnimation(hasFocus);
     }
 
@@ -2182,7 +2184,9 @@
     public void setTabCountProvider(TabCountProvider tabCountProvider) {
         mTabCountProvider = tabCountProvider;
         mTabCountProvider.addObserver(this);
-        mToggleTabStackButton.setTabCountProvider(tabCountProvider);
+        if (mToggleTabStackButton != null) {
+            mToggleTabStackButton.setTabCountProvider(tabCountProvider);
+        }
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingController.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingController.java
index 83ea263..46b007c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingController.java
@@ -101,6 +101,17 @@
         return sInstance;
     }
 
+    /**
+     * Query whether the TracingController instance has been created and initialized. Does not
+     * create the controller instance if it has not been created yet.
+     *
+     * @return |true| if the controller was created and is initialized, |false| otherwise.
+     */
+    public static boolean isInitialized() {
+        if (sInstance == null) return false;
+        return getInstance().getState() != State.INITIALIZING;
+    }
+
     private void initialize() {
         mNativeController = TracingControllerAndroid.create(ContextUtils.getApplicationContext());
         mNativeController.getKnownCategories(categories -> {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java
index 6f8c293b..d80517a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java
@@ -71,15 +71,20 @@
 
     @Override
     protected void onHandleIntent(Intent intent) {
-        if (ACTION_STOP_RECORDING.equals(intent.getAction())) {
-            ThreadUtils.runOnUiThreadBlocking(
-                    () -> { TracingController.getInstance().stopRecording(); });
-        } else if (ACTION_SHARE_TRACE.equals(intent.getAction())) {
-            ThreadUtils.runOnUiThreadBlocking(
-                    () -> { TracingController.getInstance().shareTrace(); });
-        } else if (ACTION_DISCARD_TRACE.equals(intent.getAction())) {
-            ThreadUtils.runOnUiThreadBlocking(
-                    () -> { TracingController.getInstance().discardTrace(); });
-        }
+        ThreadUtils.runOnUiThreadBlocking(() -> {
+            // Clear the notification but don't do anything else if the TracingController went away.
+            if (!TracingController.isInitialized()) {
+                TracingNotificationManager.dismissNotification();
+                return;
+            }
+
+            if (ACTION_STOP_RECORDING.equals(intent.getAction())) {
+                TracingController.getInstance().stopRecording();
+            } else if (ACTION_SHARE_TRACE.equals(intent.getAction())) {
+                TracingController.getInstance().shareTrace();
+            } else if (ACTION_DISCARD_TRACE.equals(intent.getAction())) {
+                TracingController.getInstance().discardTrace();
+            }
+        });
     }
 }
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index f8b6c0c..0be14eeb 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -818,6 +818,8 @@
   "java/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsController.java",
   "java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java",
   "java/src/org/chromium/chrome/browser/invalidation/InvalidationServiceFactory.java",
+  "java/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunner.java",
+  "java/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManager.java",
   "java/src/org/chromium/chrome/browser/invalidation/UniqueIdInvalidationClientNameGenerator.java",
   "java/src/org/chromium/chrome/browser/jsdialog/JavascriptAppModalDialog.java",
   "java/src/org/chromium/chrome/browser/jsdialog/JavascriptDialogCustomView.java",
@@ -2383,6 +2385,8 @@
   "junit/src/org/chromium/chrome/browser/installedapp/InstalledAppProviderTest.java",
   "junit/src/org/chromium/chrome/browser/installedapp/PackageHashTest.java",
   "junit/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java",
+  "junit/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunnerTest.java",
+  "junit/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManagerTest.java",
   "junit/src/org/chromium/chrome/browser/media/remote/AbstractMediaRouteControllerTest.java",
   "junit/src/org/chromium/chrome/browser/media/remote/MediaUrlResolverTest.java",
   "junit/src/org/chromium/chrome/browser/media/remote/RemoteVideoInfoTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
index 8826be85..d952496 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
@@ -282,7 +282,6 @@
                 FakeServerHelper.deleteFakeServer();
             }
         });
-        SigninTestUtil.resetSigninState();
         SigninTestUtil.tearDownAuthForTest();
     }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java
index 04cd2e5..ae1f64c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java
@@ -507,7 +507,6 @@
                     TEST_INFO.contents[i].url, selector.getModel(false).getTabAt(i).getUrl());
         }
 
-        SigninTestUtil.resetSigninState();
         SigninTestUtil.tearDownAuthForTest();
     }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/test/ChromeBrowserTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/test/ChromeBrowserTestRule.java
index 9b8f6361..cb2898f 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/test/ChromeBrowserTestRule.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/test/ChromeBrowserTestRule.java
@@ -45,7 +45,6 @@
     }
 
     private void tearDown() {
-        SigninTestUtil.resetSigninState();
         SigninTestUtil.tearDownAuthForTest();
     }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserControllerInputTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserControllerInputTest.java
index aed3764..ab2d87e 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserControllerInputTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserControllerInputTest.java
@@ -22,6 +22,7 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.UrlConstants;
@@ -186,6 +187,7 @@
      */
     @Test
     @MediumTest
+    @DisabledTest(message = "crbug.com/910549")
     public void testControllerFlingScrolling() throws InterruptedException {
         mVrTestRule.loadUrl(
                 VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_controller_scrolling"),
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunnerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunnerTest.java
new file mode 100644
index 0000000..e08d126
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/ResumableDelayedTaskRunnerTest.java
@@ -0,0 +1,82 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.invalidation;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+
+import org.chromium.base.test.BaseRobolectricTestRunner;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests for the {@link ResumableDelayedTaskRunner}.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class ResumableDelayedTaskRunnerTest {
+    @Mock
+    Runnable mRunnable;
+
+    @Before
+    public void setup() {
+        initMocks(this);
+    }
+
+    @Test
+    public void testResume() {
+        ResumableDelayedTaskRunner runner = new ResumableDelayedTaskRunner();
+        runner.setRunnable(mRunnable, /*delayMs=*/2000);
+        runner.resume();
+
+        Robolectric.getForegroundThreadScheduler().advanceBy(1500, TimeUnit.MILLISECONDS);
+        verify(mRunnable, never()).run();
+
+        Robolectric.getForegroundThreadScheduler().advanceBy(500, TimeUnit.MILLISECONDS);
+        verify(mRunnable).run();
+    }
+
+    @Test
+    public void testPause() {
+        ResumableDelayedTaskRunner runner = new ResumableDelayedTaskRunner();
+        runner.setRunnable(mRunnable, /*delayMs=*/2000);
+        runner.resume();
+
+        runner.pause();
+
+        Robolectric.getForegroundThreadScheduler().advanceBy(2000, TimeUnit.MILLISECONDS);
+        verify(mRunnable, never()).run();
+
+        runner.resume();
+
+        Robolectric.getForegroundThreadScheduler().advanceBy(2000, TimeUnit.MILLISECONDS);
+        verify(mRunnable).run();
+    }
+
+    @Test
+    public void testCancel() {
+        ResumableDelayedTaskRunner runner = new ResumableDelayedTaskRunner();
+        runner.setRunnable(mRunnable, /*delayMs=*/2000);
+        runner.resume();
+
+        runner.cancel();
+
+        Robolectric.getForegroundThreadScheduler().advanceBy(2000, TimeUnit.MILLISECONDS);
+        verify(mRunnable, never()).run();
+
+        runner.resume();
+
+        Robolectric.getForegroundThreadScheduler().advanceBy(2000, TimeUnit.MILLISECONDS);
+        verify(mRunnable, never()).run();
+    }
+}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManagerTest.java
new file mode 100644
index 0000000..30bc041
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/SessionsInvalidationManagerTest.java
@@ -0,0 +1,122 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.invalidation;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import android.app.Activity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+
+import org.chromium.base.ActivityState;
+import org.chromium.base.ApplicationState;
+import org.chromium.base.ApplicationStatus;
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.chrome.browser.ntp.ForeignSessionHelper;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Tests for the {@link SessionsInvalidationManager}.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class SessionsInvalidationManagerTest {
+    @Mock
+    private ResumableDelayedTaskRunner mResumableDelayedTaskRunner;
+
+    @Mock
+    private ForeignSessionHelper mForeignSessionHelper;
+
+    private Activity mActivity;
+
+    @Before
+    public void setup() {
+        initMocks(this);
+        mActivity = Robolectric.buildActivity(Activity.class).setup().get();
+    }
+
+    /**
+     * Test that creating an SessionsInvalidationManager object registers an
+     * ApplicationStateListener.
+     */
+    @Test
+    public void testEnsureConstructorRegistersListener() throws Exception {
+        final AtomicBoolean listenerCallbackCalled = new AtomicBoolean();
+
+        // Create instance.
+        new SessionsInvalidationManager(mForeignSessionHelper, mResumableDelayedTaskRunner) {
+            @Override
+            public void onApplicationStateChange(int newState) {
+                listenerCallbackCalled.set(true);
+            }
+        };
+
+        // Ensure initial state is correct.
+        assertFalse(listenerCallbackCalled.get());
+
+        // Ensure we get a callback, which means we have registered for them.
+        ApplicationStatus.onStateChangeForTesting(mActivity, ActivityState.DESTROYED);
+        assertTrue(listenerCallbackCalled.get());
+    }
+
+    /**
+     * Test that sessions invalidations state with opening/closing recent pages.
+     */
+    @Test
+    public void testIsSessionInvalidationsEnabled() {
+        SessionsInvalidationManager manager =
+                SessionsInvalidationManager.get(mForeignSessionHelper);
+        assertFalse(manager.isSessionInvalidationsEnabled());
+
+        manager.onRecentTabsPageOpened();
+        Robolectric.getForegroundThreadScheduler().advanceBy(
+                SessionsInvalidationManager.REGISTER_FOR_SESSION_SYNC_INVALIDATIONS_DELAY_MS,
+                TimeUnit.MILLISECONDS);
+        // 1 recent tabs page.
+        assertTrue(manager.isSessionInvalidationsEnabled());
+        verify(mForeignSessionHelper).setInvalidationsForSessionsEnabled(/*enabled=*/true);
+
+        manager.onRecentTabsPageOpened();
+        // 2 recent tabs pages.
+        assertTrue(manager.isSessionInvalidationsEnabled());
+
+        manager.onRecentTabsPageClosed();
+        // 1 recent tabs page.
+        assertTrue(manager.isSessionInvalidationsEnabled());
+
+        manager.onRecentTabsPageClosed();
+        Robolectric.getForegroundThreadScheduler().advanceBy(
+                SessionsInvalidationManager.UNREGISTER_FOR_SESSION_SYNC_INVALIDATIONS_DELAY_MS,
+                TimeUnit.MILLISECONDS);
+        // 0 recent tabs page.
+        assertFalse(manager.isSessionInvalidationsEnabled());
+        verify(mForeignSessionHelper).setInvalidationsForSessionsEnabled(/*enabled=*/false);
+    }
+
+    /**
+     * Test that timer pauses when the application goes to the background.
+     */
+    @Test
+    public void testTimerPausesWhenTheApplicationPauses() {
+        SessionsInvalidationManager manager =
+                new SessionsInvalidationManager(mForeignSessionHelper, mResumableDelayedTaskRunner);
+
+        manager.onApplicationStateChange(ApplicationState.HAS_RUNNING_ACTIVITIES);
+        verify(mResumableDelayedTaskRunner).resume();
+
+        manager.onApplicationStateChange(ApplicationState.HAS_PAUSED_ACTIVITIES);
+        verify(mResumableDelayedTaskRunner).pause();
+    }
+}
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index f339f292..859824b 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-73.0.3630.0_rc-r1.afdo.bz2
\ No newline at end of file
+chromeos-chrome-amd64-73.0.3631.0_rc-r1.afdo.bz2
\ No newline at end of file
diff --git a/chrome/app/app-Info.plist b/chrome/app/app-Info.plist
index ed7d2ec6..9afdf48 100644
--- a/chrome/app/app-Info.plist
+++ b/chrome/app/app-Info.plist
@@ -353,9 +353,9 @@
 			</dict>
 		</dict>
 	</array>
-        <key>NSUserNotificationAlertStyle</key>
-        <string>banner</string>
-        <key>NSRequiresAquaSystemAppearance</key>
-        <true/>
+	<key>NSUserNotificationAlertStyle</key>
+	<string>banner</string>
+	<key>NSRequiresAquaSystemAppearance</key>
+	<false/>
 </dict>
 </plist>
diff --git a/chrome/app/onboarding_welcome_strings.grdp b/chrome/app/onboarding_welcome_strings.grdp
index 47f9939..43806e2 100644
--- a/chrome/app/onboarding_welcome_strings.grdp
+++ b/chrome/app/onboarding_welcome_strings.grdp
@@ -35,6 +35,36 @@
   <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_DESCRIPTION" desc="Description of what this section in the onboarding workflow does.">
     Add bookmarks to your favorite Google Apps
   </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_MAPS" desc="Label for a button that creates a bookmark to maps.google.com, this should be the name of the brand.">
+    Maps
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_MAPS_LINK" desc="URL for the Google Maps website, this should be the replaced with a locale specific URL if it exists.">
+    https://maps.google.com
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_NEWS" desc="Label for a button that creates a bookmark to news.google.com, this should be the name of the brand.">
+    News
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_NEWS_LINK" desc="URL for the Google News website, this should be the replaced with a locale specific URL if it exists.">
+    https://news.google.com
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_TRANSLATE" desc="Label for a button that creates a bookmark to translate.google.com, this should be the name of the brand.">
+    Translate
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_TRANSLATE_LINK" desc="URL for the Google Translate website, this should be the replaced with a locale specific URL if it exists.">
+    https://translate.google.com
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_WEB_STORE" desc="Label for a button that creates a bookmark to chrome.google.com/webstore, this should be the name of the brand.">
+    Web Store
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_WEB_STORE_LINK" desc="URL for the Chrome Webstore website, this should be the replaced with a locale specific URL if it exists.">
+    https://chrome.google.com/webstore
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_YOUTUBE" desc="Label for a button that creates a bookmark to youtube.com, this should be the name of the brand.">
+    YouTube
+  </message>
+  <message name="IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_YOUTUBE_LINK" desc="URL for the YouTube website, this should be the replaced with a locale specific URL if it exists.">
+    https://youtube.com
+  </message>
 
   <!-- NUX set default module -->
   <message name="IDS_ONBOARDING_WELCOME_NUX_SET_AS_DEFAULT_HEADER" desc="Header for the page that prompts user to set Chrome as their default browser.">
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 0e31292..fa48532 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2744,10 +2744,6 @@
     {"enable-content-fullscreen", flag_descriptions::kContentFullscreenName,
      flag_descriptions::kContentFullscreenDescription, kOsMac,
      FEATURE_VALUE_TYPE(features::kContentFullscreen)},
-    {"enable-fullscreen-toolbar-reveal",
-     flag_descriptions::kFullscreenToolbarRevealName,
-     flag_descriptions::kFullscreenToolbarRevealDescription, kOsMac,
-     FEATURE_VALUE_TYPE(features::kFullscreenToolbarReveal)},
 #endif  // OS_MACOSX
     {"rewrite-leveldb-on-deletion",
      flag_descriptions::kRewriteLevelDBOnDeletionName,
@@ -3163,12 +3159,6 @@
      flag_descriptions::kServiceWorkerLongRunningMessageDescription, kOsAll,
      FEATURE_VALUE_TYPE(features::kServiceWorkerLongRunningMessage)},
 
-#if defined(OS_MACOSX)
-    {"tab-strip-keyboard-focus", flag_descriptions::kTabStripKeyboardFocusName,
-     flag_descriptions::kTabStripKeyboardFocusDescription, kOsMac,
-     FEATURE_VALUE_TYPE(features::kTabStripKeyboardFocus)},
-#endif
-
 #if defined(OS_CHROMEOS)
     {"ChromeVoxArcSupport", flag_descriptions::kChromeVoxArcSupportName,
      flag_descriptions::kChromeVoxArcSupportDescription, kOsCrOS,
diff --git a/chrome/browser/apps/platform_apps/audio_focus_web_contents_observer.cc b/chrome/browser/apps/platform_apps/audio_focus_web_contents_observer.cc
index 9122dbd..7fbda74 100644
--- a/chrome/browser/apps/platform_apps/audio_focus_web_contents_observer.cc
+++ b/chrome/browser/apps/platform_apps/audio_focus_web_contents_observer.cc
@@ -44,7 +44,9 @@
   extensions::ProcessManager* pm = extensions::ProcessManager::Get(context);
   extensions::ExtensionHost* host =
       pm->GetBackgroundHostForExtension(extension->id());
-  DCHECK(host);
+
+  if (!host || !host->host_contents())
+    return;
 
   // If we are the background contents then we will generate a group id.
   // Otherwise, we will use the group id from the background contents. This
diff --git a/chrome/browser/chrome_browser_application_mac.mm b/chrome/browser/chrome_browser_application_mac.mm
index 9167312e..2c065b3 100644
--- a/chrome/browser/chrome_browser_application_mac.mm
+++ b/chrome/browser/chrome_browser_application_mac.mm
@@ -21,7 +21,6 @@
 #include "content/public/browser/browser_accessibility_state.h"
 #include "content/public/browser/native_event_processor_mac.h"
 #include "content/public/browser/native_event_processor_observer_mac.h"
-#include "ui/base/ui_base_switches.h"
 
 namespace chrome_browser_application_mac {
 
@@ -118,18 +117,6 @@
   cocoa_l10n_util::ApplyForcedRTL();
 }
 
-- (id)init {
-  self = [super init];
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kForceDarkMode)) {
-    if (@available(macOS 10.14, *)) {
-      self.appearance = [NSAppearance appearanceNamed:NSAppearanceNameDarkAqua];
-    }
-  }
-
-  return self;
-}
-
 // Initialize NSApplication using the custom subclass.  Check whether NSApp
 // was already initialized using another class, because that would break
 // some things.
diff --git a/chrome/browser/chrome_browser_main_mac.h b/chrome/browser/chrome_browser_main_mac.h
index 584c61a..38767fe 100644
--- a/chrome/browser/chrome_browser_main_mac.h
+++ b/chrome/browser/chrome_browser_main_mac.h
@@ -17,6 +17,7 @@
 
   // BrowserParts overrides.
   int PreEarlyInitialization() override;
+  void PostEarlyInitialization() override;
   void PreMainMessageLoopStart() override;
   void PostMainMessageLoopStart() override;
   void PreProfileInit() override;
diff --git a/chrome/browser/chrome_browser_main_mac.mm b/chrome/browser/chrome_browser_main_mac.mm
index 4fda3a7b..f4b85852 100644
--- a/chrome/browser/chrome_browser_main_mac.mm
+++ b/chrome/browser/chrome_browser_main_mac.mm
@@ -38,6 +38,7 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/resource/resource_handle.h"
+#include "ui/native_theme/native_theme_mac.h"
 
 namespace {
 
@@ -90,6 +91,11 @@
   return ChromeBrowserMainPartsPosix::PreEarlyInitialization();
 }
 
+void ChromeBrowserMainPartsMac::PostEarlyInitialization() {
+  ui::NativeThemeMac::MaybeUpdateBrowserAppearance();
+  ChromeBrowserMainPartsPosix::PostEarlyInitialization();
+}
+
 void ChromeBrowserMainPartsMac::PreMainMessageLoopStart() {
   MacStartupProfiler::GetInstance()->Profile(
       MacStartupProfiler::PRE_MAIN_MESSAGE_LOOP_START);
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index c67e55b..cbf7170 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2312,6 +2312,15 @@
         *modified_request_headers = std::move(*extra_headers);
     }
   }
+
+  std::unique_ptr<net::HttpRequestHeaders> client_hints_extra_headers =
+      client_hints::GetAdditionalNavigationRequestClientHintsHeaders(
+          browser_context, url);
+  if (client_hints_extra_headers) {
+    if (!modified_request_headers->has_value())
+      *modified_request_headers = net::HttpRequestHeaders();
+    modified_request_headers->value().MergeFrom(*client_hints_extra_headers);
+  }
 }
 
 bool ChromeContentBrowserClient::AllowAppCache(
diff --git a/chrome/browser/chromeos/app_mode/app_session.cc b/chrome/browser/chromeos/app_mode/app_session.cc
index 037e7ff..997a8fa 100644
--- a/chrome/browser/chromeos/app_mode/app_session.cc
+++ b/chrome/browser/chromeos/app_mode/app_session.cc
@@ -83,11 +83,10 @@
       if (kill(data.GetProcess().Handle(), SIGFPE) == 0) {
         dump_requested = true;
       } else {
-        LOG(WARNING) << "Failed to send SIGFPE to plugin process"
-                     << ", errno=" << errno
-                     << ", pid=" << data.GetProcess().Pid()
-                     << ", type=" << data.process_type
-                     << ", name=" << data.name;
+        PLOG(WARNING) << "Failed to send SIGFPE to plugin process"
+                      << ", pid=" << data.GetProcess().Pid()
+                      << ", type=" << data.process_type
+                      << ", name=" << data.name;
       }
     }
     ++iter;
diff --git a/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos.cc b/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos.cc
index 0aeba203..98a0419 100644
--- a/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos.cc
+++ b/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos.cc
@@ -36,7 +36,7 @@
   api_permission_set.insert(APIPermission::kClipboardRead);
   *granted_permissions = PermissionSet::CreateDifference(
       **granted_permissions,
-      PermissionSet(api_permission_set, ManifestPermissionSet(),
+      PermissionSet(std::move(api_permission_set), ManifestPermissionSet(),
                     URLPatternSet(), URLPatternSet()));
 }
 
diff --git a/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc b/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc
index 2981d78..fab13a4 100644
--- a/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc
+++ b/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc
@@ -53,7 +53,7 @@
   URLPatternSet scriptable_hosts({
     URLPattern(URLPattern::SCHEME_ALL, "http://www.wikipedia.com/*")});
   auto permissions = std::make_unique<const PermissionSet>(
-      apis, manifest, explicit_hosts, scriptable_hosts);
+      std::move(apis), std::move(manifest), explicit_hosts, scriptable_hosts);
   return permissions;
 }
 
diff --git a/chrome/browser/chromeos/extensions/public_session_permission_helper.cc b/chrome/browser/chromeos/extensions/public_session_permission_helper.cc
index 3a442c4..0aa87157 100644
--- a/chrome/browser/chromeos/extensions/public_session_permission_helper.cc
+++ b/chrome/browser/chromeos/extensions/public_session_permission_helper.cc
@@ -139,7 +139,8 @@
     new_apis.insert(permission.id());
   }
   auto permission_set = std::make_unique<PermissionSet>(
-      new_apis, ManifestPermissionSet(), URLPatternSet(), URLPatternSet());
+      std::move(new_apis), ManifestPermissionSet(), URLPatternSet(),
+      URLPatternSet());
   auto prompt = prompt_factory.Run(web_contents);
 
   auto permissions_prompt = std::make_unique<ExtensionInstallPrompt::Prompt>(
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc
index ceb63817..212581d 100644
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc
@@ -8,15 +8,16 @@
 #include "base/run_loop.h"
 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h"
 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/oobe_screen.h"
 #include "chrome/browser/chromeos/login/screens/mock_base_screen_delegate.h"
 #include "chrome/browser/chromeos/login/startup_utils.h"
 #include "chrome/browser/chromeos/login/test/js_checker.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
-#include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/test/base/in_process_browser_test.h"
 #include "chromeos/chromeos_switches.h"
 #include "chromeos/chromeos_test_utils.h"
 #include "content/public/test/test_utils.h"
@@ -29,10 +30,20 @@
 
 namespace chromeos {
 
-class EnrollmentScreenTest : public WizardInProcessBrowserTest {
+class EnrollmentScreenTest : public InProcessBrowserTest {
  public:
-  EnrollmentScreenTest()
-      : WizardInProcessBrowserTest(OobeScreen::SCREEN_OOBE_ENROLLMENT) {}
+  EnrollmentScreenTest() = default;
+  ~EnrollmentScreenTest() override = default;
+
+  // InProcessBrowserTest:
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    InProcessBrowserTest::SetUpCommandLine(command_line);
+    command_line->AppendArg(switches::kLoginManager);
+  }
+  void SetUpOnMainThread() override {
+    InProcessBrowserTest::SetUpOnMainThread();
+    ShowLoginWizard(OobeScreen::SCREEN_OOBE_ENROLLMENT);
+  }
 
  private:
   DISALLOW_COPY_AND_ASSIGN(EnrollmentScreenTest);
diff --git a/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc b/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc
index 4005a5b..d590894 100644
--- a/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc
+++ b/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc
@@ -6,12 +6,13 @@
 #include "base/run_loop.h"
 #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_mock.h"
 #include "chrome/browser/chromeos/login/existing_user_controller.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/oobe_screen.h"
 #include "chrome/browser/chromeos/login/startup_utils.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
-#include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
+#include "chrome/test/base/in_process_browser_test.h"
 #include "chromeos/chromeos_switches.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/shill_service_client.h"
@@ -31,21 +32,23 @@
 }  // namespace
 
 // Hands-off enrollment flow test.
-class HandsOffEnrollmentTest : public WizardInProcessBrowserTest {
+class HandsOffEnrollmentTest : public InProcessBrowserTest {
  protected:
-  HandsOffEnrollmentTest()
-      : WizardInProcessBrowserTest(OobeScreen::SCREEN_TEST_NO_WINDOW) {}
+  HandsOffEnrollmentTest() {}
   ~HandsOffEnrollmentTest() override = default;
 
-  // WizardInProcessBrowserTest:
+  // InProcessBrowserTest:
   void SetUpCommandLine(base::CommandLine* command_line) override {
-    WizardInProcessBrowserTest::SetUpCommandLine(command_line);
+    InProcessBrowserTest::SetUpCommandLine(command_line);
+    command_line->AppendArg(switches::kLoginManager);
     command_line->AppendSwitchASCII(
         switches::kEnterpriseEnableZeroTouchEnrollment, "hands-off");
   }
 
   void SetUpOnMainThread() override {
-    WizardInProcessBrowserTest::SetUpOnMainThread();
+    InProcessBrowserTest::SetUpOnMainThread();
+    ShowLoginWizard(OobeScreen::SCREEN_TEST_NO_WINDOW);
+
     // Set official build so EULA screen is not skipped by default.
     WizardController::default_controller()->is_official_build_ = true;
 
diff --git a/chrome/browser/chromeos/login/screen_manager.h b/chrome/browser/chromeos/login/screen_manager.h
index 159b0019..eb902c1 100644
--- a/chrome/browser/chromeos/login/screen_manager.h
+++ b/chrome/browser/chromeos/login/screen_manager.h
@@ -31,7 +31,6 @@
   FRIEND_TEST_ALL_PREFIXES(WizardControllerFlowTest, Accelerators);
   friend class WizardControllerFlowTest;
   friend class WizardControllerOobeResumeTest;
-  friend class WizardInProcessBrowserTest;
   friend class WizardControllerBrokenLocalStateTest;
   friend class WizardControllerOobeConfigurationTest;
 
diff --git a/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc
index 44a0905..213430aa4 100644
--- a/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc
@@ -4,11 +4,13 @@
 
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/screens/base_screen.h"
 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
-#include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "chromeos/chromeos_switches.h"
 #include "services/device/public/cpp/hid/fake_input_service_linux.h"
 #include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/input_service.mojom.h"
@@ -16,10 +18,9 @@
 
 namespace chromeos {
 
-class HIDDetectionScreenTest : public WizardInProcessBrowserTest {
+class HIDDetectionScreenTest : public InProcessBrowserTest {
  public:
-  HIDDetectionScreenTest()
-      : WizardInProcessBrowserTest(OobeScreen::SCREEN_OOBE_HID_DETECTION) {
+  HIDDetectionScreenTest() {
     fake_input_service_manager_ =
         std::make_unique<device::FakeInputServiceLinux>();
 
@@ -34,9 +35,14 @@
         device::mojom::InputDeviceManager>(device::mojom::kServiceName);
   }
 
- protected:
+  // InProcessBrowserTest:
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    InProcessBrowserTest::SetUpCommandLine(command_line);
+    command_line->AppendArg(switches::kLoginManager);
+  }
+
   void SetUpOnMainThread() override {
-    WizardInProcessBrowserTest::SetUpOnMainThread();
+    ShowLoginWizard(OobeScreen::SCREEN_OOBE_HID_DETECTION);
     ASSERT_TRUE(WizardController::default_controller());
 
     hid_detection_screen_ = static_cast<HIDDetectionScreen*>(
@@ -50,10 +56,6 @@
     hid_detection_screen()->SetAdapterInitialPoweredForTesting(false);
   }
 
-  void TearDownOnMainThread() override {
-    WizardInProcessBrowserTest::TearDownOnMainThread();
-  }
-
   HIDDetectionScreen* hid_detection_screen() { return hid_detection_screen_; }
 
   scoped_refptr<device::BluetoothAdapter> adapter() {
diff --git a/chrome/browser/chromeos/login/screens/network_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/network_screen_browsertest.cc
index a793201..7ad3dfe 100644
--- a/chrome/browser/chromeos/login/screens/network_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/network_screen_browsertest.cc
@@ -11,13 +11,14 @@
 #include "base/run_loop.h"
 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h"
 #include "chrome/browser/chromeos/login/helper.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/mock_network_state_helper.h"
 #include "chrome/browser/chromeos/login/screens/base_screen.h"
 #include "chrome/browser/chromeos/login/screens/mock_base_screen_delegate.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
-#include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/test/base/in_process_browser_test.h"
 #include "chromeos/chromeos_switches.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/fake_session_manager_client.h"
@@ -42,27 +43,29 @@
   void ButtonPressed(views::Button* sender, const ui::Event& event) override {}
 };
 
-class NetworkScreenTest : public WizardInProcessBrowserTest {
+class NetworkScreenTest : public InProcessBrowserTest {
  public:
-  NetworkScreenTest()
-      : WizardInProcessBrowserTest(OobeScreen::SCREEN_OOBE_NETWORK) {}
+  NetworkScreenTest() = default;
   ~NetworkScreenTest() override = default;
 
- protected:
-  void SetUpInProcessBrowserTestFixture() override {
-    WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
+  // InProcessBrowserTest:
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    InProcessBrowserTest::SetUpCommandLine(command_line);
+    command_line->AppendArg(switches::kLoginManager);
+  }
 
+  void SetUpInProcessBrowserTestFixture() override {
+    InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
     DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient(
         std::make_unique<FakeSessionManagerClient>());
   }
 
   void SetUpOnMainThread() override {
-    WizardInProcessBrowserTest::SetUpOnMainThread();
+    InProcessBrowserTest::SetUpOnMainThread();
+    ShowLoginWizard(OobeScreen::SCREEN_OOBE_NETWORK);
     mock_base_screen_delegate_ = std::make_unique<MockBaseScreenDelegate>();
-    ASSERT_TRUE(WizardController::default_controller() != nullptr);
     network_screen_ = NetworkScreen::Get(
         WizardController::default_controller()->screen_manager());
-    ASSERT_TRUE(network_screen_ != nullptr);
     ASSERT_EQ(WizardController::default_controller()->current_screen(),
               network_screen_);
     network_screen_->base_screen_delegate_ = mock_base_screen_delegate_.get();
@@ -77,63 +80,65 @@
     EXPECT_CALL(*mock_base_screen_delegate_,
                 OnExit(ScreenExitCode::NETWORK_CONNECTED))
         .Times(1);
-    EXPECT_CALL(*mock_network_state_helper_, IsConnected())
-        .WillOnce(Return(true));
+    EXPECT_CALL(*network_state_helper(), IsConnected()).WillOnce(Return(true));
     network_screen->OnContinueButtonClicked();
     base::RunLoop().RunUntilIdle();
   }
 
   void SetDefaultNetworkStateHelperExpectations() {
-    EXPECT_CALL(*mock_network_state_helper_, GetCurrentNetworkName())
+    EXPECT_CALL(*network_state_helper(), GetCurrentNetworkName())
         .Times(AnyNumber())
         .WillRepeatedly((Return(base::string16())));
-    EXPECT_CALL(*mock_network_state_helper_, IsConnected())
+    EXPECT_CALL(*network_state_helper(), IsConnected())
         .Times(AnyNumber())
         .WillRepeatedly((Return(false)));
-    EXPECT_CALL(*mock_network_state_helper_, IsConnecting())
+    EXPECT_CALL(*network_state_helper(), IsConnecting())
         .Times(AnyNumber())
         .WillRepeatedly((Return(false)));
   }
 
+  login::MockNetworkStateHelper* network_state_helper() {
+    return mock_network_state_helper_;
+  }
+  NetworkScreen* network_screen() { return network_screen_; }
+
+ private:
   std::unique_ptr<MockBaseScreenDelegate> mock_base_screen_delegate_;
   login::MockNetworkStateHelper* mock_network_state_helper_;
   NetworkScreen* network_screen_;
 
- private:
   DISALLOW_COPY_AND_ASSIGN(NetworkScreenTest);
 };
 
 IN_PROC_BROWSER_TEST_F(NetworkScreenTest, CanConnect) {
-  EXPECT_CALL(*mock_network_state_helper_, IsConnecting())
-      .WillOnce((Return(true)));
+  EXPECT_CALL(*network_state_helper(), IsConnecting()).WillOnce((Return(true)));
   // EXPECT_FALSE(view_->IsContinueEnabled());
-  network_screen_->UpdateStatus();
+  network_screen()->UpdateStatus();
 
-  EXPECT_CALL(*mock_network_state_helper_, IsConnected())
+  EXPECT_CALL(*network_state_helper(), IsConnected())
       .Times(2)
       .WillRepeatedly(Return(true));
   // TODO(nkostylev): Add integration with WebUI view http://crosbug.com/22570
   // EXPECT_FALSE(view_->IsContinueEnabled());
   // EXPECT_FALSE(view_->IsConnecting());
-  network_screen_->UpdateStatus();
+  network_screen()->UpdateStatus();
 
   // EXPECT_TRUE(view_->IsContinueEnabled());
-  EmulateContinueButtonExit(network_screen_);
+  EmulateContinueButtonExit(network_screen());
 }
 
 IN_PROC_BROWSER_TEST_F(NetworkScreenTest, Timeout) {
-  EXPECT_CALL(*mock_network_state_helper_, IsConnecting())
-      .WillOnce((Return(true)));
+  EXPECT_CALL(*network_state_helper(), IsConnecting()).WillOnce((Return(true)));
   // EXPECT_FALSE(view_->IsContinueEnabled());
-  network_screen_->UpdateStatus();
+  network_screen()->UpdateStatus();
 
-  EXPECT_CALL(*mock_network_state_helper_, IsConnected())
+  EXPECT_CALL(*network_state_helper(), IsConnected())
       .Times(2)
       .WillRepeatedly(Return(false));
   // TODO(nkostylev): Add integration with WebUI view http://crosbug.com/22570
   // EXPECT_FALSE(view_->IsContinueEnabled());
   // EXPECT_FALSE(view_->IsConnecting());
-  network_screen_->OnConnectionTimeout();
+  network_screen()->OnConnectionTimeout();
 
   // Close infobubble with error message - it makes the test stable.
   // EXPECT_FALSE(view_->IsContinueEnabled());
diff --git a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
index 97f83f7..bf594f7 100644
--- a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
@@ -10,14 +10,16 @@
 #include "base/macros.h"
 #include "base/run_loop.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/screens/mock_base_screen_delegate.h"
 #include "chrome/browser/chromeos/login/screens/mock_error_screen.h"
 #include "chrome/browser/chromeos/login/screens/network_error.h"
 #include "chrome/browser/chromeos/login/startup_utils.h"
-#include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
+#include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
 #include "chrome/common/pref_names.h"
+#include "chrome/test/base/in_process_browser_test.h"
 #include "chromeos/chromeos_switches.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/fake_update_engine_client.h"
@@ -42,20 +44,18 @@
 
 }  // namespace
 
-class UpdateScreenTest : public WizardInProcessBrowserTest {
+class UpdateScreenTest : public InProcessBrowserTest {
  public:
-  UpdateScreenTest()
-      : WizardInProcessBrowserTest(OobeScreen::SCREEN_OOBE_UPDATE),
-        fake_update_engine_client_(nullptr),
-        network_portal_detector_(nullptr) {}
+  UpdateScreenTest() = default;
+  ~UpdateScreenTest() override = default;
 
- protected:
+  // InProcessBrowserTest:
   void SetUpInProcessBrowserTestFixture() override {
-    fake_update_engine_client_ = new FakeUpdateEngineClient;
+    fake_update_engine_client_ = new FakeUpdateEngineClient();
     chromeos::DBusThreadManager::GetSetterForTesting()->SetUpdateEngineClient(
         std::unique_ptr<UpdateEngineClient>(fake_update_engine_client_));
 
-    WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
+    InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
 
     // Setup network portal detector to return online state for both
     // ethernet and wifi networks. Ethernet is an active network by
@@ -81,7 +81,7 @@
         .Times(AnyNumber())
         .WillRepeatedly(Return(mock_error_screen_.get()));
 
-    WizardInProcessBrowserTest::SetUpOnMainThread();
+    ShowLoginWizard(OobeScreen::SCREEN_OOBE_UPDATE);
 
     ASSERT_TRUE(WizardController::default_controller() != nullptr);
     update_screen_ = UpdateScreen::Get(
@@ -93,16 +93,22 @@
   }
 
   void TearDownOnMainThread() override {
-    WizardInProcessBrowserTest::TearDownOnMainThread();
+    InProcessBrowserTest::TearDownOnMainThread();
+
+    base::RunLoop run_loop;
+    LoginDisplayHost::default_host()->Finalize(run_loop.QuitClosure());
+    run_loop.Run();
+
     mock_error_screen_.reset();
     mock_network_error_view_.reset();
   }
 
   void TearDownInProcessBrowserTestFixture() override {
     network_portal_detector::Shutdown();
-    WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
+    InProcessBrowserTest::TearDownInProcessBrowserTestFixture();
   }
 
+ protected:
   void SetDefaultNetwork(const std::string& guid) {
     DCHECK(network_portal_detector_);
     network_portal_detector_->SetDefaultNetworkForTesting(guid);
@@ -120,12 +126,13 @@
     network_portal_detector_->NotifyObserversForTesting();
   }
 
-  FakeUpdateEngineClient* fake_update_engine_client_;
   std::unique_ptr<MockBaseScreenDelegate> mock_base_screen_delegate_;
   std::unique_ptr<MockNetworkErrorView> mock_network_error_view_;
   std::unique_ptr<MockErrorScreen> mock_error_screen_;
-  UpdateScreen* update_screen_;
-  NetworkPortalDetectorTestImpl* network_portal_detector_;
+  FakeUpdateEngineClient* fake_update_engine_client_ = nullptr;  // Unowned.
+  UpdateScreen* update_screen_ = nullptr;                        // Unowned.
+  NetworkPortalDetectorTestImpl* network_portal_detector_ =
+      nullptr;  // Unowned.
 
  private:
   DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest);
diff --git a/chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h b/chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h
deleted file mode 100644
index 8ffcd3fb..0000000
--- a/chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h
+++ /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.
-
-#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_WIZARD_IN_PROCESS_BROWSER_TEST_H_
-#define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_WIZARD_IN_PROCESS_BROWSER_TEST_H_
-
-#include <string>
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "chrome/browser/chromeos/login/oobe_screen.h"
-#include "chrome/test/base/in_process_browser_test.h"
-
-namespace chromeos {
-
-class LoginDisplayHost;
-
-// Base class for test related to login wizard and its screens.
-// Instead of creating Chrome browser window it creates login wizard window
-// with specified parameters and allows to customize environment at the
-// right moment in time before wizard is created.
-class WizardInProcessBrowserTest : public InProcessBrowserTest {
- public:
-  explicit WizardInProcessBrowserTest(OobeScreen screen);
-
-  // Overridden from InProcessBrowserTest:
-  void SetUp() override;
-
- protected:
-  // Can be overriden by derived test fixtures to set up environment after
-  // browser is created but wizard is not shown yet.
-  virtual void SetUpWizard() {}
-
-  // Overriden from InProcessBrowserTest:
-  void SetUpOnMainThread() override;
-  void SetUpCommandLine(base::CommandLine* command_line) override;
-  void TearDownOnMainThread() override;
-
- private:
-  OobeScreen screen_;
-  LoginDisplayHost* host_ = nullptr;
-
-  DISALLOW_COPY_AND_ASSIGN(WizardInProcessBrowserTest);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_TEST_WIZARD_IN_PROCESS_BROWSER_TEST_H_
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h
index 654f30b..589e922 100644
--- a/chrome/browser/chromeos/login/wizard_controller.h
+++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -469,7 +469,6 @@
   friend class WizardControllerFlowTest;
   friend class WizardControllerOobeConfigurationTest;
   friend class WizardControllerOobeResumeTest;
-  friend class WizardInProcessBrowserTest;
 
   std::unique_ptr<AccessibilityStatusSubscription> accessibility_subscription_;
 
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
index f34b199..03d54b8 100644
--- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -25,6 +25,7 @@
 #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_screen.h"
 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h"
 #include "chrome/browser/chromeos/login/existing_user_controller.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/oobe_screen.h"
 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h"
 #include "chrome/browser/chromeos/login/screens/error_screen.h"
@@ -45,7 +46,6 @@
 #include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h"
 #include "chrome/browser/chromeos/login/startup_utils.h"
 #include "chrome/browser/chromeos/login/test/oobe_configuration_waiter.h"
-#include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
@@ -62,6 +62,7 @@
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
+#include "chrome/test/base/in_process_browser_test.h"
 #include "chromeos/audio/cras_audio_handler.h"
 #include "chromeos/chromeos_switches.h"
 #include "chromeos/chromeos_test_utils.h"
@@ -346,16 +347,19 @@
   EXPECT_CALL(*mock_var, Show()).Times(0);                                  \
   EXPECT_CALL(*mock_var, Hide()).Times(0);
 
-class WizardControllerTest : public WizardInProcessBrowserTest {
+class WizardControllerTest : public InProcessBrowserTest {
  protected:
-  WizardControllerTest()
-      : WizardInProcessBrowserTest(OobeScreen::SCREEN_TEST_NO_WINDOW) {}
-  ~WizardControllerTest() override {}
+  WizardControllerTest() = default;
+  ~WizardControllerTest() override = default;
 
   void SetUpOnMainThread() override {
     AccessibilityManager::Get()->SetProfileForTest(
         ProfileHelper::GetSigninProfile());
-    WizardInProcessBrowserTest::SetUpOnMainThread();
+    ShowLoginWizard(OobeScreen::SCREEN_TEST_NO_WINDOW);
+  }
+
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    command_line->AppendSwitch(switches::kLoginManager);
   }
 
   ErrorScreen* GetErrorScreen() {
diff --git a/chrome/browser/client_hints/client_hints_browsertest.cc b/chrome/browser/client_hints/client_hints_browsertest.cc
index 9d7e6c4..d8164504 100644
--- a/chrome/browser/client_hints/client_hints_browsertest.cc
+++ b/chrome/browser/client_hints/client_hints_browsertest.cc
@@ -155,6 +155,9 @@
     https_cross_origin_server_.RegisterRequestMonitor(
         base::BindRepeating(&ClientHintsBrowserTest::MonitorResourceRequest,
                             base::Unretained(this)));
+    https_cross_origin_server_.RegisterRequestHandler(
+        base::BindRepeating(&ClientHintsBrowserTest::RequestHandlerToRedirect,
+                            base::Unretained(this)));
     https_server_.RegisterRequestHandler(base::BindRepeating(
         &ClientHintsBrowserTest::RequestHandlerToFetchCrossOriginIframe,
         base::Unretained(this)));
@@ -225,6 +228,8 @@
         "/http_equiv_accept_ch_without_lifetime_img_localhost.html");
     http_equiv_accept_ch_with_lifetime_ =
         https_server_.GetURL("/http_equiv_accept_ch_with_lifetime.html");
+
+    redirect_url_ = https_cross_origin_server_.GetURL("/redirect.html");
   }
 
   ~ClientHintsBrowserTest() override {}
@@ -360,6 +365,8 @@
     return http_equiv_accept_ch_without_lifetime_img_localhost_;
   }
 
+  const GURL& redirect_url() const { return redirect_url_; }
+
   size_t count_client_hints_headers_seen() const {
     return count_client_hints_headers_seen_;
   }
@@ -379,6 +386,27 @@
 
  private:
   // Intercepts only the main frame requests that contain
+  // "redirect" in the resource path. The intercepted requests
+  // are served an HTML file that fetches an iframe from a cross-origin HTTPS
+  // server.
+  std::unique_ptr<net::test_server::HttpResponse> RequestHandlerToRedirect(
+      const net::test_server::HttpRequest& request) {
+    // Check if it's a main frame request.
+    if (request.relative_url.find(".html") == std::string::npos)
+      return nullptr;
+
+    if (request.GetURL().spec().find("redirect") == std::string::npos)
+      return nullptr;
+
+    std::unique_ptr<net::test_server::BasicHttpResponse> response;
+    response.reset(new net::test_server::BasicHttpResponse);
+    response->set_code(net::HTTP_FOUND);
+    response->AddCustomHeader("Location",
+                              without_accept_ch_without_lifetime_url().spec());
+    return std::move(response);
+  }
+
+  // Intercepts only the main frame requests that contain
   // |intercept_iframe_resource_| in the resource path. The intercepted requests
   // are served an HTML file that fetches an iframe from a cross-origin HTTPS
   // server.
@@ -424,6 +452,11 @@
     bool is_main_frame_navigation =
         request.GetURL().spec().find(".html") != std::string::npos;
 
+    if (is_main_frame_navigation &&
+        request.GetURL().spec().find("redirect") != std::string::npos) {
+      return;
+    }
+
     if (is_main_frame_navigation) {
       VerifyClientHintsReceived(expect_client_hints_on_main_frame_, request);
       if (expect_client_hints_on_main_frame_) {
@@ -602,6 +635,7 @@
   GURL accept_ch_without_lifetime_img_localhost_;
   GURL http_equiv_accept_ch_without_lifetime_img_localhost_;
   GURL http_equiv_accept_ch_with_lifetime_;
+  GURL redirect_url_;
 
   double main_frame_dpr_observed_ = -1;
   double main_frame_viewport_width_observed_ = -1;
@@ -1046,6 +1080,55 @@
   EXPECT_EQ(12u, count_client_hints_headers_seen());
 }
 
+// The test first fetches a page that sets Accept-CH-Lifetime. Next, it fetches
+// a URL from a different origin. However, that URL response redirects to the
+// same origin from where the first page was fetched. The test verifies that
+// on receiving redirect to an origin for which the browser has persisted client
+// hints prefs, the browser attaches the client hints headers when fetching the
+// redirected URL.
+IN_PROC_BROWSER_TEST_P(ClientHintsBrowserTest,
+                       ClientHintsLifetimeFollowedByRedirectToNoClientHint) {
+  const GURL gurl = GetParam() ? http_equiv_accept_ch_with_lifetime()
+                               : accept_ch_with_lifetime_url();
+
+  base::HistogramTester histogram_tester;
+  ContentSettingsForOneType host_settings;
+
+  HostContentSettingsMapFactory::GetForProfile(browser()->profile())
+      ->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_CLIENT_HINTS, std::string(),
+                              &host_settings);
+  EXPECT_EQ(0u, host_settings.size());
+
+  // Fetching |gurl| should persist the request for client hints.
+  ui_test_utils::NavigateToURL(browser(), gurl);
+
+  histogram_tester.ExpectUniqueSample("ClientHints.UpdateEventCount", 1, 1);
+
+  content::FetchHistogramsFromChildProcesses();
+  SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
+
+  histogram_tester.ExpectUniqueSample("ClientHints.UpdateSize", 6, 1);
+  // accept_ch_with_lifetime_url() sets client hints persist duration to 3600
+  // seconds.
+  histogram_tester.ExpectUniqueSample("ClientHints.PersistDuration",
+                                      3600 * 1000, 1);
+  base::RunLoop().RunUntilIdle();
+
+  // Clients hints preferences for one origin should be persisted.
+  HostContentSettingsMapFactory::GetForProfile(browser()->profile())
+      ->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_CLIENT_HINTS, std::string(),
+                              &host_settings);
+  EXPECT_EQ(1u, host_settings.size());
+
+  SetClientHintExpectationsOnMainFrame(true);
+  SetClientHintExpectationsOnSubresources(true);
+  ui_test_utils::NavigateToURL(browser(), redirect_url());
+
+  // Six client hints are attached to the image request, and six to the main
+  // frame request.
+  EXPECT_EQ(12u, count_client_hints_headers_seen());
+}
+
 // Ensure that even when cookies are blocked, client hint preferences are
 // persisted.
 IN_PROC_BROWSER_TEST_P(ClientHintsBrowserTest,
diff --git a/chrome/browser/extensions/active_tab_permission_granter.cc b/chrome/browser/extensions/active_tab_permission_granter.cc
index 8e11475..78c950f 100644
--- a/chrome/browser/extensions/active_tab_permission_granter.cc
+++ b/chrome/browser/extensions/active_tab_permission_granter.cc
@@ -152,8 +152,8 @@
 
   if (!new_apis.empty() || !new_hosts.is_empty()) {
     granted_extensions_.Insert(extension);
-    PermissionSet new_permissions(new_apis, ManifestPermissionSet(), new_hosts,
-                                  new_hosts);
+    PermissionSet new_permissions(std::move(new_apis), ManifestPermissionSet(),
+                                  new_hosts, new_hosts);
     permissions_data->UpdateTabSpecificPermissions(tab_id_, new_permissions);
     const content::NavigationEntry* navigation_entry =
         web_contents()->GetController().GetVisibleEntry();
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
index 65a51a9..9633920 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
@@ -1689,8 +1689,8 @@
 
   APIPermissionSet apis;
   apis.insert(APIPermission::kTab);
-  PermissionSet permissions(apis, ManifestPermissionSet(), URLPatternSet(),
-                            URLPatternSet());
+  PermissionSet permissions(std::move(apis), ManifestPermissionSet(),
+                            URLPatternSet(), URLPatternSet());
   permissions_test_util::GrantOptionalPermissionsAndWaitForCompletion(
       profile(), *dummy_extension, permissions);
 
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
index d8261a6..632acd8 100644
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
@@ -338,9 +338,10 @@
   // from host permissions.
   const PermissionSet& active_permissions =
       extension.permissions_data()->active_permissions();
-  PermissionSet non_host_permissions(active_permissions.apis(),
-                                     active_permissions.manifest_permissions(),
-                                     URLPatternSet(), URLPatternSet());
+  PermissionSet non_host_permissions(
+      active_permissions.apis().Clone(),
+      active_permissions.manifest_permissions().Clone(), URLPatternSet(),
+      URLPatternSet());
   const PermissionMessageProvider* message_provider =
       PermissionMessageProvider::Get();
   // Generate the messages for just the API (and manifest) permissions.
diff --git a/chrome/browser/extensions/api/permissions/permissions_api.cc b/chrome/browser/extensions/api/permissions/permissions_api.cc
index f1119146..cd48cd4 100644
--- a/chrome/browser/extensions/api/permissions/permissions_api.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_api.cc
@@ -151,7 +151,7 @@
   }
 
   PermissionSet permissions(
-      unpack_result->optional_apis, ManifestPermissionSet(),
+      std::move(unpack_result->optional_apis), ManifestPermissionSet(),
       unpack_result->optional_explicit_hosts, URLPatternSet());
 
   // Only try and remove those permissions that are active on the extension.
@@ -237,7 +237,7 @@
   // Determine which of the requested permissions are optional permissions that
   // are "new", i.e. aren't already active on the extension.
   requested_optional_ = std::make_unique<const PermissionSet>(
-      unpack_result->optional_apis, ManifestPermissionSet(),
+      std::move(unpack_result->optional_apis), ManifestPermissionSet(),
       unpack_result->optional_explicit_hosts, URLPatternSet());
   requested_optional_ =
       PermissionSet::CreateDifference(*requested_optional_, active_permissions);
diff --git a/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc b/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc
index 850cfe8..080ab27f 100644
--- a/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc
@@ -44,8 +44,9 @@
        URLPattern(UserScript::ValidUserScriptSchemes(), "http://d.com/*")});
 
   // Pack the permission set to value and verify its contents.
-  std::unique_ptr<Permissions> pack_result(PackPermissionSet(PermissionSet(
-      apis, ManifestPermissionSet(), explicit_hosts, scriptable_hosts)));
+  std::unique_ptr<Permissions> pack_result(
+      PackPermissionSet(PermissionSet(std::move(apis), ManifestPermissionSet(),
+                                      explicit_hosts, scriptable_hosts)));
   ASSERT_TRUE(pack_result);
   ASSERT_TRUE(pack_result->permissions);
   EXPECT_THAT(*pack_result->permissions,
@@ -74,7 +75,8 @@
   optional_apis.insert(APIPermission::kTab);
   URLPatternSet optional_explicit_hosts(
       {URLPattern(Extension::kValidHostPermissionSchemes, "http://a.com/*")});
-  PermissionSet optional_permissions(optional_apis, ManifestPermissionSet(),
+  PermissionSet optional_permissions(std::move(optional_apis),
+                                     ManifestPermissionSet(),
                                      optional_explicit_hosts, URLPatternSet());
 
   // Origins shouldn't have to be present.
@@ -278,10 +280,12 @@
   optional_apis.insert(kOptional1);
   optional_apis.insert(kOptional2);
 
-  PermissionSet required_permissions(required_apis, ManifestPermissionSet(),
-                                     URLPatternSet(), URLPatternSet());
-  PermissionSet optional_permissions(optional_apis, ManifestPermissionSet(),
-                                     URLPatternSet(), URLPatternSet());
+  PermissionSet required_permissions(std::move(required_apis),
+                                     ManifestPermissionSet(), URLPatternSet(),
+                                     URLPatternSet());
+  PermissionSet optional_permissions(std::move(optional_apis),
+                                     ManifestPermissionSet(), URLPatternSet(),
+                                     URLPatternSet());
 
   Permissions permissions_object;
   permissions_object.permissions = std::make_unique<std::vector<std::string>>(
@@ -308,8 +312,9 @@
   APIPermissionSet optional_apis;
   optional_apis.insert(APIPermission::kWallpaper);
   EXPECT_FALSE((*optional_apis.begin())->info()->supports_optional());
-  PermissionSet optional_permissions(optional_apis, ManifestPermissionSet(),
-                                     URLPatternSet(), URLPatternSet());
+  PermissionSet optional_permissions(std::move(optional_apis),
+                                     ManifestPermissionSet(), URLPatternSet(),
+                                     URLPatternSet());
 
   Permissions permissions_object;
   permissions_object.permissions = std::make_unique<std::vector<std::string>>(
diff --git a/chrome/browser/extensions/api/permissions/permissions_apitest.cc b/chrome/browser/extensions/api/permissions/permissions_apitest.cc
index 0e4506e8..c8f67cb 100644
--- a/chrome/browser/extensions/api/permissions/permissions_apitest.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_apitest.cc
@@ -82,14 +82,13 @@
   // Mark all the tested APIs as granted to bypass the confirmation UI.
   APIPermissionSet apis;
   apis.insert(APIPermission::kBookmark);
-  ManifestPermissionSet manifest_permissions;
   URLPatternSet explicit_hosts;
   AddPattern(&explicit_hosts, "http://*.c.com/*");
 
   ExtensionPrefs* prefs = ExtensionPrefs::Get(browser()->profile());
   prefs->AddRuntimeGrantedPermissions(
       "kjmkgkdkpedkejedfhmfcenooemhbpbo",
-      PermissionSet(apis, manifest_permissions, explicit_hosts,
+      PermissionSet(std::move(apis), ManifestPermissionSet(), explicit_hosts,
                     URLPatternSet()));
 
   PermissionsRequestFunction::SetIgnoreUserGestureForTests(true);
@@ -117,7 +116,7 @@
   ExtensionPrefs* prefs = ExtensionPrefs::Get(browser()->profile());
   prefs->AddRuntimeGrantedPermissions(
       "kjmkgkdkpedkejedfhmfcenooemhbpbo",
-      PermissionSet(apis, ManifestPermissionSet(), URLPatternSet(),
+      PermissionSet(std::move(apis), ManifestPermissionSet(), URLPatternSet(),
                     URLPatternSet()));
 
   PermissionsRequestFunction::SetAutoConfirmForTests(false);
diff --git a/chrome/browser/extensions/extension_install_prompt_unittest.cc b/chrome/browser/extensions/extension_install_prompt_unittest.cc
index a270256..cbff7b6 100644
--- a/chrome/browser/extensions/extension_install_prompt_unittest.cc
+++ b/chrome/browser/extensions/extension_install_prompt_unittest.cc
@@ -97,7 +97,7 @@
   APIPermissionSet api_permissions;
   api_permissions.insert(APIPermission::kTab);
   std::unique_ptr<const PermissionSet> permission_set(
-      new PermissionSet(api_permissions, ManifestPermissionSet(),
+      new PermissionSet(std::move(api_permissions), ManifestPermissionSet(),
                         URLPatternSet(), URLPatternSet()));
   scoped_refptr<const Extension> extension =
       ExtensionBuilder()
diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
index 1eb1235..f4aa45be 100644
--- a/chrome/browser/extensions/extension_management.cc
+++ b/chrome/browser/extensions/extension_management.cc
@@ -212,11 +212,11 @@
   }
   // Check whether if in one of them, setting is specified.
   if (iter_id != settings_by_id_.end())
-    return iter_id->second->blocked_permissions;
+    return iter_id->second->blocked_permissions.Clone();
   if (iter_update_url != settings_by_update_url_.end())
-    return iter_update_url->second->blocked_permissions;
+    return iter_update_url->second->blocked_permissions.Clone();
   // Fall back to the default blocked permissions setting.
-  return default_settings_->blocked_permissions;
+  return default_settings_->blocked_permissions.Clone();
 }
 
 const URLPatternSet& ExtensionManagement::GetDefaultPolicyBlockedHosts() const {
diff --git a/chrome/browser/extensions/extension_management_internal.cc b/chrome/browser/extensions/extension_management_internal.cc
index 18a8069a4..e696eb7 100644
--- a/chrome/browser/extensions/extension_management_internal.cc
+++ b/chrome/browser/extensions/extension_management_internal.cc
@@ -34,7 +34,7 @@
     const IndividualSettings* default_settings) {
   installation_mode = default_settings->installation_mode;
   update_url = default_settings->installation_mode;
-  blocked_permissions = default_settings->blocked_permissions;
+  blocked_permissions = default_settings->blocked_permissions.Clone();
   // We are not initializing |minimum_version_required| from |default_settings|
   // here since it's not applicable to default settings.
 }
diff --git a/chrome/browser/extensions/extension_management_unittest.cc b/chrome/browser/extensions/extension_management_unittest.cc
index 2b3c4e0..fb26b4e 100644
--- a/chrome/browser/extensions/extension_management_unittest.cc
+++ b/chrome/browser/extensions/extension_management_unittest.cc
@@ -571,19 +571,19 @@
 
   APIPermissionSet api_permission_set;
 
-  api_permission_set = blocked_permissions_for_update_url;
+  api_permission_set = blocked_permissions_for_update_url.Clone();
   api_permission_set.insert(APIPermission::kFileSystem);
   api_permission_set.insert(APIPermission::kDownloads);
   api_permission_set.insert(APIPermission::kBookmark);
   EXPECT_EQ(api_permission_set,
             GetBlockedAPIPermissions(kTargetExtension, kExampleUpdateUrl));
 
-  api_permission_set = blocked_permissions_for_update_url;
+  api_permission_set = blocked_permissions_for_update_url.Clone();
   api_permission_set.insert(APIPermission::kDownloads);
   EXPECT_EQ(api_permission_set,
             GetBlockedAPIPermissions(kTargetExtension2, kExampleUpdateUrl));
 
-  api_permission_set = blocked_permissions_for_update_url;
+  api_permission_set = blocked_permissions_for_update_url.Clone();
   api_permission_set.insert(APIPermission::kFileSystem);
   api_permission_set.insert(APIPermission::kHistory);
   EXPECT_EQ(api_permission_set,
diff --git a/chrome/browser/extensions/extension_prefs_unittest.cc b/chrome/browser/extensions/extension_prefs_unittest.cc
index 44f9abb..ba6b127 100644
--- a/chrome/browser/extensions/extension_prefs_unittest.cc
+++ b/chrome/browser/extensions/extension_prefs_unittest.cc
@@ -193,7 +193,7 @@
     AddPattern(&shost_perm_set2_, "http://somesite.com/*");
     AddPattern(&shost_perm_set2_, "http://example.com/*");
 
-    APIPermissionSet expected_apis = api_perm_set1_;
+    APIPermissionSet expected_apis = api_perm_set1_.Clone();
 
     AddPattern(&ehost_permissions_, "http://*.google.com/*");
     AddPattern(&ehost_permissions_, "http://example.com/*");
@@ -204,8 +204,6 @@
     AddPattern(&shost_permissions_, "http://somesite.com/*");
     AddPattern(&shost_permissions_, "http://example.com/*");
 
-    APIPermissionSet empty_set;
-    ManifestPermissionSet empty_manifest_permissions;
     URLPatternSet empty_extent;
 
     // Make sure both granted api and host permissions start empty.
@@ -215,7 +213,7 @@
       // Add part of the api permissions.
       prefs()->AddGrantedPermissions(
           extension_id_,
-          PermissionSet(api_perm_set1_, empty_manifest_permissions,
+          PermissionSet(api_perm_set1_.Clone(), ManifestPermissionSet(),
                         empty_extent, empty_extent));
       std::unique_ptr<const PermissionSet> granted_permissions =
           prefs()->GetGrantedPermissions(extension_id_);
@@ -228,8 +226,9 @@
     {
       // Add part of the explicit host permissions.
       prefs()->AddGrantedPermissions(
-          extension_id_, PermissionSet(empty_set, empty_manifest_permissions,
-                                       ehost_perm_set1_, empty_extent));
+          extension_id_,
+          PermissionSet(APIPermissionSet(), ManifestPermissionSet(),
+                        ehost_perm_set1_, empty_extent));
       std::unique_ptr<const PermissionSet> granted_permissions =
           prefs()->GetGrantedPermissions(extension_id_);
       EXPECT_FALSE(granted_permissions->IsEmpty());
@@ -241,8 +240,9 @@
     {
       // Add part of the scriptable host permissions.
       prefs()->AddGrantedPermissions(
-          extension_id_, PermissionSet(empty_set, empty_manifest_permissions,
-                                       empty_extent, shost_perm_set1_));
+          extension_id_,
+          PermissionSet(APIPermissionSet(), ManifestPermissionSet(),
+                        empty_extent, shost_perm_set1_));
       std::unique_ptr<const PermissionSet> granted_permissions =
           prefs()->GetGrantedPermissions(extension_id_);
       EXPECT_FALSE(granted_permissions->IsEmpty());
@@ -260,7 +260,7 @@
       APIPermissionSet::Union(expected_apis, api_perm_set2_, &api_permissions_);
       prefs()->AddGrantedPermissions(
           extension_id_,
-          PermissionSet(api_perm_set2_, empty_manifest_permissions,
+          PermissionSet(api_perm_set2_.Clone(), ManifestPermissionSet(),
                         ehost_perm_set2_, shost_perm_set2_));
 
       std::unique_ptr<const PermissionSet> granted_permissions =
@@ -314,8 +314,6 @@
     api_perms.insert(APIPermission::kBookmark);
     api_perms.insert(APIPermission::kHistory);
 
-    ManifestPermissionSet empty_manifest_permissions;
-
     URLPatternSet ehosts;
     AddPattern(&ehosts, "http://*.google.com/*");
     AddPattern(&ehosts, "http://example.com/*");
@@ -325,8 +323,8 @@
     AddPattern(&shosts, "https://*.google.com/*");
     AddPattern(&shosts, "http://reddit.com/r/test/*");
 
-    active_perms_.reset(new PermissionSet(api_perms, empty_manifest_permissions,
-                                          ehosts, shosts));
+    active_perms_.reset(new PermissionSet(
+        api_perms.Clone(), ManifestPermissionSet(), ehosts, shosts));
 
     // Make sure the active permissions start empty.
     std::unique_ptr<const PermissionSet> active =
@@ -956,13 +954,11 @@
     api_perms.insert(APIPermission::kBookmark);
     api_perms.insert(APIPermission::kHistory);
 
-    ManifestPermissionSet empty_manifest_permissions;
-
     URLPatternSet ehosts, shosts;
     AddPattern(&shosts, "chrome://print/*");
 
-    active_perms_.reset(new PermissionSet(api_perms, empty_manifest_permissions,
-                                          ehosts, shosts));
+    active_perms_.reset(new PermissionSet(
+        std::move(api_perms), ManifestPermissionSet(), ehosts, shosts));
     // Set the active permissions.
     prefs()->SetActivePermissions(component_extension_->id(), *active_perms_);
     prefs()->SetActivePermissions(no_component_extension_->id(),
diff --git a/chrome/browser/extensions/permissions_updater.cc b/chrome/browser/extensions/permissions_updater.cc
index 1a992d1..3ffb162 100644
--- a/chrome/browser/extensions/permissions_updater.cc
+++ b/chrome/browser/extensions/permissions_updater.cc
@@ -353,8 +353,8 @@
   if (needs_adjustment) {
     // Tedious, because PermissionSets are const. :(
     active_permissions_to_remove = std::make_unique<PermissionSet>(
-        active_permissions_to_remove->apis(),
-        active_permissions_to_remove->manifest_permissions(),
+        active_permissions_to_remove->apis().Clone(),
+        active_permissions_to_remove->manifest_permissions().Clone(),
         URLPatternSet(removable_explicit_hosts),
         active_permissions_to_remove->scriptable_hosts());
   }
diff --git a/chrome/browser/extensions/permissions_updater_unittest.cc b/chrome/browser/extensions/permissions_updater_unittest.cc
index a0d23e9..4474bde9 100644
--- a/chrome/browser/extensions/permissions_updater_unittest.cc
+++ b/chrome/browser/extensions/permissions_updater_unittest.cc
@@ -135,11 +135,12 @@
       const Extension* extension,
       std::unique_ptr<const PermissionSet>* granted_permissions) override {
     // Remove the cookie permission.
-    APIPermissionSet api_permission_set((*granted_permissions)->apis());
+    APIPermissionSet api_permission_set =
+        (*granted_permissions)->apis().Clone();
     api_permission_set.erase(APIPermission::kCookie);
-    granted_permissions->reset(
-        new PermissionSet(api_permission_set, ManifestPermissionSet(),
-                          URLPatternSet(), URLPatternSet()));
+    granted_permissions->reset(new PermissionSet(
+        std::move(api_permission_set), ManifestPermissionSet(), URLPatternSet(),
+        URLPatternSet()));
   }
 
  private:
@@ -167,12 +168,12 @@
 
   APIPermissionSet default_apis;
   default_apis.insert(APIPermission::kManagement);
-  ManifestPermissionSet empty_manifest_permissions;
 
   URLPatternSet default_hosts;
   AddPattern(&default_hosts, "http://a.com/*");
-  PermissionSet default_permissions(default_apis, empty_manifest_permissions,
-                                    default_hosts, URLPatternSet());
+  PermissionSet default_permissions(default_apis.Clone(),
+                                    ManifestPermissionSet(), default_hosts,
+                                    URLPatternSet());
 
   // Make sure it loaded properly.
   ASSERT_EQ(default_permissions,
@@ -189,7 +190,7 @@
   AddPattern(&hosts, "http://*.c.com/*");
 
   {
-    PermissionSet delta(apis, empty_manifest_permissions, hosts,
+    PermissionSet delta(apis.Clone(), ManifestPermissionSet(), hosts,
                         URLPatternSet());
 
     PermissionsUpdaterListener listener;
@@ -223,7 +224,7 @@
     // In the second part of the test, we'll remove the permissions that we
     // just added except for 'notifications'.
     apis.erase(APIPermission::kNotifications);
-    PermissionSet delta(apis, empty_manifest_permissions, hosts,
+    PermissionSet delta(apis.Clone(), ManifestPermissionSet(), hosts,
                         URLPatternSet());
 
     PermissionsUpdaterListener listener;
@@ -263,7 +264,8 @@
   auto api_permission_set = [](APIPermission::ID id) {
     APIPermissionSet apis;
     apis.insert(id);
-    return std::make_unique<PermissionSet>(apis, ManifestPermissionSet(),
+    return std::make_unique<PermissionSet>(std::move(apis),
+                                           ManifestPermissionSet(),
                                            URLPatternSet(), URLPatternSet());
   };
 
@@ -480,7 +482,7 @@
 
   APIPermissionSet apis;
   apis.insert(APIPermission::kTab);
-  PermissionSet optional_permissions(apis, ManifestPermissionSet(),
+  PermissionSet optional_permissions(std::move(apis), ManifestPermissionSet(),
                                      URLPatternSet(), URLPatternSet());
 
   // Granting permissions should update both runtime-granted permissions and
diff --git a/chrome/browser/extensions/scripting_permissions_modifier.cc b/chrome/browser/extensions/scripting_permissions_modifier.cc
index de66669e..ba74dc6 100644
--- a/chrome/browser/extensions/scripting_permissions_modifier.cc
+++ b/chrome/browser/extensions/scripting_permissions_modifier.cc
@@ -86,9 +86,9 @@
                             &granted_scriptable_hosts);
 
   *granted_permissions_out = std::make_unique<PermissionSet>(
-      requested_permissions.apis(),
-      requested_permissions.manifest_permissions(), granted_explicit_hosts,
-      granted_scriptable_hosts);
+      requested_permissions.apis().Clone(),
+      requested_permissions.manifest_permissions().Clone(),
+      granted_explicit_hosts, granted_scriptable_hosts);
 }
 
 // Returns true if the extension should even be considered for being affected
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 3c5f434..291d860 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -1214,11 +1214,6 @@
     "expiry_milestone": 76
   },
   {
-    "name": "enable-fullscreen-toolbar-reveal",
-    // "owners": [ "your-team" ],
-    "expiry_milestone": 76
-  },
-  {
     "name": "enable-future-v8-vm-features",
     // "owners": [ "your-team" ],
     "expiry_milestone": 76
@@ -3102,11 +3097,6 @@
     "expiry_milestone": 76
   },
   {
-    "name": "tab-strip-keyboard-focus",
-    // "owners": [ "your-team" ],
-    "expiry_milestone": 76
-  },
-  {
     "name": "third-party-doodles",
     // "owners": [ "your-team" ],
     "expiry_milestone": 76
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 2bbf7916..1e91918 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -3024,12 +3024,6 @@
 
 #if defined(OS_MACOSX)
 
-const char kFullscreenToolbarRevealName[] =
-    "Enables the toolbar in fullscreen to reveal itself.";
-const char kFullscreenToolbarRevealDescription[] =
-    "Reveal the toolbar in fullscreen for a short period when the tab strip "
-    "has changed.";
-
 const char kContentFullscreenName[] = "Improved Content Fullscreen";
 const char kContentFullscreenDescription[] =
     "Fullscreen content window detaches from main browser window and goes to "
@@ -3076,10 +3070,6 @@
 const char kTabDetachingInFullscreenDescription[] =
     "Allow tabs to detach from the tabstrip when in fullscreen mode on Mac.";
 
-const char kTabStripKeyboardFocusName[] = "Tab Strip Keyboard Focus";
-const char kTabStripKeyboardFocusDescription[] =
-    "Enable keyboard focus for the tabs in the tab strip.";
-
 const char kTextSuggestionsTouchBarName[] = "Text Suggestions Touch Bar";
 const char kTextSuggestionsTouchBarDescription[] =
     "Enable text suggestions touch bar for textfields.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 8324901..833fcc43 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1798,9 +1798,6 @@
 
 #if defined(OS_MACOSX)
 
-extern const char kFullscreenToolbarRevealName[];
-extern const char kFullscreenToolbarRevealDescription[];
-
 extern const char kContentFullscreenName[];
 extern const char kContentFullscreenDescription[];
 
@@ -1831,9 +1828,6 @@
 extern const char kTabDetachingInFullscreenName[];
 extern const char kTabDetachingInFullscreenDescription[];
 
-extern const char kTabStripKeyboardFocusName[];
-extern const char kTabStripKeyboardFocusDescription[];
-
 extern const char kTextSuggestionsTouchBarName[];
 extern const char kTextSuggestionsTouchBarDescription[];
 
diff --git a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
index 74a162d..cb952ca 100644
--- a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
+++ b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
@@ -9,7 +9,6 @@
 #include "build/build_config.h"
 #include "chrome/browser/devtools/devtools_window_testing.h"
 #include "chrome/browser/picture_in_picture/picture_in_picture_window_manager.h"
-#include "chrome/browser/platform_util.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
@@ -44,10 +43,6 @@
 #include "ui/base/hit_test.h"
 #endif
 
-#if defined(TOOLKIT_VIEWS)
-#include "chrome/browser/ui/views/overlay/overlay_window_views.h"
-#endif
-
 using ::testing::_;
 
 namespace {
@@ -168,9 +163,9 @@
 };
 
 // Checks the creation of the window controller, as well as basic window
-// creation, visibility and activation.
+// creation and visibility.
 IN_PROC_BROWSER_TEST_F(PictureInPictureWindowControllerBrowserTest,
-                       CreationAndVisibilityAndActivation) {
+                       CreationAndVisibility) {
   GURL test_page_url = ui_test_utils::GetTestUrl(
       base::FilePath(base::FilePath::kCurrentDirectory),
       base::FilePath(
@@ -186,23 +181,13 @@
 
   ASSERT_TRUE(window_controller()->GetWindowForTesting() != nullptr);
   EXPECT_FALSE(window_controller()->GetWindowForTesting()->IsVisible());
+
   bool result = false;
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
       active_web_contents, "enterPictureInPicture();", &result));
   EXPECT_TRUE(result);
 
   EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible());
-
-#if defined(TOOLKIT_VIEWS)
-  auto* overlay_window = window_controller()->GetWindowForTesting();
-  gfx::NativeWindow native_window =
-      static_cast<OverlayWindowViews*>(overlay_window)->GetNativeWindow();
-#if defined(OS_CHROMEOS)
-  EXPECT_FALSE(platform_util::IsWindowActive(native_window));
-#else
-  EXPECT_TRUE(platform_util::IsWindowActive(native_window));
-#endif
-#endif
 }
 
 #if !defined(OS_CHROMEOS)
diff --git a/chrome/browser/policy/browser_dm_token_storage.cc b/chrome/browser/policy/browser_dm_token_storage.cc
index ac42213..81582a79 100644
--- a/chrome/browser/policy/browser_dm_token_storage.cc
+++ b/chrome/browser/policy/browser_dm_token_storage.cc
@@ -151,8 +151,8 @@
   // will only happens once, as we cache the value. This will eventually be
   // moved earlier in Chrome's startup as it will be needed by the registration
   // as well.
-  // TODO(907518): Move this earlier and make it async.
-  base::RunLoop run_loop;
+  // TODO(crbug.com/907518): Move this earlier and make it async.
+  base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
   std::string serial_number;
   base::SysInfo::GetHardwareInfo(base::BindOnce(
       &OnHardwarePlatformInfo, run_loop.QuitClosure(), &serial_number));
diff --git a/chrome/browser/previews/previews_lite_page_browsertest.cc b/chrome/browser/previews/previews_lite_page_browsertest.cc
index 889bbaa..478662e 100644
--- a/chrome/browser/previews/previews_lite_page_browsertest.cc
+++ b/chrome/browser/previews/previews_lite_page_browsertest.cc
@@ -78,7 +78,7 @@
     kBypass = 1,
 
     // Previews server will respond with HTTP 307 to a non-preview page.
-    kRedirect = 2,
+    kRedirectNonPreview = 2,
 
     // Previews server will respond with HTTP 503.
     kLoadshed = 3,
@@ -94,6 +94,9 @@
     // a subresource. When the subresource is loaded, |subresources_requested|_
     // will be incremented if the X-Client-Data header if in the request.
     kSubresources = 6,
+
+    // Previews server will respond with HTTP 307 to a preview page.
+    kRedirectPreview = 7,
   };
 
   void SetUpCommandLine(base::CommandLine* cmd) override {
@@ -554,10 +557,15 @@
         response->set_content("porgporgporgporgporg" /* length = 20 */);
         response->AddCustomHeader("chrome-proxy", "ofcl=60");
         break;
-      case kRedirect:
+      case kRedirectNonPreview:
         response->set_code(net::HTTP_TEMPORARY_REDIRECT);
         response->AddCustomHeader("Location", HttpLitePageURL(kSuccess).spec());
         break;
+      case kRedirectPreview:
+        response->set_code(net::HTTP_TEMPORARY_REDIRECT);
+        response->AddCustomHeader("Location",
+                                  HttpsLitePageURL(kSuccess).spec());
+        break;
       case kBypass:
         response->set_code(net::HTTP_TEMPORARY_REDIRECT);
         // This will not cause a redirect loop because on following this
@@ -844,9 +852,11 @@
   }
 
   {
-    // Verify the preview is not triggered when the previews server redirects.
+    // Verify the preview is not triggered when the previews server redirects to
+    // a non-preview page.
     base::HistogramTester histogram_tester;
-    ui_test_utils::NavigateToURL(browser(), HttpsLitePageURL(kRedirect));
+    ui_test_utils::NavigateToURL(browser(),
+                                 HttpsLitePageURL(kRedirectNonPreview));
     VerifyPreviewNotLoaded();
     VerifyInfoStatus(previews::ServerLitePageStatus::kRedirect);
     ClearDeciderState();
@@ -856,6 +866,24 @@
         "Previews.ServerLitePage.ServerResponse",
         PreviewsLitePageNavigationThrottle::ServerResponse::kRedirect, 1);
   }
+
+  {
+    // Verify the preview is triggered when the previews server redirects to a
+    // preview page.
+    base::HistogramTester histogram_tester;
+    ui_test_utils::NavigateToURL(browser(), HttpsLitePageURL(kRedirectPreview));
+    VerifyPreviewLoaded();
+    VerifyInfoStatus(previews::ServerLitePageStatus::kSuccess);
+    ClearDeciderState();
+    histogram_tester.ExpectBucketCount("Previews.ServerLitePage.Triggered",
+                                       true, 2);
+    histogram_tester.ExpectBucketCount(
+        "Previews.ServerLitePage.ServerResponse",
+        PreviewsLitePageNavigationThrottle::ServerResponse::kRedirect, 1);
+    histogram_tester.ExpectBucketCount(
+        "Previews.ServerLitePage.ServerResponse",
+        PreviewsLitePageNavigationThrottle::ServerResponse::kOk, 1);
+  }
 }
 
 IN_PROC_BROWSER_TEST_F(PreviewsLitePageServerBrowserTest,
diff --git a/chrome/browser/previews/previews_lite_page_navigation_throttle.cc b/chrome/browser/previews/previews_lite_page_navigation_throttle.cc
index 219d1549..d6a1a96 100644
--- a/chrome/browser/previews/previews_lite_page_navigation_throttle.cc
+++ b/chrome/browser/previews/previews_lite_page_navigation_throttle.cc
@@ -548,32 +548,32 @@
           base::TimeTicks::Now() - navigation_handle()->NavigationStart());
       UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
                                 ServerResponse::kPreviewUnavailable);
-    } else {
-      UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
-                                ServerResponse::kRedirect);
-      GetServerLitePageInfo()->status =
-          previews::ServerLitePageStatus::kRedirect;
+
+      // Check if the original host should be blacklisted, as directed by the
+      // server.
+      const net::HttpResponseHeaders* response_headers =
+          navigation_handle()->GetResponseHeaders();
+
+      std::string chrome_proxy_header;
+      bool blacklist_host =
+          response_headers &&
+          response_headers->EnumerateHeader(nullptr, kChromeProxyHeader,
+                                            &chrome_proxy_header) &&
+          chrome_proxy_header.find("host-blacklisted") != std::string::npos;
+
+      if (blacklist_host)
+        manager_->BlacklistHost(GURL(original_url).host(), kBlacklistDuration);
+
+      UMA_HISTOGRAM_BOOLEAN("Previews.ServerLitePage.HostBlacklistedOnBypass",
+                            blacklist_host);
+
+      return content::NavigationThrottle::PROCEED;
     }
 
-    // Check if the original host should be blacklisted, as directed by the
-    // server.
-    const net::HttpResponseHeaders* response_headers =
-        navigation_handle()->GetResponseHeaders();
-
-    std::string chrome_proxy_header;
-    bool blacklist_host =
-        response_headers &&
-        response_headers->EnumerateHeader(nullptr, kChromeProxyHeader,
-                                          &chrome_proxy_header) &&
-        chrome_proxy_header.find("host-blacklisted") != std::string::npos;
-
-    if (blacklist_host)
-      manager_->BlacklistHost(GURL(original_url).host(), kBlacklistDuration);
-
-    UMA_HISTOGRAM_BOOLEAN("Previews.ServerLitePage.HostBlacklistedOnBypass",
-                          blacklist_host);
-
-    return content::NavigationThrottle::PROCEED;
+    // Otherwise fall out of this if and potentially trigger again.
+    UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
+                              ServerResponse::kRedirect);
+    GetServerLitePageInfo()->status = previews::ServerLitePageStatus::kRedirect;
   }
 
   return MaybeNavigateToPreview();
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js
index ad289ec..af69c364 100644
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js
@@ -16,6 +16,12 @@
   var DAILY_REFRESH_IMAGES_NUM = 5;
 
   /**
+   * The minimum number of images a collection should contain to enable daily
+   * refresh.
+   */
+  var DAILY_REFRESH_MIN_IMAGES_COUNT = 13;
+
+  /**
    * The following values should be kept in sync with the style sheet.
    */
   var GRID_SIZE_CSS = 160;
@@ -376,9 +382,10 @@
         // item is constructed in function itemConstructor below.
         this.pendingItems_ = 0;
 
-        // Add a daily refresh item as the first element of the grid when
-        // showing online wallpapers.
-        if (dataModel.item(0).source == Constants.WallpaperSourceEnum.Online) {
+        // Add a daily refresh item as the first element of the grid if an
+        // online collection contains sufficient number of images.
+        if (dataModel.length >= DAILY_REFRESH_MIN_IMAGES_COUNT &&
+            dataModel.item(0).source == Constants.WallpaperSourceEnum.Online) {
           dataModel.splice(
               0, 0, {isDailyRefreshItem: true, availableOffline: false});
         }
diff --git a/chrome/browser/resources/local_ntp/OWNERS b/chrome/browser/resources/local_ntp/OWNERS
index 74dfcb22..d66146c 100644
--- a/chrome/browser/resources/local_ntp/OWNERS
+++ b/chrome/browser/resources/local_ntp/OWNERS
@@ -1,4 +1,5 @@
 fserb@chromium.org
+kmilka@chromium.org
 kristipark@chromium.org
 mathp@chromium.org
 ramyan@chromium.org
diff --git a/chrome/browser/resources/print_preview/new/BUILD.gn b/chrome/browser/resources/print_preview/new/BUILD.gn
index f0ded25..cf6807a 100644
--- a/chrome/browser/resources/print_preview/new/BUILD.gn
+++ b/chrome/browser/resources/print_preview/new/BUILD.gn
@@ -279,7 +279,6 @@
     "../data:coordinate2d",
     "../data:margins",
     "../data:size",
-    "//ui/webui/resources/js:i18n_behavior",
   ]
 }
 
diff --git a/chrome/browser/resources/print_preview/new/app.js b/chrome/browser/resources/print_preview/new/app.js
index 8d1e087..e8859d1 100644
--- a/chrome/browser/resources/print_preview/new/app.js
+++ b/chrome/browser/resources/print_preview/new/app.js
@@ -553,7 +553,7 @@
    */
   onPrintFailed_: function(httpError) {
     console.error('Printing failed with error code ' + httpError);
-    this.errorMessage_ = loadTimeData.getString('couldNotPrint');
+    this.errorMessage_ = httpError.toString();
     this.$.state.transitTo(print_preview_new.State.FATAL_ERROR);
   },
 
@@ -600,8 +600,7 @@
         this.$.destinationSettings.showCloudPrintPromo();
       }
     } else {
-      this.errorMessage_ = event.message;
-      this.$.state.transitTo(print_preview_new.State.FATAL_ERROR);
+      this.set('state_.cloudPrintError', event.message);
     }
     if (event.status == 200) {
       console.error(
diff --git a/chrome/browser/resources/print_preview/new/destination_list_item.html b/chrome/browser/resources/print_preview/new/destination_list_item.html
index 49b7fb24..85b3dfae 100644
--- a/chrome/browser/resources/print_preview/new/destination_list_item.html
+++ b/chrome/browser/resources/print_preview/new/destination_list_item.html
@@ -92,8 +92,7 @@
       <span class="extension-name searchable">
         [[destination.extensionName]]
       </span>
-      <span class="extension-icon" role="button" tabindex="0"
-          title="[[getExtensionPrinterTooltip_(destination)]]"></span>
+      <span class="extension-icon" role="button" tabindex="0"></span>
     </span>
 <if expr="chromeos">
     <span class="configuring-in-progress-text"
diff --git a/chrome/browser/resources/print_preview/new/destination_list_item.js b/chrome/browser/resources/print_preview/new/destination_list_item.js
index 813f7a2..360f3da 100644
--- a/chrome/browser/resources/print_preview/new/destination_list_item.js
+++ b/chrome/browser/resources/print_preview/new/destination_list_item.js
@@ -132,15 +132,4 @@
   updateHighlighting_: function() {
     return print_preview.updateHighlights(this, this.searchQuery);
   },
-
-  /**
-   * @return {string} A tooltip for the extension printer icon.
-   * @private
-   */
-  getExtensionPrinterTooltip_: function() {
-    if (!this.destination.isExtension)
-      return '';
-    return loadTimeData.getStringF(
-        'extensionDestinationIconTooltip', this.destination.extensionName);
-  },
 });
diff --git a/chrome/browser/resources/print_preview/new/margin_control.html b/chrome/browser/resources/print_preview/new/margin_control.html
index 7c68913a..d40dd76 100644
--- a/chrome/browser/resources/print_preview/new/margin_control.html
+++ b/chrome/browser/resources/print_preview/new/margin_control.html
@@ -2,7 +2,6 @@
 
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="../print_preview_utils.html">
 <link rel="import" href="../data/coordinate2d.html">
 <link rel="import" href="../data/margins.html">
@@ -89,9 +88,8 @@
     </style>
     <div id="line"></div>
     <cr-input id="textbox" aria-hidden$="[[getAriaHidden_(invisible)]]"
-        aria-label$="[[i18n(side)]]" type="text" disabled="[[invisible]]"
-        invalid="[[invalid]]" on-blur="onBlur_" on-focus="onFocus_"
-        data-timeout-delay="1000">
+        type="text" disabled="[[invisible]]" on-blur="onBlur_"
+        on-focus="onFocus_" invalid="[[invalid]]" data-timeout-delay="1000">
     </cr-input>
   </template>
   <script src="margin_control.js"></script>
diff --git a/chrome/browser/resources/print_preview/new/margin_control.js b/chrome/browser/resources/print_preview/new/margin_control.js
index 8c87a4a..3c14f0f9 100644
--- a/chrome/browser/resources/print_preview/new/margin_control.js
+++ b/chrome/browser/resources/print_preview/new/margin_control.js
@@ -14,7 +14,7 @@
 Polymer({
   is: 'print-preview-margin-control',
 
-  behaviors: [print_preview_new.InputBehavior, I18nBehavior],
+  behaviors: [print_preview_new.InputBehavior],
 
   properties: {
     side: {
diff --git a/chrome/browser/resources/print_preview/new/pages_settings.html b/chrome/browser/resources/print_preview/new/pages_settings.html
index 3231629..c7fcfb35 100644
--- a/chrome/browser/resources/print_preview/new/pages_settings.html
+++ b/chrome/browser/resources/print_preview/new/pages_settings.html
@@ -54,7 +54,6 @@
               on-click="onCustomRadioClick_"
               aria-label="$i18n{optionCustomPages}">
             <cr-input id="pageSettingsCustomInput" type="text"
-                aria-label="$i18n{printPagesLabel}"
                 data-timeout-delay="500" on-keydown="onKeydown_"
                 disabled$="[[controlsDisabled_]]" spellcheck="false"
                 on-focus="onCustomInputFocus_" on-blur="onCustomInputBlur_"
diff --git a/chrome/browser/search/instant_service.cc b/chrome/browser/search/instant_service.cc
index c1aa514..abd79b3 100644
--- a/chrome/browser/search/instant_service.cc
+++ b/chrome/browser/search/instant_service.cc
@@ -100,21 +100,8 @@
   base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
   base::FilePath profile_image =
       profile_path.AppendASCII(chrome::kChromeSearchLocalNtpBackgroundFilename);
-  base::FilePath user_data_image = user_data_dir.AppendASCII(
-      chrome::kChromeSearchLocalNtpBackgroundFilename);
 
-  if (base::PathExists(profile_image))
-    return true;
-
-  // The image was originally stored in the user data dir, it needs to be moved
-  // to the profile path if it's still there.
-  if (base::PathExists(user_data_image)) {
-    base::CopyFile(user_data_image, profile_image);
-    base::DeleteFile(user_data_image, false);
-    return true;
-  }
-
-  return false;
+  return base::PathExists(profile_image);
 }
 
 bool IsLocalFileUrl(GURL url) {
diff --git a/chrome/browser/search/instant_service_unittest.cc b/chrome/browser/search/instant_service_unittest.cc
index bed409a25..0d0bdb5 100644
--- a/chrome/browser/search/instant_service_unittest.cc
+++ b/chrome/browser/search/instant_service_unittest.cc
@@ -407,36 +407,6 @@
   EXPECT_TRUE(instant_service_->IsCustomBackgroundSet());
 }
 
-TEST_F(InstantServiceTestCustomBackgroundsEnabled,
-       LocalFileCopiedToProfileDirectory) {
-  ASSERT_FALSE(instant_service_->IsCustomBackgroundSet());
-  const GURL kUrl("chrome-search://local-ntp/background.jpg?123456789");
-
-  sync_preferences::TestingPrefServiceSyncable* pref_service =
-      profile()->GetTestingPrefService();
-
-  base::FilePath user_data_dir;
-  base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
-  base::FilePath old_path(user_data_dir.AppendASCII(
-      chrome::kChromeSearchLocalNtpBackgroundFilename));
-  base::FilePath new_path(profile()->GetPath().AppendASCII(
-      chrome::kChromeSearchLocalNtpBackgroundFilename));
-  base::WriteFile(old_path, "background_image", 16);
-  base::TaskScheduler::GetInstance()->FlushForTesting();
-
-  pref_service->SetUserPref(
-      prefs::kNtpCustomBackgroundDict,
-      std::make_unique<base::Value>(GetBackgroundInfoAsDict(kUrl)));
-  thread_bundle()->RunUntilIdle();
-
-  ThemeBackgroundInfo* theme_info = instant_service_->GetThemeInfoForTesting();
-  EXPECT_EQ(kUrl, theme_info->custom_background_url);
-  EXPECT_TRUE(instant_service_->IsCustomBackgroundSet());
-
-  EXPECT_FALSE(base::PathExists(old_path));
-  EXPECT_TRUE(base::PathExists(new_path));
-}
-
 TEST_F(InstantServiceTestCustomBackgroundsEnabled, ValidateBackdropUrls) {
   ASSERT_FALSE(instant_service_->IsCustomBackgroundSet());
   const GURL kBackdropUrl1("https://www.foo.com");
diff --git a/chrome/browser/sync/sync_ui_util_unittest.cc b/chrome/browser/sync/sync_ui_util_unittest.cc
index 88bf56b..bac1437 100644
--- a/chrome/browser/sync/sync_ui_util_unittest.cc
+++ b/chrome/browser/sync/sync_ui_util_unittest.cc
@@ -5,8 +5,8 @@
 #include <stddef.h>
 
 #include <memory>
-
 #include <set>
+
 #include "base/macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -19,10 +19,10 @@
 #include "chrome/browser/sync/profile_sync_test_util.h"
 #include "chrome/browser/sync/sync_ui_util.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/browser_sync/profile_sync_service_mock.h"
 #include "components/signin/core/browser/fake_signin_manager.h"
 #include "components/signin/core/browser/profile_oauth2_token_service.h"
 #include "components/signin/core/browser/signin_manager.h"
+#include "components/sync/driver/test_sync_service.h"
 #include "content/public/test/test_browser_thread.h"
 #include "content/public/test/test_browser_thread_bundle.h"
 #include "google_apis/gaia/oauth2_token_service_delegate.h"
@@ -30,18 +30,16 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using content::BrowserThread;
+using syncer::TestSyncService;
+using ::testing::_;
 using ::testing::AtMost;
 using ::testing::NiceMock;
 using ::testing::Return;
 using ::testing::ReturnRef;
 using ::testing::SetArgPointee;
-using ::testing::_;
-using browser_sync::ProfileSyncService;
-using browser_sync::ProfileSyncServiceMock;
-using content::BrowserThread;
 
-// A number of distinct states of the ProfileSyncService can be generated for
-// tests.
+// A number of distinct states of the SyncService can be generated for tests.
 enum DistinctState {
   STATUS_CASE_SETUP_IN_PROGRESS,
   STATUS_CASE_SETUP_ERROR,
@@ -98,9 +96,9 @@
   bool auth_in_progress_;
 };
 
-// Loads a ProfileSyncServiceMock to emulate one of a number of distinct cases
-// in order to perform tests on the generated messages.
-void GetDistinctCase(ProfileSyncServiceMock* service,
+// Sets up a TestSyncService to emulate one of a number of distinct cases in
+// order to perform tests on the generated messages.
+void GetDistinctCase(TestSyncService* service,
                      FakeSigninManagerForSyncUIUtilTest* signin,
                      ProfileOAuth2TokenService* token_service,
                      int case_number) {
@@ -109,51 +107,33 @@
   // immutable so can only be allocated in this method.
   switch (case_number) {
     case STATUS_CASE_SETUP_IN_PROGRESS: {
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(false));
-      EXPECT_CALL(*service, IsSetupInProgress()).WillRepeatedly(Return(true));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
+      service->SetFirstSetupComplete(false);
+      service->SetSetupInProgress(true);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
       return;
     }
     case STATUS_CASE_SETUP_ERROR: {
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(false));
-      EXPECT_CALL(*service, IsSetupInProgress()).WillRepeatedly(Return(false));
-      EXPECT_CALL(*service, GetDisableReasons())
-          .WillRepeatedly(
-              Return(syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
+      service->SetFirstSetupComplete(false);
+      service->SetSetupInProgress(false);
+      service->SetDisableReasons(
+          syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
       return;
     }
     case STATUS_CASE_AUTHENTICATING: {
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(true));
-      EXPECT_CALL(*service, GetTransportState())
-          .WillRepeatedly(Return(syncer::SyncService::TransportState::ACTIVE));
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(false));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
-      EXPECT_CALL(*service, GetDisableReasons())
-          .WillRepeatedly(Return(syncer::SyncService::DISABLE_REASON_NONE));
+      service->SetFirstSetupComplete(true);
+      service->SetTransportState(syncer::SyncService::TransportState::ACTIVE);
+      service->SetPassphraseRequired(false);
+      service->SetDisableReasons(syncer::SyncService::DISABLE_REASON_NONE);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
       signin->set_auth_in_progress();
       return;
     }
     case STATUS_CASE_AUTH_ERROR: {
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(true));
-      EXPECT_CALL(*service, GetTransportState())
-          .WillRepeatedly(Return(syncer::SyncService::TransportState::ACTIVE));
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(false));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
+      service->SetFirstSetupComplete(true);
+      service->SetTransportState(syncer::SyncService::TransportState::ACTIVE);
+      service->SetPassphraseRequired(false);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
       std::string account_id = signin->GetAuthenticatedAccountId();
       token_service->UpdateCredentials(account_id, "refresh_token");
       // TODO(https://crbug.com/836212): Do not use the delegate directly,
@@ -161,81 +141,51 @@
       token_service->GetDelegate()->UpdateAuthError(
           account_id,
           GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_ERROR));
-      EXPECT_CALL(*service, GetDisableReasons())
-          .WillRepeatedly(Return(syncer::SyncService::DISABLE_REASON_NONE));
+      service->SetDisableReasons(syncer::SyncService::DISABLE_REASON_NONE);
       return;
     }
     case STATUS_CASE_PROTOCOL_ERROR: {
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(true));
-      EXPECT_CALL(*service, GetTransportState())
-          .WillRepeatedly(Return(syncer::SyncService::TransportState::ACTIVE));
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(false));
-      syncer::SyncProtocolError protocolError;
-      protocolError.action = syncer::UPGRADE_CLIENT;
+      service->SetFirstSetupComplete(true);
+      service->SetTransportState(syncer::SyncService::TransportState::ACTIVE);
+      service->SetPassphraseRequired(false);
+      syncer::SyncProtocolError protocol_error;
+      protocol_error.action = syncer::UPGRADE_CLIENT;
       syncer::SyncEngine::Status status;
-      status.sync_protocol_error = protocolError;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
-      EXPECT_CALL(*service, GetDisableReasons())
-          .WillRepeatedly(Return(syncer::SyncService::DISABLE_REASON_NONE));
+      status.sync_protocol_error = protocol_error;
+      service->SetDetailedSyncStatus(false, status);
+      service->SetDisableReasons(syncer::SyncService::DISABLE_REASON_NONE);
       return;
     }
     case STATUS_CASE_CONFIRM_SYNC_SETTINGS: {
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(false));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
+      service->SetFirstSetupComplete(false);
+      service->SetPassphraseRequired(false);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
       return;
     }
     case STATUS_CASE_PASSPHRASE_ERROR: {
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(true));
-      EXPECT_CALL(*service, GetTransportState())
-          .WillRepeatedly(Return(syncer::SyncService::TransportState::ACTIVE));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
-      EXPECT_CALL(*service, GetDisableReasons())
-          .WillRepeatedly(Return(syncer::SyncService::DISABLE_REASON_NONE));
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(true));
-      EXPECT_CALL(*service, IsPassphraseRequiredForDecryption())
-          .WillRepeatedly(Return(true));
+      service->SetFirstSetupComplete(true);
+      service->SetTransportState(syncer::SyncService::TransportState::ACTIVE);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
+      service->SetDisableReasons(syncer::SyncService::DISABLE_REASON_NONE);
+      service->SetPassphraseRequired(true);
+      service->SetPassphraseRequiredForDecryption(true);
       return;
     }
     case STATUS_CASE_SYNCED: {
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(true));
-      EXPECT_CALL(*service, GetTransportState())
-          .WillRepeatedly(Return(syncer::SyncService::TransportState::ACTIVE));
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(false));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
-      EXPECT_CALL(*service, GetDisableReasons())
-          .WillRepeatedly(Return(syncer::SyncService::DISABLE_REASON_NONE));
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(false));
+      service->SetFirstSetupComplete(true);
+      service->SetTransportState(syncer::SyncService::TransportState::ACTIVE);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
+      service->SetDisableReasons(syncer::SyncService::DISABLE_REASON_NONE);
+      service->SetPassphraseRequired(false);
       return;
     }
     case STATUS_CASE_SYNC_DISABLED_BY_POLICY: {
-      EXPECT_CALL(*service, GetDisableReasons())
-          .WillRepeatedly(
-              Return(syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY));
-      EXPECT_CALL(*service, IsFirstSetupComplete())
-          .WillRepeatedly(Return(false));
-      EXPECT_CALL(*service, GetTransportState())
-          .WillRepeatedly(
-              Return(syncer::SyncService::TransportState::DISABLED));
-      EXPECT_CALL(*service, IsPassphraseRequired())
-          .WillRepeatedly(Return(false));
-      syncer::SyncEngine::Status status;
-      EXPECT_CALL(*service, QueryDetailedSyncStatus(_))
-          .WillRepeatedly(DoAll(SetArgPointee<0>(status), Return(false)));
+      service->SetDisableReasons(
+          syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY);
+      service->SetFirstSetupComplete(false);
+      service->SetTransportState(syncer::SyncService::TransportState::DISABLED);
+      service->SetPassphraseRequired(false);
+      service->SetDetailedSyncStatus(false, syncer::SyncEngine::Status());
       return;
     }
     default:
@@ -271,17 +221,13 @@
   }
 }
 
-// This test ensures that a each distinctive ProfileSyncService statuses
-// will return a unique combination of status and link messages from
-// GetStatusLabels().
+// This test ensures that each distinctive SyncService status will return a
+// unique combination of status and link messages from GetStatusLabels().
 TEST_F(SyncUIUtilTest, DistinctCasesReportUniqueMessageSets) {
   std::set<base::string16> messages;
   for (int idx = 0; idx != NUMBER_OF_STATUS_CASES; idx++) {
     std::unique_ptr<Profile> profile = std::make_unique<TestingProfile>();
-    NiceMock<ProfileSyncServiceMock> service(
-        CreateProfileSyncServiceParamsForTest(profile.get()));
-    GoogleServiceAuthError error = GoogleServiceAuthError::AuthErrorNone();
-    EXPECT_CALL(service, GetAuthError()).WillRepeatedly(ReturnRef(error));
+    TestSyncService service;
     FakeSigninManagerForSyncUIUtilTest signin(profile.get());
     signin.SetAuthenticatedAccountInfo(kTestGaiaId, kTestUser);
     ProfileOAuth2TokenService* token_service =
@@ -293,12 +239,13 @@
     sync_ui_util::GetStatusLabels(profile.get(), &service, signin,
                                   &status_label, &link_label, &action_type);
 
-    EXPECT_EQ(GetActionTypeforDistinctCase(idx), action_type);
+    EXPECT_EQ(GetActionTypeforDistinctCase(idx), action_type)
+        << "Wrong action returned for case #" << idx;
     // If the status and link message combination is already present in the set
     // of messages already seen, this is a duplicate rather than a unique
     // message, and the test has failed.
-    EXPECT_FALSE(status_label.empty()) <<
-        "Empty status label returned for case #" << idx;
+    EXPECT_FALSE(status_label.empty())
+        << "Empty status label returned for case #" << idx;
     // Ensures a search for string 'href' (found in links, not a string to be
     // found in an English language message) fails, since links are excluded
     // from the status label.
@@ -311,7 +258,6 @@
     messages.insert(combined_label);
     testing::Mock::VerifyAndClearExpectations(&service);
     testing::Mock::VerifyAndClearExpectations(&signin);
-    EXPECT_CALL(service, GetAuthError()).WillRepeatedly(ReturnRef(error));
     signin.Shutdown();
   }
 }
@@ -321,17 +267,13 @@
   SigninManagerBase* signin =
       SigninManagerFactory::GetForProfile(profile.get());
 
-  ProfileSyncServiceMock service(
-      CreateProfileSyncServiceParamsForTest(profile.get()));
-  EXPECT_CALL(service, IsFirstSetupComplete()).WillRepeatedly(Return(true));
-  EXPECT_CALL(service, GetDisableReasons())
-      .WillRepeatedly(
-          Return(syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR));
+  TestSyncService service;
+  service.SetFirstSetupComplete(true);
+  service.SetDisableReasons(
+      syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR);
 
   // First time action is not set. We should get unrecoverable error.
-  syncer::SyncStatus status;
-  EXPECT_CALL(service, QueryDetailedSyncStatus(_))
-      .WillOnce(DoAll(SetArgPointee<0>(status), Return(true)));
+  service.SetDetailedSyncStatus(true, syncer::SyncStatus());
 
   base::string16 link_label;
   base::string16 unrecoverable_error_status_label;
@@ -345,9 +287,9 @@
 
   // This time set action to UPGRADE_CLIENT. Ensure that status label differs
   // from previous one.
+  syncer::SyncStatus status;
   status.sync_protocol_error.action = syncer::UPGRADE_CLIENT;
-  EXPECT_CALL(service, QueryDetailedSyncStatus(_))
-      .WillOnce(DoAll(SetArgPointee<0>(status), Return(true)));
+  service.SetDetailedSyncStatus(true, status);
   base::string16 upgrade_client_status_label;
   sync_ui_util::GetStatusLabels(profile.get(), &service, *signin,
                                 &upgrade_client_status_label, &link_label,
@@ -363,18 +305,15 @@
   SigninManagerBase* signin =
       SigninManagerFactory::GetForProfile(profile.get());
 
-  ProfileSyncServiceMock service(
-      CreateProfileSyncServiceParamsForTest(profile.get()));
-  EXPECT_CALL(service, IsFirstSetupComplete()).WillRepeatedly(Return(true));
-  EXPECT_CALL(service, GetDisableReasons())
-      .WillRepeatedly(
-          Return(syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR));
+  TestSyncService service;
+  service.SetFirstSetupComplete(true);
+  service.SetDisableReasons(
+      syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR);
 
   // Set action to UPGRADE_CLIENT.
   syncer::SyncStatus status;
   status.sync_protocol_error.action = syncer::UPGRADE_CLIENT;
-  EXPECT_CALL(service, QueryDetailedSyncStatus(_))
-      .WillOnce(DoAll(SetArgPointee<0>(status), Return(true)));
+  service.SetDetailedSyncStatus(true, status);
 
   base::string16 first_actionable_error_status_label;
   base::string16 link_label;
@@ -387,8 +326,7 @@
 
   // This time set action to ENABLE_SYNC_ON_ACCOUNT.
   status.sync_protocol_error.action = syncer::ENABLE_SYNC_ON_ACCOUNT;
-  EXPECT_CALL(service, QueryDetailedSyncStatus(_))
-      .WillOnce(DoAll(SetArgPointee<0>(status), Return(true)));
+  service.SetDetailedSyncStatus(true, status);
 
   base::string16 second_actionable_error_status_label;
   action_type = sync_ui_util::NO_ACTION;
@@ -407,8 +345,8 @@
   SigninManagerBase* signin =
       SigninManagerFactory::GetForProfile(profile.get());
 
-  NiceMock<ProfileSyncServiceMock> service(
-      CreateProfileSyncServiceParamsForTest(profile.get()));
+  TestSyncService service;
+  service.SetFirstSetupComplete(false);
   ASSERT_TRUE(sync_ui_util::ShouldRequestSyncConfirmation(&service));
 
   base::string16 actionable_error_status_label;
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc
index 974c08f..4043025 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_client_impl_unittest.cc
@@ -88,36 +88,6 @@
 const char kArrowBAccountIdString[] =
     "->{\"account_type\":\"unknown\",\"email\":\"B\"}";
 
-aura::Window* FindWindowInAshForClientWindow(aura::Window* window) {
-  if (!aura::WindowMus::Get(window))
-    return nullptr;
-
-  // Flush all messages from the WindowTreeClient to ensure the client id has
-  // been received.
-  aura::test::WaitForAllChangesToComplete();
-
-  DCHECK_EQ(window->env()->mode(), aura::Env::Mode::MUS);
-  DCHECK(views::MusClient::Exists());
-  aura::WindowTreeClient* window_tree_client =
-      views::MusClient::Get()->window_tree_client();
-  DCHECK(window_tree_client);
-
-  aura::WindowPortMus* window_port_mus = aura::WindowPortMus::Get(window);
-  if (!window_port_mus)
-    return nullptr;  // Should only happen if we're in shutdown.
-
-  // By the time we get here the id should have been determined.
-  DCHECK(window_tree_client->id().has_value());
-  ws::ClientSpecificId client_id = *(window_tree_client->id());
-
-  // Use the top-most remote window. This should correspond to the Window of
-  // the Widget (DesktopNativeWidgetAura creates two windows).
-  const ws::Id transport_id = ws::BuildTransportId(
-      client_id,
-      static_cast<ws::ClientSpecificId>(window_port_mus->server_id()));
-  return ash::window_lookup::GetWindowByClientId(transport_id);
-}
-
 void FlushWindowTreeClientMessages() {
   if (!views::MusClient::Exists())
     return;
@@ -1688,8 +1658,12 @@
   SetUpForThisManyWindows(1);
 
   std::unique_ptr<views::Widget> widget = CreateMusWidget();
+  // Flush all messages from the WindowTreeClient to ensure the client id has
+  // been received.
+  aura::test::WaitForAllChangesToComplete();
   aura::Window* widget_window_in_ash =
-      FindWindowInAshForClientWindow(widget->GetNativeWindow()->parent());
+      ash::window_lookup::GetProxyWindowForClientWindow(
+          widget->GetNativeWindow()->parent());
   ASSERT_TRUE(widget_window_in_ash);
   EXPECT_EQ(widget_window_in_ash->parent(), window(0)->parent());
 
diff --git a/chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm b/chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm
index 58cba0bd..80c32ed 100644
--- a/chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm
+++ b/chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm
@@ -66,9 +66,6 @@
 
 - (void)revealToolbarForWebContents:(content::WebContents*)contents
                        inForeground:(BOOL)inForeground {
-  if (!base::FeatureList::IsEnabled(features::kFullscreenToolbarReveal))
-    return;
-
   animationController_->AnimateToolbarForTabstripChanges(contents,
                                                          inForeground);
 }
diff --git a/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc b/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc
index 1857798..fa57404 100644
--- a/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc
+++ b/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc
@@ -23,11 +23,8 @@
       caret_bounds_(caret_bounds) {}
 
 RemoteTextInputClient::~RemoteTextInputClient() {
-  while (!pending_callbacks_.empty()) {
-    auto callback = std::move(pending_callbacks_.front());
-    pending_callbacks_.pop();
-    std::move(callback).Run(false);
-  }
+  while (!pending_callbacks_.empty())
+    RunNextPendingCallback(false);
 }
 
 void RemoteTextInputClient::SetTextInputType(
@@ -40,12 +37,7 @@
 }
 
 void RemoteTextInputClient::OnDispatchKeyEventPostIMECompleted(bool completed) {
-  DCHECK(!pending_callbacks_.empty());
-  base::OnceCallback<void(bool)> callback =
-      std::move(pending_callbacks_.front());
-  pending_callbacks_.pop();
-  if (callback)
-    std::move(callback).Run(completed);
+  RunNextPendingCallback(completed);
 }
 
 void RemoteTextInputClient::SetCompositionText(
@@ -211,3 +203,12 @@
                      weak_ptr_factory_.GetWeakPtr()));
   return ui::EventDispatchDetails();
 }
+
+void RemoteTextInputClient::RunNextPendingCallback(bool completed) {
+  DCHECK(!pending_callbacks_.empty());
+  base::OnceCallback<void(bool)> callback =
+      std::move(pending_callbacks_.front());
+  pending_callbacks_.pop();
+  if (callback)
+    std::move(callback).Run(completed);
+}
diff --git a/chrome/browser/ui/views/ime_driver/remote_text_input_client.h b/chrome/browser/ui/views/ime_driver/remote_text_input_client.h
index 579ade1..157308a 100644
--- a/chrome/browser/ui/views/ime_driver/remote_text_input_client.h
+++ b/chrome/browser/ui/views/ime_driver/remote_text_input_client.h
@@ -70,6 +70,10 @@
       ui::KeyEvent* event,
       base::OnceCallback<void(bool)> ack_callback) override;
 
+  // Removes the callback at the front of |pending_callbacks_| and runs it with
+  // |completed| as the argument.
+  void RunNextPendingCallback(bool completed);
+
   ws::mojom::TextInputClientPtr remote_client_;
   ui::TextInputType text_input_type_;
   ui::TextInputMode text_input_mode_;
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index b930b27..fe7c0dd2 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -589,6 +589,7 @@
   if (!IsInitialized())
     return;
 
+  tint_ = GetTint();
   RefreshBackground();
   location_icon_view_->Update(/*suppress_animations=*/false);
   RefreshClearAllButtonIcon();
diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.cc b/chrome/browser/ui/views/overlay/overlay_window_views.cc
index 59a2e95..9c97d1e2 100644
--- a/chrome/browser/ui/views/overlay/overlay_window_views.cc
+++ b/chrome/browser/ui/views/overlay/overlay_window_views.cc
@@ -148,6 +148,12 @@
   explicit OverlayWindowWidgetDelegate(views::Widget* widget)
       : widget_(widget) {
     DCHECK(widget_);
+#if defined(OS_CHROMEOS)
+    // PIP windows on ChromeOS are not activatable by default.
+    // It'll be explicitly made activatable when necessary for
+    // accessibility.
+    set_can_activate(false);
+#endif
   }
   ~OverlayWindowWidgetDelegate() override = default;
 
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc
index ba1fd75..1fe42b4 100644
--- a/chrome/browser/ui/views/tabs/tab.cc
+++ b/chrome/browser/ui/views/tabs/tab.cc
@@ -918,10 +918,8 @@
 
     // Show the close button if it's allowed to show on hover, even if it's
     // forced to be hidden normally.
-    const bool show_on_hover = controller_->ShouldShowCloseButtonOnHover();
-    showing_close_button_ |= show_on_hover && hover_controller_.ShouldDraw();
     showing_close_button_ &= large_enough_for_close_button;
-    if (showing_close_button_ || show_on_hover)
+    if (showing_close_button_)
       available_width -= close_button_width;
 
     // If no other controls are visible, show the alert icon or the favicon
diff --git a/chrome/browser/ui/views/tabs/tab_controller.h b/chrome/browser/ui/views/tabs/tab_controller.h
index d4a2ec2a..ba529af 100644
--- a/chrome/browser/ui/views/tabs/tab_controller.h
+++ b/chrome/browser/ui/views/tabs/tab_controller.h
@@ -42,11 +42,6 @@
   // Returns true if the close button for the given tab is forced to be hidden.
   virtual bool ShouldHideCloseButtonForTab(Tab* tab) const = 0;
 
-  // Returns true if the close button on an inactive tab should be shown on
-  // mouse hover. This is predicated on ShouldHideCloseButtonForInactiveTabs()
-  // returning true.
-  virtual bool ShouldShowCloseButtonOnHover() = 0;
-
   // Returns true if ShouldPaintTab() could return a non-empty clip path.
   virtual bool MaySetClip() = 0;
 
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 2df9f19..57e10c7f 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -953,10 +953,6 @@
   return !!touch_layout_;
 }
 
-bool TabStrip::ShouldShowCloseButtonOnHover() {
-  return !touch_layout_;
-}
-
 bool TabStrip::MaySetClip() {
   // Only touch layout needs to restrict the clip.
   return touch_layout_ || IsStackingDraggedTabs();
diff --git a/chrome/browser/ui/views/tabs/tab_strip.h b/chrome/browser/ui/views/tabs/tab_strip.h
index 49fa712..cfcd87a2 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.h
+++ b/chrome/browser/ui/views/tabs/tab_strip.h
@@ -251,7 +251,6 @@
   bool SupportsMultipleSelection() override;
   NewTabButtonPosition GetNewTabButtonPosition() const override;
   bool ShouldHideCloseButtonForTab(Tab* tab) const override;
-  bool ShouldShowCloseButtonOnHover() override;
   bool MaySetClip() override;
   void SelectTab(Tab* tab) override;
   void ExtendSelectionTo(Tab* tab) override;
diff --git a/chrome/browser/ui/views/tabs/tab_unittest.cc b/chrome/browser/ui/views/tabs/tab_unittest.cc
index bf52219c..60e53b8 100644
--- a/chrome/browser/ui/views/tabs/tab_unittest.cc
+++ b/chrome/browser/ui/views/tabs/tab_unittest.cc
@@ -50,7 +50,6 @@
     return LEADING;
   }
   bool ShouldHideCloseButtonForTab(Tab* tab) const override { return false; }
-  bool ShouldShowCloseButtonOnHover() override { return false; }
   bool MaySetClip() override { return false; }
   void SelectTab(Tab* tab) override {}
   void ExtendSelectionTo(Tab* tab) override {}
diff --git a/chrome/browser/ui/webui/chromeos/login/DEPS b/chrome/browser/ui/webui/chromeos/login/DEPS
index 5c8707b..4994ed9 100644
--- a/chrome/browser/ui/webui/chromeos/login/DEPS
+++ b/chrome/browser/ui/webui/chromeos/login/DEPS
@@ -3,15 +3,6 @@
   "core_oobe_handler\.cc": [
     "+ash/shell.h",
   ],
-  # TODO(mash): Fix or deprecate. https://crbug.com/678990
-  "signin_screen_handler\.cc": [
-    "+ash/detachable_base",
-    "+ash/shell.h",
-  ],
-  "signin_screen_handler\.h": [
-    "+ash/detachable_base/detachable_base_observer.h",
-  ],
-
   # Tests.
   "oobe_display_chooser_browsertest\.cc": [
     "+ash/shell.h",
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 13f3646..0e582dae 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -10,13 +10,11 @@
 #include <utility>
 #include <vector>
 
-#include "ash/detachable_base/detachable_base_handler.h"
 #include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/wallpaper_types.h"
 #include "ash/public/interfaces/constants.mojom.h"
 #include "ash/public/interfaces/shutdown.mojom.h"
 #include "ash/public/interfaces/tray_action.mojom.h"
-#include "ash/shell.h"
 #include "base/bind.h"
 #include "base/i18n/number_formatting.h"
 #include "base/location.h"
@@ -97,7 +95,6 @@
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
 #include "components/prefs/scoped_user_pref_update.h"
-#include "components/session_manager/core/session_manager.h"
 #include "components/strings/grit/components_strings.h"
 #include "components/user_manager/known_user.h"
 #include "components/user_manager/user.h"
@@ -227,23 +224,6 @@
   return network->name();
 }
 
-ash::mojom::UserInfoPtr GetUserInfoForAccount(const AccountId& account_id) {
-  const user_manager::User* user =
-      user_manager::UserManager::Get()->FindUser(account_id);
-  if (!user)
-    return nullptr;
-
-  auto user_info = ash::mojom::UserInfo::New();
-  user_info->type = user->GetType();
-  user_info->account_id = account_id;
-  user_info->is_ephemeral =
-      user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral(
-          account_id);
-  user_info->display_name = base::UTF16ToUTF8(user->display_name());
-  user_info->display_email = user->display_email();
-  return user_info;
-}
-
 }  // namespace
 
 // LoginScreenContext implementation ------------------------------------------
@@ -268,9 +248,7 @@
       proxy_auth_dialog_reload_times_(kMaxGaiaReloadForProxyAuthDialog),
       gaia_screen_handler_(gaia_screen_handler),
       histogram_helper_(new ErrorScreensHistogramHelper("Signin")),
-      session_manager_observer_(this),
       lock_screen_apps_observer_(this),
-      detachable_base_observer_(this),
       observer_binding_(this),
       weak_factory_(this) {
   DCHECK(network_state_informer_.get());
@@ -307,17 +285,12 @@
   tablet_mode_client->AddObserver(this);
   OnTabletModeToggled(tablet_mode_client->tablet_mode_enabled());
 
-  session_manager_observer_.Add(session_manager::SessionManager::Get());
   if (lock_screen_apps::StateController::IsEnabled())
     lock_screen_apps_observer_.Add(lock_screen_apps::StateController::Get());
 
   ash::mojom::WallpaperObserverAssociatedPtrInfo ptr_info;
   observer_binding_.Bind(mojo::MakeRequest(&ptr_info));
   WallpaperControllerClient::Get()->AddObserver(std::move(ptr_info));
-  // TODO(tbarzic): This is needed for login UI - remove it when login switches
-  // to views implementation (or otherwise, make it work under mash).
-  if (!features::IsMultiProcessMash())
-    detachable_base_observer_.Add(ash::Shell::Get()->detachable_base_handler());
 }
 
 SigninScreenHandler::~SigninScreenHandler() {
@@ -1123,34 +1096,6 @@
                           enabled);
 }
 
-void SigninScreenHandler::OnSessionStateChanged() {
-  // If the session got unblocked, and the user for which the detachable base
-  // change notification was shown got added to the session, mark the paired
-  // base as used by the user, so they don't get further notifications about
-  // the detachable base change.
-  // The fact the user got added to the session implies that they have
-  // authenticated while the warning was displayed, so they should be aware
-  // of the base change at this point.
-  if (!account_with_detachable_base_error_.has_value())
-    return;
-
-  if (session_manager::SessionManager::Get()->IsUserSessionBlocked())
-    return;
-
-  const AccountId& account_id = *account_with_detachable_base_error_;
-  if (session_manager::SessionManager::Get()->HasSessionForAccountId(
-          account_id)) {
-    ash::mojom::UserInfoPtr user_info = GetUserInfoForAccount(account_id);
-    if (user_info) {
-      ash::Shell::Get()
-          ->detachable_base_handler()
-          ->SetPairedBaseAsLastUsedByUser(*user_info);
-    }
-  }
-
-  HideDetachableBaseChangedError();
-}
-
 void SigninScreenHandler::OnLockScreenNoteStateChanged(
     ash::mojom::TrayActionState state) {
   if (!ScreenLocker::default_screen_locker())
@@ -1488,12 +1433,6 @@
     ui_state_ = UI_STATE_GAIA_SIGNIN;
   } else if (source == kSourceAccountPicker) {
     ui_state_ = UI_STATE_ACCOUNT_PICKER;
-
-    if (active) {
-      UpdateDetachableBaseChangedError();
-    } else {
-      HideDetachableBaseChangedError();
-    }
   } else {
     NOTREACHED();
     return;
@@ -1534,12 +1473,6 @@
           ->SetLastFocusedPodHourClockType(
               use_24hour_clock ? base::k24HourClock : base::k12HourClock);
     }
-
-    // Update the detachable base change warning visibility when the focused
-    // user pod changes. Note that this should only be done for large pods - the
-    // pods whose authentication method is shown in the sign-in UI.
-    if (is_large_pod)
-      UpdateDetachableBaseChangedError();
   }
 }
 
@@ -1758,78 +1691,4 @@
   }
 }
 
-void SigninScreenHandler::OnDetachableBasePairingStatusChanged(
-    ash::DetachableBasePairingStatus status) {
-  UpdateDetachableBaseChangedError();
-}
-void SigninScreenHandler::OnDetachableBaseRequiresUpdateChanged(
-    bool requires_update) {}
-
-void SigninScreenHandler::UpdateDetachableBaseChangedError() {
-  if (features::IsMultiProcessMash())
-    return;
-
-  auto pairing_status =
-      ash::Shell::Get()->detachable_base_handler()->GetPairingStatus();
-  if (pairing_status == ash::DetachableBasePairingStatus::kNone) {
-    HideDetachableBaseChangedError();
-    return;
-  }
-
-  // Requests to update the notification state will be postponed until a pod
-  // gets focused. Reasons for that are:
-  //   * The warning bubble is anchored at a user pod authentication element,
-  //     which is only shown when the pod is focused.
-  //   * If two large pods are shown, it's unclear which one should be
-  //     considered active if neither is focused.
-  // Send a request to the login UI to select/focus a use pod so the warning can
-  // be shown sooner, rather than later - the user might start typing without
-  // focusing a pod first, in which case showing the warning as the pod gets
-  // focused might be too late to warn the user their keyboard might not be
-  // trusted.
-  if (!focused_pod_account_id_) {
-    CallJSWithPrefixOrDefer(
-        "login.AccountPickerScreen.selectPodForDetachableBaseWarningBubble");
-    return;
-  }
-
-  bool base_trusted =
-      pairing_status == ash::DetachableBasePairingStatus::kAuthenticated;
-  if (base_trusted) {
-    ash::mojom::UserInfoPtr user_info =
-        GetUserInfoForAccount(*focused_pod_account_id_);
-    if (user_info) {
-      base_trusted = ash::Shell::Get()
-                         ->detachable_base_handler()
-                         ->PairedBaseMatchesLastUsedByUser(*user_info);
-    }
-  }
-
-  if (base_trusted) {
-    HideDetachableBaseChangedError();
-  } else {
-    ShowDetachableBaseChangedError();
-  }
-}
-
-void SigninScreenHandler::ShowDetachableBaseChangedError() {
-  account_with_detachable_base_error_ = *focused_pod_account_id_;
-
-  CallJSWithPrefixOrDefer(
-      "cr.ui.login.DisplayManager.showDetachableBaseChangedWarning",
-      *focused_pod_account_id_,
-      l10n_util::GetStringUTF8(IDS_LOGIN_ERROR_DETACHABLE_BASE_CHANGED),
-      std::string(), 0);
-}
-
-void SigninScreenHandler::HideDetachableBaseChangedError() {
-  if (!account_with_detachable_base_error_.has_value())
-    return;
-
-  CallJSWithPrefixOrDefer(
-      "cr.ui.login.DisplayManager.hideDetachableBaseChangedWarning",
-      *account_with_detachable_base_error_);
-  account_with_detachable_base_error_ = base::nullopt;
-}
-
 }  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
index 54fd5f42..42d28a3 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
@@ -10,7 +10,6 @@
 #include <set>
 #include <string>
 
-#include "ash/detachable_base/detachable_base_observer.h"
 #include "ash/public/interfaces/wallpaper.mojom.h"
 #include "base/callback.h"
 #include "base/compiler_specific.h"
@@ -18,7 +17,6 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
-#include "base/optional.h"
 #include "base/scoped_observer.h"
 #include "chrome/browser/chromeos/lock_screen_apps/state_observer.h"
 #include "chrome/browser/chromeos/login/screens/error_screen.h"
@@ -32,7 +30,6 @@
 #include "chromeos/components/proximity_auth/screenlock_bridge.h"
 #include "chromeos/dbus/power_manager_client.h"
 #include "chromeos/network/portal_detector/network_portal_detector.h"
-#include "components/session_manager/core/session_manager_observer.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
@@ -49,8 +46,6 @@
 namespace mojom {
 enum class TrayActionState;
 }  // namespace mojom
-
-class DetachableBaseHandler;
 }  // namespace ash
 
 namespace base {
@@ -62,10 +57,6 @@
 class StateController;
 }
 
-namespace session_manager {
-class SessionManager;
-}
-
 namespace chromeos {
 
 class CoreOobeView;
@@ -204,9 +195,7 @@
       public TabletModeClientObserver,
       public lock_screen_apps::StateObserver,
       public OobeUI::Observer,
-      public session_manager::SessionManagerObserver,
-      public ash::mojom::WallpaperObserver,
-      public ash::DetachableBaseObserver {
+      public ash::mojom::WallpaperObserver {
  public:
   SigninScreenHandler(
       const scoped_refptr<NetworkStateInformer>& network_state_informer,
@@ -251,11 +240,6 @@
       const std::vector<SkColor>& prominent_colors) override;
   void OnWallpaperBlurChanged(bool blurred) override;
 
-  // ash::DetachableBaseObserver:
-  void OnDetachableBasePairingStatusChanged(
-      ash::DetachableBasePairingStatus pairing_status) override;
-  void OnDetachableBaseRequiresUpdateChanged(bool requires_update) override;
-
   void SetFocusPODCallbackForTesting(base::Closure callback);
 
   // To avoid spurious error messages on flaky networks, the offline message is
@@ -336,9 +320,6 @@
   // TabletModeClientObserver:
   void OnTabletModeToggled(bool enabled) override;
 
-  // session_manager::SessionManagerObserver:
-  void OnSessionStateChanged() override;
-
   // lock_screen_apps::StateObserver:
   void OnLockScreenNoteStateChanged(ash::mojom::TrayActionState state) override;
 
@@ -461,23 +442,6 @@
   // responding to network state notifications.
   void ReenableNetworkStateUpdatesAfterProxyAuth();
 
-  // Determines whether a warning about the detachable base getting changed
-  // should be shown to the user. The warning is shown a detachable base is
-  // present, and the user whose pod is currently focused has used a different
-  // base last time. It updates the detachable base warning visibility as
-  // required.
-  void UpdateDetachableBaseChangedError();
-
-  // Sends a request to the UI to show a detachable base change warning for the
-  // currently focused user pod. The warning warns the user that the currently
-  // attached base is different than the one they last used, and that it might
-  // not be trusted.
-  void ShowDetachableBaseChangedError();
-
-  // If a detachable base change warning was requested to be shown, sends a
-  // request to UI to hide the warning.
-  void HideDetachableBaseChangedError();
-
   // Current UI state of the signin screen.
   UIState ui_state_ = UI_STATE_UNKNOWN;
 
@@ -560,20 +524,10 @@
 
   std::unique_ptr<AccountId> focused_pod_account_id_;
 
-  // If set, the account for which detachable base change warning was shown in
-  // the login UI.
-  base::Optional<AccountId> account_with_detachable_base_error_;
-
-  ScopedObserver<session_manager::SessionManager,
-                 session_manager::SessionManagerObserver>
-      session_manager_observer_;
   ScopedObserver<lock_screen_apps::StateController,
                  lock_screen_apps::StateObserver>
       lock_screen_apps_observer_;
 
-  ScopedObserver<ash::DetachableBaseHandler, ash::DetachableBaseObserver>
-      detachable_base_observer_;
-
   // The binding this instance uses to implement ash::mojom::WallpaperObserver.
   mojo::AssociatedBinding<ash::mojom::WallpaperObserver> observer_binding_;
 
diff --git a/chrome/browser/ui/webui/welcome/nux/bookmark_item.cc b/chrome/browser/ui/webui/welcome/nux/bookmark_item.cc
index e1e9e06..ba59a85 100644
--- a/chrome/browser/ui/webui/welcome/nux/bookmark_item.cc
+++ b/chrome/browser/ui/webui/welcome/nux/bookmark_item.cc
@@ -9,7 +9,7 @@
 
 namespace nux {
 
-base::ListValue bookmarkItemsToListValue(const BookmarkItem items[],
+base::ListValue BookmarkItemsToListValue(const BookmarkItem items[],
                                          size_t count) {
   base::ListValue list_value;
   for (size_t i = 0; i < count; ++i) {
@@ -25,7 +25,7 @@
   return list_value;
 }
 
-base::ListValue bookmarkItemsToListValue(
+base::ListValue BookmarkItemsToListValue(
     const std::vector<BookmarkItem>& items) {
   base::ListValue list_value;
   for (const auto& item : items) {
diff --git a/chrome/browser/ui/webui/welcome/nux/bookmark_item.h b/chrome/browser/ui/webui/welcome/nux/bookmark_item.h
index 8a0d6b6..838735a9 100644
--- a/chrome/browser/ui/webui/welcome/nux/bookmark_item.h
+++ b/chrome/browser/ui/webui/welcome/nux/bookmark_item.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_UI_WEBUI_WELCOME_NUX_BOOKMARK_ITEM_H_
 
 #include <stddef.h>
+#include <string>
 #include <vector>
 
 namespace base {
@@ -16,16 +17,16 @@
 
 struct BookmarkItem {
   const int id;
-  const char* name;
+  const std::string name;
   const char* webui_icon;
-  const char* url;
+  const std::string url;
   const int icon;  // Corresponds with resource ID, used for bookmark cache.
 };
 
-base::ListValue bookmarkItemsToListValue(const BookmarkItem items[],
+base::ListValue BookmarkItemsToListValue(const BookmarkItem items[],
                                          size_t count);
 
-base::ListValue bookmarkItemsToListValue(
+base::ListValue BookmarkItemsToListValue(
     const std::vector<BookmarkItem>& items);
 
 }  // namespace nux
diff --git a/chrome/browser/ui/webui/welcome/nux/email_handler.cc b/chrome/browser/ui/webui/welcome/nux/email_handler.cc
index 329f469..b88bcb9 100644
--- a/chrome/browser/ui/webui/welcome/nux/email_handler.cc
+++ b/chrome/browser/ui/webui/welcome/nux/email_handler.cc
@@ -79,12 +79,13 @@
   const base::Value* callback_id;
   CHECK(args->Get(0, &callback_id));
   ResolveJavascriptCallback(*callback_id,
-                            bookmarkItemsToListValue(email_providers_));
+                            BookmarkItemsToListValue(email_providers_));
 }
 
 void EmailHandler::AddSources(content::WebUIDataSource* html_source) {
   // Add constants to loadtime data
-  html_source->AddInteger("email_providers_enum_count", EmailProviders::kCount);
+  html_source->AddInteger("email_providers_enum_count",
+                          GetNumberOfEmailProviders());
   html_source->SetJsonPath("strings.js");
 }
 
diff --git a/chrome/browser/ui/webui/welcome/nux/email_providers_list.cc b/chrome/browser/ui/webui/welcome/nux/email_providers_list.cc
index 86e7784..7164b71 100644
--- a/chrome/browser/ui/webui/welcome/nux/email_providers_list.cc
+++ b/chrome/browser/ui/webui/welcome/nux/email_providers_list.cc
@@ -10,20 +10,31 @@
 
 namespace nux {
 
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class EmailProviders {
+  kGmail = 0,
+  kYahoo = 1,
+  kOutlook = 2,
+  kAol = 3,
+  kiCloud = 4,
+  kCount,
+};
+
 std::vector<BookmarkItem> GetCurrentCountryEmailProviders() {
   switch (country_codes::GetCurrentCountryID()) {
     case country_codes::CountryCharsToCountryID('U', 'S'): {
       return {
-          {EmailProviders::kGmail, "Gmail", "gmail",
+          {static_cast<int>(EmailProviders::kGmail), "Gmail", "gmail",
            "https://accounts.google.com/b/0/AddMailService",
            IDR_NUX_EMAIL_GMAIL_1X},
-          {EmailProviders::kYahoo, "Yahoo", "yahoo", "https://mail.yahoo.com",
-           IDR_NUX_EMAIL_YAHOO_1X},
-          {EmailProviders::kOutlook, "Outlook", "outlook",
+          {static_cast<int>(EmailProviders::kYahoo), "Yahoo", "yahoo",
+           "https://mail.yahoo.com", IDR_NUX_EMAIL_YAHOO_1X},
+          {static_cast<int>(EmailProviders::kOutlook), "Outlook", "outlook",
            "https://login.live.com/login.srf?", IDR_NUX_EMAIL_OUTLOOK_1X},
-          {EmailProviders::kAol, "AOL", "aol", "https://mail.aol.com",
-           IDR_NUX_EMAIL_AOL_1X},
-          {EmailProviders::kiCloud, "iCloud", "icloud",
+          {static_cast<int>(EmailProviders::kAol), "AOL", "aol",
+           "https://mail.aol.com", IDR_NUX_EMAIL_AOL_1X},
+          {static_cast<int>(EmailProviders::kiCloud), "iCloud", "icloud",
            "https://www.icloud.com/mail", IDR_NUX_EMAIL_ICLOUD_1X},
       };
     }
@@ -32,7 +43,7 @@
 
     default:
       return {
-          {EmailProviders::kGmail, "Gmail", "gmail",
+          {static_cast<int>(EmailProviders::kGmail), "Gmail", "gmail",
            "https://accounts.google.com/b/0/AddMailService",
            IDR_NUX_EMAIL_GMAIL_1X},
           // TODO(scottchen): add more default values here.
@@ -40,4 +51,8 @@
   }
 }
 
+int GetNumberOfEmailProviders() {
+  return static_cast<int>(EmailProviders::kCount);
+}
+
 }  // namespace nux
diff --git a/chrome/browser/ui/webui/welcome/nux/email_providers_list.h b/chrome/browser/ui/webui/welcome/nux/email_providers_list.h
index 926bcd62..e50eed8 100644
--- a/chrome/browser/ui/webui/welcome/nux/email_providers_list.h
+++ b/chrome/browser/ui/webui/welcome/nux/email_providers_list.h
@@ -11,19 +11,11 @@
 
 namespace nux {
 
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum EmailProviders {
-  kGmail = 0,
-  kYahoo = 1,
-  kOutlook = 2,
-  kAol = 3,
-  kiCloud = 4,
-  kCount,
-};
-
 std::vector<BookmarkItem> GetCurrentCountryEmailProviders();
 
+// Function to avoid exposing enum only for count.
+int GetNumberOfEmailProviders();
+
 }  // namespace nux
 
 #endif  // CHROME_BROWSER_UI_WEBUI_WELCOME_NUX_EMAIL_PROVIDERS_LIST_H_
diff --git a/chrome/browser/ui/webui/welcome/nux/google_apps_handler.cc b/chrome/browser/ui/webui/welcome/nux/google_apps_handler.cc
index 33584ab9..5147272 100644
--- a/chrome/browser/ui/webui/welcome/nux/google_apps_handler.cc
+++ b/chrome/browser/ui/webui/welcome/nux/google_apps_handler.cc
@@ -19,6 +19,7 @@
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
 
 namespace nux {
@@ -38,24 +39,48 @@
 const char* kGoogleAppsInteractionHistogram =
     "FirstRun.NewUserExperience.GoogleAppsInteraction";
 
-// Strings in costants not translated because this is an experiment.
-// TODO(hcarmona): Translate before wide release.
-const BookmarkItem kGoogleApps[] = {
-    {static_cast<int>(GoogleApps::kYouTube), "YouTube", "youtube",
-     "https://youtube.com", IDR_NUX_GOOGLE_APPS_YOUTUBE_1X},
-    {static_cast<int>(GoogleApps::kMaps), "Maps", "maps",
-     "https://maps.google.com", IDR_NUX_GOOGLE_APPS_MAPS_1X},
-    {static_cast<int>(GoogleApps::kNews), "News", "news",
-     "https://news.google.com", IDR_NUX_GOOGLE_APPS_NEWS_1X},
-    {static_cast<int>(GoogleApps::kTranslate), "Translate", "translate",
-     "https://translate.google.com", IDR_NUX_GOOGLE_APPS_TRANSLATE_1X},
-    {static_cast<int>(GoogleApps::kChromeWebStore), "Web Store", "web-store",
-     "https://chrome.google.com/webstore", IDR_NUX_GOOGLE_APPS_CHROME_STORE_1X},
-};
-
 constexpr const int kGoogleAppIconSize = 48;  // Pixels.
 
-GoogleAppsHandler::GoogleAppsHandler() {}
+GoogleAppsHandler::GoogleAppsHandler()
+    :  // Do not translate icon name as it is not human visible and needs to
+       // match CSS.
+      google_apps_{{
+          {static_cast<int>(GoogleApps::kYouTube),
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_YOUTUBE),
+           "youtube",
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_YOUTUBE_LINK),
+           IDR_NUX_GOOGLE_APPS_YOUTUBE_1X},
+          {static_cast<int>(GoogleApps::kMaps),
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_MAPS),
+           "maps",
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_MAPS_LINK),
+           IDR_NUX_GOOGLE_APPS_MAPS_1X},
+          {static_cast<int>(GoogleApps::kNews),
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_NEWS),
+           "news",
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_NEWS_LINK),
+           IDR_NUX_GOOGLE_APPS_NEWS_1X},
+          {static_cast<int>(GoogleApps::kTranslate),
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_TRANSLATE),
+           "translate",
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_TRANSLATE_LINK),
+           IDR_NUX_GOOGLE_APPS_TRANSLATE_1X},
+          {static_cast<int>(GoogleApps::kChromeWebStore),
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_WEB_STORE),
+           "web-store",
+           l10n_util::GetStringUTF8(
+               IDS_ONBOARDING_WELCOME_NUX_GOOGLE_APPS_WEB_STORE_LINK),
+           IDR_NUX_GOOGLE_APPS_CHROME_STORE_1X},
+      }} {}
 
 GoogleAppsHandler::~GoogleAppsHandler() {}
 
@@ -76,9 +101,9 @@
   args->GetInteger(0, &appId);
 
   const BookmarkItem* selectedApp = NULL;
-  for (size_t i = 0; i < base::size(kGoogleApps); i++) {
-    if (static_cast<int>(kGoogleApps[i].id) == appId) {
-      selectedApp = &kGoogleApps[i];
+  for (size_t i = 0; i < kGoogleAppCount; i++) {
+    if (google_apps_[i].id == appId) {
+      selectedApp = &google_apps_[i];
       break;
     }
   }
@@ -104,7 +129,7 @@
   CHECK(args->Get(0, &callback_id));
   ResolveJavascriptCallback(
       *callback_id,
-      bookmarkItemsToListValue(kGoogleApps, base::size(kGoogleApps)));
+      BookmarkItemsToListValue(google_apps_.data(), kGoogleAppCount));
 }
 
 }  // namespace nux
diff --git a/chrome/browser/ui/webui/welcome/nux/google_apps_handler.h b/chrome/browser/ui/webui/welcome/nux/google_apps_handler.h
index 518b62ba..a3db532 100644
--- a/chrome/browser/ui/webui/welcome/nux/google_apps_handler.h
+++ b/chrome/browser/ui/webui/welcome/nux/google_apps_handler.h
@@ -5,8 +5,11 @@
 #ifndef CHROME_BROWSER_UI_WEBUI_WELCOME_NUX_GOOGLE_APPS_HANDLER_H_
 #define CHROME_BROWSER_UI_WEBUI_WELCOME_NUX_GOOGLE_APPS_HANDLER_H_
 
+#include <array>
+
 #include "base/macros.h"
 #include "base/values.h"
+#include "chrome/browser/ui/webui/welcome/nux/bookmark_item.h"
 #include "content/public/browser/web_ui_message_handler.h"
 
 namespace nux {
@@ -22,6 +25,8 @@
   kCount,
 };
 
+const size_t kGoogleAppCount = 5;
+
 class GoogleAppsHandler : public content::WebUIMessageHandler {
  public:
   GoogleAppsHandler();
@@ -34,6 +39,9 @@
   void HandleCacheGoogleAppIcon(const base::ListValue* args);
   void HandleGetGoogleAppsList(const base::ListValue* args);
 
+ private:
+  std::array<BookmarkItem, kGoogleAppCount> google_apps_;
+
   DISALLOW_COPY_AND_ASSIGN(GoogleAppsHandler);
 };
 
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index d1584b3..2dce02f 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -33,10 +33,6 @@
 const base::Feature kShow10_9ObsoleteInfobar{"Show109ObsoleteInfobar",
                                              base::FEATURE_DISABLED_BY_DEFAULT};
 
-// Enables the fullscreen toolbar to reveal itself if it's hidden.
-const base::Feature kFullscreenToolbarReveal{"FullscreenToolbarReveal",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Use the Toolkit-Views Task Manager window.
 const base::Feature kViewsTaskManager{"ViewsTaskManager",
                                       base::FEATURE_DISABLED_BY_DEFAULT};
@@ -130,12 +126,6 @@
 const base::Feature kBundledConnectionHelpFeature{
     "BundledConnectionHelp", base::FEATURE_ENABLED_BY_DEFAULT};
 
-#if defined(OS_MACOSX)
-// Enables or disables keyboard focus for the tab strip.
-const base::Feature kTabStripKeyboardFocus{"TabStripKeyboardFocus",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
-#endif  // defined(OS_MACOSX)
-
 #if !defined(OS_ANDROID)
 // Enables logging UKMs for background tab activity by TabActivityWatcher.
 const base::Feature kTabMetricsLogging{"TabMetricsLogging",
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index a26eccf5f..3327b9c 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -88,11 +88,6 @@
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kBundledConnectionHelpFeature;
 
-#if defined(OS_MACOSX)
-COMPONENT_EXPORT(CHROME_FEATURES)
-extern const base::Feature kTabStripKeyboardFocus;
-#endif  // defined(OS_MACOSX)
-
 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kCertDualVerificationTrialFeature;
@@ -186,11 +181,6 @@
 
 COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kFullscreenExitUI;
 
-#if defined(OS_MACOSX)
-COMPONENT_EXPORT(CHROME_FEATURES)
-extern const base::Feature kFullscreenToolbarReveal;
-#endif
-
 #if defined(OS_WIN)
 COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kGdiTextPrinting;
 #endif
diff --git a/chrome/common/extensions/permissions/chrome_permission_message_provider_unittest.cc b/chrome/common/extensions/permissions/chrome_permission_message_provider_unittest.cc
index dda0f27..a3d8e0c 100644
--- a/chrome/common/extensions/permissions/chrome_permission_message_provider_unittest.cc
+++ b/chrome/common/extensions/permissions/chrome_permission_message_provider_unittest.cc
@@ -38,8 +38,8 @@
                                  Manifest::Type type) {
     return message_provider_->GetPermissionMessages(
         message_provider_->GetAllPermissionIDs(
-            PermissionSet(permissions, ManifestPermissionSet(), URLPatternSet(),
-                          URLPatternSet()),
+            PermissionSet(permissions.Clone(), ManifestPermissionSet(),
+                          URLPatternSet(), URLPatternSet()),
             type));
   }
 
@@ -47,17 +47,17 @@
                                          Manifest::Type type) {
     return message_provider_->GetPowerfulPermissionMessages(
         message_provider_->GetAllPermissionIDs(
-            PermissionSet(permissions, ManifestPermissionSet(), URLPatternSet(),
-                          URLPatternSet()),
+            PermissionSet(permissions.Clone(), ManifestPermissionSet(),
+                          URLPatternSet(), URLPatternSet()),
             type));
   }
 
   bool IsPrivilegeIncrease(const APIPermissionSet& granted_permissions,
                            const APIPermissionSet& requested_permissions) {
     return message_provider_->IsPrivilegeIncrease(
-        PermissionSet(granted_permissions, ManifestPermissionSet(),
+        PermissionSet(granted_permissions.Clone(), ManifestPermissionSet(),
                       URLPatternSet(), URLPatternSet()),
-        PermissionSet(requested_permissions, ManifestPermissionSet(),
+        PermissionSet(requested_permissions.Clone(), ManifestPermissionSet(),
                       URLPatternSet(), URLPatternSet()),
         Manifest::TYPE_EXTENSION);
   }
diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc
index 9d0543d..f81d03f 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -310,8 +310,8 @@
   // The explicit host paths should get set to /*.
   AddPattern(&explicit_hosts, "http://www.example.com/a/particular/path/*");
 
-  PermissionSet perm_set(apis, manifest_permissions, explicit_hosts,
-                         scriptable_hosts);
+  PermissionSet perm_set(std::move(apis), std::move(manifest_permissions),
+                         explicit_hosts, scriptable_hosts);
   ASSERT_TRUE(
       perm_set.HasExplicitAccessToOrigin(GURL("http://www.google.com/")));
   ASSERT_TRUE(
@@ -367,10 +367,10 @@
   AddPattern(&expected_explicit_hosts, "http://*.google.com/*");
   AddPattern(&effective_hosts, "http://*.google.com/*");
 
-  set1.reset(new PermissionSet(apis1, manifest_permissions, explicit_hosts1,
-                               scriptable_hosts1));
-  set2.reset(new PermissionSet(apis2, manifest_permissions, explicit_hosts2,
-                               scriptable_hosts2));
+  set1.reset(new PermissionSet(apis1.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts1, scriptable_hosts1));
+  set2.reset(new PermissionSet(apis2.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts2, scriptable_hosts2));
   union_set = PermissionSet::CreateUnion(*set1, *set2);
   EXPECT_TRUE(set1->Contains(*set2));
   EXPECT_TRUE(set1->Contains(*union_set));
@@ -422,8 +422,8 @@
   effective_hosts =
       URLPatternSet::CreateUnion(explicit_hosts2, scriptable_hosts2);
 
-  set2.reset(new PermissionSet(apis2, manifest_permissions, explicit_hosts2,
-                               scriptable_hosts2));
+  set2.reset(new PermissionSet(apis2.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts2, scriptable_hosts2));
   union_set = PermissionSet::CreateUnion(*set1, *set2);
 
   EXPECT_FALSE(set1->Contains(*set2));
@@ -480,10 +480,10 @@
   AddPattern(&explicit_hosts1, "http://*.google.com/*");
   AddPattern(&scriptable_hosts1, "http://www.reddit.com/*");
 
-  set1.reset(new PermissionSet(apis1, manifest_permissions, explicit_hosts1,
-                               scriptable_hosts1));
-  set2.reset(new PermissionSet(apis2, manifest_permissions, explicit_hosts2,
-                               scriptable_hosts2));
+  set1.reset(new PermissionSet(apis1.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts1, scriptable_hosts1));
+  set2.reset(new PermissionSet(apis2.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts2, scriptable_hosts2));
   new_set = PermissionSet::CreateIntersection(*set1, *set2);
   EXPECT_TRUE(set1->Contains(*new_set));
   EXPECT_TRUE(set2->Contains(*new_set));
@@ -530,8 +530,8 @@
   effective_hosts.ClearPatterns();
   AddPattern(&effective_hosts, "http://*.google.com/*");
 
-  set2.reset(new PermissionSet(apis2, manifest_permissions, explicit_hosts2,
-                               scriptable_hosts2));
+  set2.reset(new PermissionSet(apis2.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts2, scriptable_hosts2));
   new_set = PermissionSet::CreateIntersection(*set1, *set2);
 
   EXPECT_TRUE(set1->Contains(*new_set));
@@ -588,10 +588,10 @@
   AddPattern(&explicit_hosts1, "http://*.google.com/*");
   AddPattern(&scriptable_hosts1, "http://www.reddit.com/*");
 
-  set1.reset(new PermissionSet(apis1, manifest_permissions, explicit_hosts1,
-                               scriptable_hosts1));
-  set2.reset(new PermissionSet(apis2, manifest_permissions, explicit_hosts2,
-                               scriptable_hosts2));
+  set1.reset(new PermissionSet(apis1.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts1, scriptable_hosts1));
+  set2.reset(new PermissionSet(apis2.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts2, scriptable_hosts2));
   new_set = PermissionSet::CreateDifference(*set1, *set2);
   EXPECT_EQ(*set1, *new_set);
 
@@ -626,8 +626,8 @@
   effective_hosts.ClearPatterns();
   AddPattern(&effective_hosts, "http://www.reddit.com/*");
 
-  set2.reset(new PermissionSet(apis2, manifest_permissions, explicit_hosts2,
-                               scriptable_hosts2));
+  set2.reset(new PermissionSet(apis2.Clone(), manifest_permissions.Clone(),
+                               explicit_hosts2, scriptable_hosts2));
   new_set = PermissionSet::CreateDifference(*set1, *set2);
 
   EXPECT_TRUE(set1->Contains(*new_set));
@@ -719,13 +719,13 @@
      IsNotPrivilegeIncreaseWhenSwitchingForLowerPrivilegePermission) {
   APIPermissionSet apis1;
   apis1.insert(APIPermission::kHistory);
-  PermissionSet permissions1(apis1, ManifestPermissionSet(), URLPatternSet(),
-                             URLPatternSet());
+  PermissionSet permissions1(apis1.Clone(), ManifestPermissionSet(),
+                             URLPatternSet(), URLPatternSet());
 
   APIPermissionSet apis2;
   apis2.insert(APIPermission::kTopSites);
-  PermissionSet permissions2(apis2, ManifestPermissionSet(), URLPatternSet(),
-                             URLPatternSet());
+  PermissionSet permissions2(apis2.Clone(), ManifestPermissionSet(),
+                             URLPatternSet(), URLPatternSet());
 
   EXPECT_FALSE(PermissionMessageProvider::Get()->IsPrivilegeIncrease(
       permissions1, permissions2, Manifest::TYPE_EXTENSION));
@@ -906,7 +906,7 @@
   APIPermissionSet api_permissions;
   api_permissions.insert(APIPermission::kFileSystemWrite);
   api_permissions.insert(APIPermission::kFileSystemDirectory);
-  PermissionSet permissions(api_permissions, ManifestPermissionSet(),
+  PermissionSet permissions(api_permissions.Clone(), ManifestPermissionSet(),
                             URLPatternSet(), URLPatternSet());
   EXPECT_TRUE(
       PermissionSetProducesMessage(permissions, Manifest::TYPE_PLATFORM_APP,
@@ -917,7 +917,7 @@
   APIPermissionSet api_permissions;
   api_permissions.insert(APIPermission::kFileSystemWrite);
   api_permissions.insert(APIPermission::kFileSystemDirectory);
-  PermissionSet permissions(api_permissions, ManifestPermissionSet(),
+  PermissionSet permissions(api_permissions.Clone(), ManifestPermissionSet(),
                             URLPatternSet(), URLPatternSet());
   EXPECT_TRUE(
       PermissionSetProducesMessage(permissions, Manifest::TYPE_PLATFORM_APP,
@@ -932,8 +932,8 @@
     URLPatternSet hosts;
     hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI,
                                 "chrome://favicon/"));
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(), hosts,
-                              URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), hosts, URLPatternSet());
     EXPECT_TRUE(PermissionSetProducesMessage(
         permissions, Manifest::TYPE_EXTENSION,
         MakePermissionIDSet(APIPermission::kTab, APIPermission::kFavicon)));
@@ -945,8 +945,8 @@
     URLPatternSet hosts;
     hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI,
                                 "chrome://favicon/"));
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(), hosts,
-                              URLPatternSet());
+    PermissionSet permissions(api_permissions.Clone(), ManifestPermissionSet(),
+                              hosts, URLPatternSet());
     EXPECT_TRUE(PermissionSetProducesMessage(
         permissions, Manifest::TYPE_EXTENSION,
         MakePermissionIDSet(APIPermission::kHistory, APIPermission::kFavicon)));
@@ -957,8 +957,8 @@
     api_permissions.insert(APIPermission::kTab);
     URLPatternSet hosts;
     hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(), hosts,
-                              URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), hosts, URLPatternSet());
     EXPECT_TRUE(PermissionSetProducesMessage(
         permissions, Manifest::TYPE_EXTENSION,
         MakePermissionIDSet(APIPermission::kHostsAll, APIPermission::kTab)));
@@ -969,8 +969,8 @@
     api_permissions.insert(APIPermission::kTopSites);
     URLPatternSet hosts;
     hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(), hosts,
-                              URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), hosts, URLPatternSet());
     EXPECT_TRUE(PermissionSetProducesMessage(
         permissions, Manifest::TYPE_EXTENSION,
         MakePermissionIDSet(APIPermission::kHostsAll,
@@ -982,8 +982,8 @@
     api_permissions.insert(APIPermission::kDeclarativeWebRequest);
     URLPatternSet hosts;
     hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(), hosts,
-                              URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), hosts, URLPatternSet());
     EXPECT_TRUE(PermissionSetProducesMessage(
         permissions, Manifest::TYPE_EXTENSION,
         MakePermissionIDSet(APIPermission::kHostsAll)));
@@ -996,7 +996,7 @@
     api_permissions.insert(APIPermission::kTopSites);
     api_permissions.insert(APIPermission::kProcesses);
     api_permissions.insert(APIPermission::kWebNavigation);
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(),
+    PermissionSet permissions(api_permissions.Clone(), ManifestPermissionSet(),
                               URLPatternSet(), URLPatternSet());
     EXPECT_TRUE(
         PermissionSetProducesMessage(permissions, Manifest::TYPE_EXTENSION,
@@ -1009,7 +1009,7 @@
     api_permissions.insert(APIPermission::kTopSites);
     api_permissions.insert(APIPermission::kProcesses);
     api_permissions.insert(APIPermission::kWebNavigation);
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(),
+    PermissionSet permissions(api_permissions.Clone(), ManifestPermissionSet(),
                               URLPatternSet(), URLPatternSet());
     EXPECT_TRUE(
         PermissionSetProducesMessage(permissions, Manifest::TYPE_EXTENSION,
@@ -1021,8 +1021,9 @@
   {
     APIPermissionSet api_permissions;
     api_permissions.insert(APIPermission::kSerial);
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(),
-                              URLPatternSet(), URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), URLPatternSet(),
+                              URLPatternSet());
     VerifyOnePermissionMessage(
         permissions, Manifest::TYPE_EXTENSION,
         l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL));
@@ -1032,8 +1033,9 @@
     APIPermissionSet api_permissions;
     api_permissions.insert(APIPermission::kSerial);
     api_permissions.insert(APIPermission::kSerial);
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(),
-                              URLPatternSet(), URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), URLPatternSet(),
+                              URLPatternSet());
     VerifyOnePermissionMessage(
         permissions, Manifest::TYPE_EXTENSION,
         l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL));
@@ -1059,22 +1061,22 @@
 TEST(PermissionsTest, MergedFileSystemPermissionComparison) {
   APIPermissionSet write_api_permissions;
   write_api_permissions.insert(APIPermission::kFileSystemWrite);
-  PermissionSet write_permissions(write_api_permissions,
+  PermissionSet write_permissions(write_api_permissions.Clone(),
                                   ManifestPermissionSet(), URLPatternSet(),
                                   URLPatternSet());
 
   APIPermissionSet directory_api_permissions;
   directory_api_permissions.insert(APIPermission::kFileSystemDirectory);
-  PermissionSet directory_permissions(directory_api_permissions,
+  PermissionSet directory_permissions(directory_api_permissions.Clone(),
                                       ManifestPermissionSet(), URLPatternSet(),
                                       URLPatternSet());
 
   APIPermissionSet write_directory_api_permissions;
   write_directory_api_permissions.insert(APIPermission::kFileSystemWrite);
   write_directory_api_permissions.insert(APIPermission::kFileSystemDirectory);
-  PermissionSet write_directory_permissions(write_directory_api_permissions,
-                                            ManifestPermissionSet(),
-                                            URLPatternSet(), URLPatternSet());
+  PermissionSet write_directory_permissions(
+      write_directory_api_permissions.Clone(), ManifestPermissionSet(),
+      URLPatternSet(), URLPatternSet());
 
   const PermissionMessageProvider* provider = PermissionMessageProvider::Get();
   EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions,
@@ -1157,8 +1159,9 @@
     api_permissions.insert(APIPermission::kProcesses);
     api_permissions.insert(APIPermission::kWebNavigation);
     api_permissions.insert(APIPermission::kSessions);
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(),
-                              URLPatternSet(), URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), URLPatternSet(),
+                              URLPatternSet());
     EXPECT_TRUE(VerifyOnePermissionMessage(
         permissions, Manifest::TYPE_EXTENSION,
         l10n_util::GetStringUTF16(
@@ -1172,8 +1175,9 @@
     api_permissions.insert(APIPermission::kProcesses);
     api_permissions.insert(APIPermission::kWebNavigation);
     api_permissions.insert(APIPermission::kSessions);
-    PermissionSet permissions(api_permissions, ManifestPermissionSet(),
-                              URLPatternSet(), URLPatternSet());
+    PermissionSet permissions(std::move(api_permissions),
+                              ManifestPermissionSet(), URLPatternSet(),
+                              URLPatternSet());
     EXPECT_TRUE(VerifyOnePermissionMessage(
         permissions, Manifest::TYPE_EXTENSION,
         l10n_util::GetStringUTF16(
@@ -1455,7 +1459,6 @@
   {
     SCOPED_TRACE("scriptable hosts");
 
-    APIPermissionSet empty_perms;
     explicit_hosts.ClearPatterns();
     URLPatternSet scriptable_hosts;
     expected.clear();
@@ -1468,8 +1471,8 @@
     expected.insert("*.google.com");
     expected.insert("*.example.com");
 
-    PermissionSet perm_set(empty_perms, ManifestPermissionSet(), explicit_hosts,
-                           scriptable_hosts);
+    PermissionSet perm_set(APIPermissionSet(), ManifestPermissionSet(),
+                           explicit_hosts, scriptable_hosts);
     EXPECT_EQ(expected, permission_message_util::GetDistinctHosts(
                             perm_set.effective_hosts(), true, true));
   }
@@ -1671,8 +1674,6 @@
        true,
        false},
   };
-  const ManifestPermissionSet empty_manifest_permissions;
-  const APIPermissionSet empty_permissions;
   const URLPatternSet empty_scriptable_hosts;
   const PermissionMessageProvider* provider = PermissionMessageProvider::Get();
   for (size_t i = 0; i < base::size(test_cases); ++i) {
@@ -1687,9 +1688,9 @@
       explicit_hosts2.AddPattern(
           URLPattern(final_host.schemes, final_host.pattern));
     }
-    const PermissionSet set1(empty_permissions, empty_manifest_permissions,
+    const PermissionSet set1(APIPermissionSet(), ManifestPermissionSet(),
                              explicit_hosts1, empty_scriptable_hosts);
-    const PermissionSet set2(empty_permissions, empty_manifest_permissions,
+    const PermissionSet set2(APIPermissionSet(), ManifestPermissionSet(),
                              explicit_hosts2, empty_scriptable_hosts);
     EXPECT_EQ(test_case.is_increase,
               provider->IsPrivilegeIncrease(set1, set2, test_case.type))
@@ -1709,7 +1710,8 @@
   apis.insert(APIPermission::kNotifications);
   apis.insert(APIPermission::kTab);
 
-  PermissionSet perm_set(apis, ManifestPermissionSet(), empty_set, empty_set);
+  PermissionSet perm_set(apis.Clone(), ManifestPermissionSet(), empty_set,
+                         empty_set);
   std::set<std::string> api_names = perm_set.GetAPIsAsStrings();
 
   // The result is correct if it has the same number of elements
@@ -1720,32 +1722,32 @@
 }
 
 TEST(PermissionsTest, IsEmpty) {
-  APIPermissionSet empty_apis;
   URLPatternSet empty_extent;
 
   std::unique_ptr<const PermissionSet> empty(new PermissionSet());
   EXPECT_TRUE(empty->IsEmpty());
   std::unique_ptr<const PermissionSet> perm_set;
 
-  perm_set.reset(new PermissionSet(empty_apis, ManifestPermissionSet(),
+  perm_set.reset(new PermissionSet(APIPermissionSet(), ManifestPermissionSet(),
                                    empty_extent, empty_extent));
   EXPECT_TRUE(perm_set->IsEmpty());
 
   APIPermissionSet non_empty_apis;
   non_empty_apis.insert(APIPermission::kBackground);
-  perm_set.reset(new PermissionSet(non_empty_apis, ManifestPermissionSet(),
-                                   empty_extent, empty_extent));
+  perm_set.reset(new PermissionSet(std::move(non_empty_apis),
+                                   ManifestPermissionSet(), empty_extent,
+                                   empty_extent));
   EXPECT_FALSE(perm_set->IsEmpty());
 
   // Try non standard host
   URLPatternSet non_empty_extent;
   AddPattern(&non_empty_extent, "http://www.google.com/*");
 
-  perm_set.reset(new PermissionSet(empty_apis, ManifestPermissionSet(),
+  perm_set.reset(new PermissionSet(APIPermissionSet(), ManifestPermissionSet(),
                                    non_empty_extent, empty_extent));
   EXPECT_FALSE(perm_set->IsEmpty());
 
-  perm_set.reset(new PermissionSet(empty_apis, ManifestPermissionSet(),
+  perm_set.reset(new PermissionSet(APIPermissionSet(), ManifestPermissionSet(),
                                    empty_extent, non_empty_extent));
   EXPECT_FALSE(perm_set->IsEmpty());
 }
@@ -1756,7 +1758,7 @@
   apis.insert(APIPermission::kFileBrowserHandler);
   EXPECT_EQ(1U, apis.size());
 
-  PermissionSet perm_set(apis, ManifestPermissionSet(), empty_extent,
+  PermissionSet perm_set(std::move(apis), ManifestPermissionSet(), empty_extent,
                          empty_extent);
   EXPECT_EQ(2U, perm_set.apis().size());
 }
diff --git a/chrome/common/extensions/permissions/permissions_data_unittest.cc b/chrome/common/extensions/permissions/permissions_data_unittest.cc
index bfcb864..1791c46 100644
--- a/chrome/common/extensions/permissions/permissions_data_unittest.cc
+++ b/chrome/common/extensions/permissions/permissions_data_unittest.cc
@@ -779,8 +779,9 @@
     URLPatternSet tab_hosts;
     tab_hosts.AddOrigin(UserScript::ValidUserScriptSchemes(),
                         settings_url.GetOrigin());
-    PermissionSet tab_permissions(tab_api_permissions, ManifestPermissionSet(),
-                                  tab_hosts, tab_hosts);
+    PermissionSet tab_permissions(std::move(tab_api_permissions),
+                                  ManifestPermissionSet(), tab_hosts,
+                                  tab_hosts);
     active_tab->permissions_data()->UpdateTabSpecificPermissions(
         kTabId, tab_permissions);
   }
@@ -805,8 +806,9 @@
     URLPatternSet tab_hosts;
     tab_hosts.AddOrigin(UserScript::ValidUserScriptSchemes(),
                         file_url.GetOrigin());
-    PermissionSet tab_permissions(tab_api_permissions, ManifestPermissionSet(),
-                                  tab_hosts, tab_hosts);
+    PermissionSet tab_permissions(std::move(tab_api_permissions),
+                                  ManifestPermissionSet(), tab_hosts,
+                                  tab_hosts);
     active_tab->permissions_data()->UpdateTabSpecificPermissions(
         kTabId, tab_permissions);
   }
@@ -1076,8 +1078,9 @@
     URLPatternSet tab_hosts;
     tab_hosts.AddOrigin(UserScript::ValidUserScriptSchemes(),
                         url::Origin::Create(url).GetURL());
-    PermissionSet tab_permissions(tab_api_permissions, ManifestPermissionSet(),
-                                  tab_hosts, tab_hosts);
+    PermissionSet tab_permissions(std::move(tab_api_permissions),
+                                  ManifestPermissionSet(), tab_hosts,
+                                  tab_hosts);
     active_tab_->permissions_data()->UpdateTabSpecificPermissions(
         kTabId, tab_permissions);
   }
diff --git a/chrome/renderer/extensions/chrome_extensions_renderer_client.cc b/chrome/renderer/extensions/chrome_extensions_renderer_client.cc
index 0bca2ad..53d7dc1f 100644
--- a/chrome/renderer/extensions/chrome_extensions_renderer_client.cc
+++ b/chrome/renderer/extensions/chrome_extensions_renderer_client.cc
@@ -105,14 +105,8 @@
       return false;
   }
 
-  // Only consider keeping non-app URLs in an app process if this window
-  // has an opener (in which case it might be an OAuth popup that tries to
-  // script an iframe within the app).
-  bool should_consider_workaround = !!frame->Opener();
-
   return extensions::CrossesExtensionProcessBoundary(
-      *extension_registry->GetMainThreadExtensionSet(), old_url, new_url,
-      should_consider_workaround);
+      *extension_registry->GetMainThreadExtensionSet(), old_url, new_url);
 }
 
 }  // namespace
diff --git a/chrome/renderer/extensions/extension_process_policy.cc b/chrome/renderer/extensions/extension_process_policy.cc
index 0f6417c..38342dd 100644
--- a/chrome/renderer/extensions/extension_process_policy.cc
+++ b/chrome/renderer/extensions/extension_process_policy.cc
@@ -27,39 +27,12 @@
 
 bool CrossesExtensionProcessBoundary(const ExtensionSet& extensions,
                                      const GURL& old_url,
-                                     const GURL& new_url,
-                                     bool should_consider_workaround) {
+                                     const GURL& new_url) {
   const extensions::Extension* old_url_extension =
       GetNonBookmarkAppExtension(extensions, old_url);
   const extensions::Extension* new_url_extension =
       GetNonBookmarkAppExtension(extensions, new_url);
 
-  // TODO(creis): Temporary workaround for crbug.com/59285: Do not swap process
-  // to navigate from a hosted app to a normal page or another hosted app
-  // (unless either is the web store).  This is because some OAuth providers
-  // use non-app popups that communicate with non-app iframes inside the app
-  // (e.g., Facebook).  This would require out-of-process iframes to support.
-  // See http://crbug.com/99379.
-  // Note that we skip this exception for isolated apps, which require strict
-  // process separation from non-app pages.
-  if (should_consider_workaround) {
-    bool old_url_is_hosted_app =
-        old_url_extension && !old_url_extension->web_extent().is_empty() &&
-        !AppIsolationInfo::HasIsolatedStorage(old_url_extension);
-    bool new_url_is_normal_or_hosted =
-        !new_url_extension ||
-        (!new_url_extension->web_extent().is_empty() &&
-         !AppIsolationInfo::HasIsolatedStorage(new_url_extension));
-    bool either_is_web_store =
-        (old_url_extension &&
-         old_url_extension->id() == extensions::kWebStoreAppId) ||
-        (new_url_extension &&
-         new_url_extension->id() == extensions::kWebStoreAppId);
-    if (old_url_is_hosted_app && new_url_is_normal_or_hosted &&
-        !either_is_web_store)
-      return false;
-  }
-
   // If there are no extensions associated with either url, we check if the new
   // url points to an extension origin. If it does, fork - extension
   // installation should not be a factor.
diff --git a/chrome/renderer/extensions/extension_process_policy.h b/chrome/renderer/extensions/extension_process_policy.h
index 5ff477b..d7605f3 100644
--- a/chrome/renderer/extensions/extension_process_policy.h
+++ b/chrome/renderer/extensions/extension_process_policy.h
@@ -20,13 +20,9 @@
 // Check if navigating a toplevel page from |old_url| to |new_url| would cross
 // an extension process boundary (e.g. navigating from a web URL into an
 // extension URL).
-// We temporarily consider a workaround where we will keep non-app URLs in
-// an app process, but only if |should_consider_workaround| is true.  See
-// http://crbug.com/59285.
 bool CrossesExtensionProcessBoundary(const ExtensionSet& extensions,
                                      const GURL& old_url,
-                                     const GURL& new_url,
-                                     bool should_consider_workaround);
+                                     const GURL& new_url);
 
 }  // namespace extensions
 
diff --git a/chrome/renderer/extensions/extension_process_policy_unittest.cc b/chrome/renderer/extensions/extension_process_policy_unittest.cc
index c3f840d..af68735 100644
--- a/chrome/renderer/extensions/extension_process_policy_unittest.cc
+++ b/chrome/renderer/extensions/extension_process_policy_unittest.cc
@@ -38,12 +38,12 @@
 
   GURL web_url("https://example.com");
 
-  EXPECT_TRUE(CrossesExtensionProcessBoundary(extensions, web_url,
-                                              extension1->url(), false));
+  EXPECT_TRUE(
+      CrossesExtensionProcessBoundary(extensions, web_url, extension1->url()));
   EXPECT_TRUE(CrossesExtensionProcessBoundary(extensions, extension1->url(),
-                                              extension2->url(), false));
-  EXPECT_TRUE(CrossesExtensionProcessBoundary(extensions, extension1->url(),
-                                              web_url, false));
+                                              extension2->url()));
+  EXPECT_TRUE(
+      CrossesExtensionProcessBoundary(extensions, extension1->url(), web_url));
 }
 
 TEST(CrossesExtensionBoundaryTest, UninstalledExtensions) {
@@ -54,10 +54,10 @@
   GURL non_existent_extension_url("chrome-extension://" + std::string(32, 'a') +
                                   "/foo");
 
-  EXPECT_TRUE(CrossesExtensionProcessBoundary(
-      extensions, web_url, non_existent_extension_url, false));
-  EXPECT_TRUE(CrossesExtensionProcessBoundary(
-      extensions, extension1->url(), non_existent_extension_url, false));
+  EXPECT_TRUE(CrossesExtensionProcessBoundary(extensions, web_url,
+                                              non_existent_extension_url));
+  EXPECT_TRUE(CrossesExtensionProcessBoundary(extensions, extension1->url(),
+                                              non_existent_extension_url));
 }
 
 }  // namespace extensions
diff --git a/chrome/renderer/pepper/pepper_flash_renderer_host.cc b/chrome/renderer/pepper/pepper_flash_renderer_host.cc
index 42248ea..d7084ac 100644
--- a/chrome/renderer/pepper/pepper_flash_renderer_host.cc
+++ b/chrome/renderer/pepper/pepper_flash_renderer_host.cc
@@ -256,7 +256,7 @@
 
   SkPaint paint;
   paint.setColor(params.color);
-  paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+  paint.setTextEncoding(kGlyphID_SkTextEncoding);
   paint.setAntiAlias(true);
   paint.setHinting(SkFontHinting::kFull);
   paint.setTextSize(SkIntToScalar(params.font_desc.size));
diff --git a/chrome/services/diagnosticsd/public/mojom/OWNERS b/chrome/services/diagnosticsd/public/mojom/OWNERS
index 08850f4..0e2926f 100644
--- a/chrome/services/diagnosticsd/public/mojom/OWNERS
+++ b/chrome/services/diagnosticsd/public/mojom/OWNERS
@@ -1,2 +1,7 @@
 per-file *.mojom=set noparent
+
+# Primary:
+per-file *.mojom=mnissler@chromium.org
+
+# Backup reviewers:
 per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 608b8e7..b29d84e 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1749,8 +1749,6 @@
         "../browser/chromeos/login/test/https_forwarder.h",
         "../browser/chromeos/login/test/oobe_base_test.cc",
         "../browser/chromeos/login/test/oobe_base_test.h",
-        "../browser/chromeos/login/test/wizard_in_process_browser_test.cc",
-        "../browser/chromeos/login/test/wizard_in_process_browser_test.h",
         "../browser/chromeos/login/ui/captive_portal_window_browsertest.cc",
         "../browser/chromeos/login/ui/login_feedback_browsertest.cc",
         "../browser/chromeos/login/ui/login_web_dialog_browsertest.cc",
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/SigninTestUtil.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/SigninTestUtil.java
index c0a56ef5..75f34fc 100644
--- a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/SigninTestUtil.java
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/signin/SigninTestUtil.java
@@ -58,6 +58,7 @@
             sAccountManager.removeAccountHolderBlocking(accountHolder);
         }
         sAddedAccounts.clear();
+        resetSigninState();
     }
 
     /**
diff --git a/chrome/test/chromedriver/element_commands.cc b/chrome/test/chromedriver/element_commands.cc
index bce057f..b4941459 100644
--- a/chrome/test/chromedriver/element_commands.cc
+++ b/chrome/test/chromedriver/element_commands.cc
@@ -100,7 +100,7 @@
   std::string id;
   if (params.GetString("id", &id) || params.GetString("element", &id))
     return command.Run(session, web_view, id, params, value);
-  return Status(kUnknownError, "element identifier must be a string");
+  return Status(kInvalidArgument, "element identifier must be a string");
 }
 
 Status ExecuteFindChildElement(int interval_ms,
@@ -258,13 +258,13 @@
 
   int xoffset, yoffset, speed;
   if (!params.GetInteger("xoffset", &xoffset))
-    return Status(kUnknownError, "'xoffset' must be an integer");
+    return Status(kInvalidArgument, "'xoffset' must be an integer");
   if (!params.GetInteger("yoffset", &yoffset))
-    return Status(kUnknownError, "'yoffset' must be an integer");
+    return Status(kInvalidArgument, "'yoffset' must be an integer");
   if (!params.GetInteger("speed", &speed))
-    return Status(kUnknownError, "'speed' must be an integer");
+    return Status(kInvalidArgument, "'speed' must be an integer");
   if (speed < 1)
-    return Status(kUnknownError, "'speed' must be a positive integer");
+    return Status(kInvalidArgument, "'speed' must be a positive integer");
 
   status = web_view->DispatchTouchEvent(
       TouchEvent(kTouchStart, location.x, location.y));
@@ -337,7 +337,7 @@
     key_list = &key_list_local;
   } else {
     if (!params.GetList("value", &key_list))
-      return Status(kUnknownError, "'value' must be a list");
+      return Status(kInvalidArgument, "'value' must be a list");
   }
 
   bool is_input = false;
@@ -361,7 +361,7 @@
     for (size_t i = 0; i < key_list->GetSize(); ++i) {
       base::FilePath::StringType path_part;
       if (!key_list->GetString(i, &path_part))
-        return Status(kUnknownError, "'value' is invalid");
+        return Status(kInvalidArgument, "'value' is invalid");
       paths_string.append(path_part);
     }
 
@@ -452,7 +452,7 @@
 
   std::string name;
   if (!params.GetString("name", &name))
-    return Status(kUnknownError, "missing 'name'");
+    return Status(kInvalidArgument, "missing 'name'");
   args.AppendString(name);
 
   return web_view->CallFunction(
@@ -632,7 +632,7 @@
                                   std::unique_ptr<base::Value>* value) {
   std::string name;
   if (!params.GetString("name", &name))
-    return Status(kUnknownError, "missing 'name'");
+    return Status(kInvalidArgument, "missing 'name'");
   return GetElementAttribute(session, web_view, element_id, name, value);
 }
 
@@ -652,7 +652,7 @@
   } else {
     std::string property_name;
     if (!params.GetString("propertyName", &property_name))
-      return Status(kUnknownError, "missing 'propertyName'");
+      return Status(kInvalidArgument, "missing 'propertyName'");
     std::string property_value;
     status = GetElementEffectiveStyle(
         session, web_view, element_id, property_name, &property_value);
@@ -670,7 +670,7 @@
                             std::unique_ptr<base::Value>* value) {
   std::string other_element_id;
   if (!params.GetString("other", &other_element_id))
-    return Status(kUnknownError, "'other' must be a string");
+    return Status(kInvalidArgument, "'other' must be a string");
   value->reset(new base::Value(element_id == other_element_id));
   return Status(kOk);
 }
diff --git a/chrome/test/chromedriver/session_commands.cc b/chrome/test/chromedriver/session_commands.cc
index 2c7df760..dae051e 100644
--- a/chrome/test/chromedriver/session_commands.cc
+++ b/chrome/test/chromedriver/session_commands.cc
@@ -523,7 +523,7 @@
                         std::unique_ptr<base::Value>* value) {
   std::string id;
   if (!params.GetString("id", &id))
-    return Status(kUnknownError, "'id' must be a string");
+    return Status(kInvalidArgument, "'id' must be a string");
 
   ChromeDesktopImpl* desktop = NULL;
   Status status = session->chrome->GetAsDesktop(&desktop);
@@ -595,7 +595,7 @@
       return Status(kInvalidArgument, "'handle' must be a string");
   } else {
     if (!params.GetString("name", &name))
-      return Status(kUnknownError, "'name' must be a string");
+      return Status(kInvalidArgument, "'name' must be a string");
   }
 
   std::list<std::string> web_view_ids;
@@ -690,10 +690,10 @@
                                std::unique_ptr<base::Value>* value) {
   double ms_double;
   if (!params.GetDouble("ms", &ms_double))
-    return Status(kUnknownError, "'ms' must be a double");
+    return Status(kInvalidArgument, "'ms' must be a double");
   std::string type;
   if (!params.GetString("type", &type))
-    return Status(kUnknownError, "'type' must be a string");
+    return Status(kInvalidArgument, "'type' must be a string");
 
   base::TimeDelta timeout =
       base::TimeDelta::FromMilliseconds(static_cast<int>(ms_double));
@@ -706,7 +706,7 @@
         ((timeout < base::TimeDelta()) ? Session::kDefaultPageLoadTimeout
                                        : timeout);
   } else {
-    return Status(kUnknownError, "unknown type of timeout:" + type);
+    return Status(kInvalidArgument, "unknown type of timeout:" + type);
   }
   return Status(kOk);
 }
@@ -763,7 +763,7 @@
                                std::unique_ptr<base::Value>* value) {
   double ms;
   if (!params.GetDouble("ms", &ms) || ms < 0)
-    return Status(kUnknownError, "'ms' must be a non-negative number");
+    return Status(kInvalidArgument, "'ms' must be a non-negative number");
   session->script_timeout =
       base::TimeDelta::FromMilliseconds(static_cast<int>(ms));
   return Status(kOk);
@@ -774,7 +774,7 @@
                              std::unique_ptr<base::Value>* value) {
   double ms;
   if (!params.GetDouble("ms", &ms) || ms < 0)
-    return Status(kUnknownError, "'ms' must be a non-negative number");
+    return Status(kInvalidArgument, "'ms' must be a non-negative number");
   session->implicit_wait =
       base::TimeDelta::FromMilliseconds(static_cast<int>(ms));
   return Status(kOk);
@@ -870,7 +870,7 @@
 
   int connection_type;
   if (!params.GetInteger("parameters.type", &connection_type))
-    return Status(kUnknownError, "invalid connection_type");
+    return Status(kInvalidArgument, "invalid connection_type");
 
   desktop->SetNetworkConnection(connection_type);
 
@@ -951,7 +951,7 @@
   double x = 0;
   double y = 0;
   if (!params.GetDouble("x", &x) || !params.GetDouble("y", &y))
-    return Status(kUnknownError, "missing or invalid 'x' or 'y'");
+    return Status(kInvalidArgument, "missing or invalid 'x' or 'y'");
 
   return session->chrome->SetWindowPosition(session->window,
                                             static_cast<int>(x),
@@ -982,7 +982,7 @@
   double height = 0;
   if (!params.GetDouble("width", &width) ||
       !params.GetDouble("height", &height))
-    return Status(kUnknownError, "missing or invalid 'width' or 'height'");
+    return Status(kInvalidArgument, "missing or invalid 'width' or 'height'");
 
   return session->chrome->SetWindowSize(session->window,
                                         static_cast<int>(width),
@@ -1008,7 +1008,7 @@
                      std::unique_ptr<base::Value>* value) {
   std::string log_type;
   if (!params.GetString("type", &log_type)) {
-    return Status(kUnknownError, "missing or invalid 'type'");
+    return Status(kInvalidArgument, "missing or invalid 'type'");
   }
 
   // Evaluate a JavaScript in the renderer process for the current tab, to flush
@@ -1031,7 +1031,7 @@
       return Status(kOk);
     }
   }
-  return Status(kUnknownError, "log type '" + log_type + "' not found");
+  return Status(kInvalidArgument, "log type '" + log_type + "' not found");
 }
 
 Status ExecuteUploadFile(Session* session,
@@ -1039,7 +1039,7 @@
                          std::unique_ptr<base::Value>* value) {
   std::string base64_zip_data;
   if (!params.GetString("file", &base64_zip_data))
-    return Status(kUnknownError, "missing or invalid 'file'");
+    return Status(kInvalidArgument, "missing or invalid 'file'");
   std::string zip_data;
   if (!Base64Decode(base64_zip_data, &zip_data))
     return Status(kUnknownError, "unable to decode 'file'");
@@ -1076,7 +1076,7 @@
                                std::unique_ptr<base::Value>* value) {
   bool enabled;
   if (!params.GetBoolean("enabled", &enabled))
-    return Status(kUnknownError, "missing parameter 'enabled'");
+    return Status(kInvalidArgument, "missing parameter 'enabled'");
   session->auto_reporting_enabled = enabled;
   return Status(kOk);
 }
diff --git a/chrome/test/chromedriver/session_commands_unittest.cc b/chrome/test/chromedriver/session_commands_unittest.cc
index b33c6e2..37b9addd 100644
--- a/chrome/test/chromedriver/session_commands_unittest.cc
+++ b/chrome/test/chromedriver/session_commands_unittest.cc
@@ -418,7 +418,7 @@
 
   // an error should be given if the |enabled| parameter is not set
   status_code = ExecuteSetAutoReporting(&session, params, &value).code();
-  ASSERT_EQ(kUnknownError, status_code);
+  ASSERT_EQ(kInvalidArgument, status_code);
 
   // try to enable autoreporting
   params.SetBoolean("enabled", true);
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index 3d917e7..d724bae 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -1316,7 +1316,7 @@
   def testSendCommandNoParams(self):
     """Sends a custom command to the DevTools debugger without params"""
     self.assertRaisesRegexp(
-            chromedriver.UnknownError, "params not passed",
+            chromedriver.InvalidArgument, "params not passed",
             self._driver.SendCommandAndGetResult, 'CSS.enable', None)
 
   def testSendCommandAndGetResult(self):
diff --git a/chrome/test/chromedriver/window_commands.cc b/chrome/test/chromedriver/window_commands.cc
index 6c8c9de..97d96e0 100644
--- a/chrome/test/chromedriver/window_commands.cc
+++ b/chrome/test/chromedriver/window_commands.cc
@@ -59,7 +59,7 @@
   if (!params.GetInteger("button", &button_num)) {
     button_num = 0;  // Default to left mouse button.
   } else if (button_num < 0 || button_num > 2) {
-    return Status(kUnknownError,
+    return Status(kInvalidArgument,
                   base::StringPrintf("invalid button: %d", button_num));
   }
   *button = static_cast<MouseButton>(button_num);
@@ -248,9 +248,9 @@
     const base::DictionaryValue& params) {
   int x, y;
   if (!params.GetInteger("x", &x))
-    return Status(kUnknownError, "'x' must be an integer");
+    return Status(kInvalidArgument, "'x' must be an integer");
   if (!params.GetInteger("y", &y))
-    return Status(kUnknownError, "'y' must be an integer");
+    return Status(kInvalidArgument, "'y' must be an integer");
   int relative_x = x;
   int relative_y = y;
   Status status = ScrollCoordinateInToView(
@@ -417,7 +417,7 @@
                             Timeout* timeout) {
   const base::Value* id;
   if (!params.Get("id", &id))
-    return Status(kUnknownError, "missing 'id'");
+    return Status(kInvalidArgument, "missing 'id'");
 
   if (id->is_none()) {
     session->SwitchToTopFrame();
@@ -430,7 +430,7 @@
   if (id->GetAsDictionary(&id_dict)) {
     std::string element_id;
     if (!id_dict->GetString(GetElementKey(), &element_id))
-      return Status(kUnknownError, "missing 'ELEMENT'");
+      return Status(kInvalidArgument, "missing 'ELEMENT'");
     bool is_displayed = false;
     Status status = IsElementDisplayed(
           session, web_view, element_id, true, &is_displayed);
@@ -453,7 +453,7 @@
     } else if (id->GetAsInteger(&id_int)) {
       xpath += base::StringPrintf("[%d]", id_int + 1);
     } else {
-      return Status(kUnknownError, "invalid 'id'");
+      return Status(kInvalidArgument, "invalid 'id'");
     }
     args.AppendString(xpath);
   }
@@ -633,7 +633,8 @@
   bool has_offset = params.GetInteger("xoffset", &x_offset) &&
       params.GetInteger("yoffset", &y_offset);
   if (!has_element && !has_offset)
-    return Status(kUnknownError, "at least an element or offset should be set");
+    return Status(kInvalidArgument,
+                  "at least an element or offset should be set");
 
   WebPoint location;
   if (has_element) {
@@ -778,10 +779,10 @@
   }
   int xoffset;
   if (!params.GetInteger("xoffset", &xoffset))
-    return Status(kUnknownError, "'xoffset' must be an integer");
+    return Status(kInvalidArgument, "'xoffset' must be an integer");
   int yoffset;
   if (!params.GetInteger("yoffset", &yoffset))
-    return Status(kUnknownError, "'yoffset' must be an integer");
+    return Status(kInvalidArgument, "'yoffset' must be an integer");
   return web_view->SynthesizeScrollGesture(
       location.x, location.y, xoffset, yoffset);
 }
@@ -793,12 +794,12 @@
                          Timeout* timeout) {
   WebPoint location;
   if (!params.GetInteger("x", &location.x))
-    return Status(kUnknownError, "'x' must be an integer");
+    return Status(kInvalidArgument, "'x' must be an integer");
   if (!params.GetInteger("y", &location.y))
-    return Status(kUnknownError, "'y' must be an integer");
+    return Status(kInvalidArgument, "'y' must be an integer");
   double scale_factor;
   if (!params.GetDouble("scale", &scale_factor))
-    return Status(kUnknownError, "'scale' must be an integer");
+    return Status(kInvalidArgument, "'scale' must be an integer");
   return web_view->SynthesizePinchGesture(location.x, location.y, scale_factor);
 }
 
@@ -1200,11 +1201,11 @@
                           Timeout* timeout) {
   std::string cmd;
   if (!params.GetString("cmd", &cmd)) {
-    return Status(kUnknownError, "command not passed");
+    return Status(kInvalidArgument, "command not passed");
   }
   const base::DictionaryValue* cmdParams;
   if (!params.GetDictionary("params", &cmdParams)) {
-    return Status(kUnknownError, "params not passed");
+    return Status(kInvalidArgument, "params not passed");
   }
   return web_view->SendCommand(cmd, *cmdParams);
 }
@@ -1216,11 +1217,11 @@
                                       Timeout* timeout) {
   std::string cmd;
   if (!params.GetString("cmd", &cmd)) {
-    return Status(kUnknownError, "command not passed");
+    return Status(kInvalidArgument, "command not passed");
   }
   const base::DictionaryValue* cmdParams;
   if (!params.GetDictionary("params", &cmdParams)) {
-    return Status(kUnknownError, "params not passed");
+    return Status(kInvalidArgument, "params not passed");
   }
   return web_view->SendCommandAndGetResult(cmd, *cmdParams, value);
 }
@@ -1240,7 +1241,7 @@
                                       Timeout* timeout) {
   const base::ListValue* key_list;
   if (!params.GetList("value", &key_list))
-    return Status(kUnknownError, "'value' must be a list");
+    return Status(kInvalidArgument, "'value' must be a list");
   return SendKeysOnWindow(
       web_view, key_list, false, &session->sticky_modifiers);
 }
@@ -1275,7 +1276,7 @@
                              Timeout* timeout) {
   std::string key;
   if (!params.GetString("key", &key))
-    return Status(kUnknownError, "'key' must be a string");
+    return Status(kInvalidArgument, "'key' must be a string");
   base::ListValue args;
   args.AppendString(key);
   return web_view->CallFunction(
@@ -1312,10 +1313,10 @@
                              Timeout* timeout) {
   std::string key;
   if (!params.GetString("key", &key))
-    return Status(kUnknownError, "'key' must be a string");
+    return Status(kInvalidArgument, "'key' must be a string");
   std::string storage_value;
   if (!params.GetString("value", &storage_value))
-    return Status(kUnknownError, "'value' must be a string");
+    return Status(kInvalidArgument, "'value' must be a string");
   base::ListValue args;
   args.AppendString(key);
   args.AppendString(storage_value);
@@ -1334,7 +1335,7 @@
                                 Timeout* timeout) {
   std::string key;
   if (!params.GetString("key", &key))
-    return Status(kUnknownError, "'key' must be a string");
+    return Status(kInvalidArgument, "'key' must be a string");
   base::ListValue args;
   args.AppendString(key);
   return web_view->CallFunction(
@@ -1430,7 +1431,7 @@
                              Timeout* timeout) {
   std::string name;
   if (!params.GetString("name", &name))
-    return Status(kUnknownError, "missing 'cookie name'");
+    return Status(kInvalidArgument, "missing 'cookie name'");
 
   std::list<Cookie> cookies;
   Status status = GetVisibleCookies(web_view, &cookies);
@@ -1454,7 +1455,7 @@
                         Timeout* timeout) {
   const base::DictionaryValue* cookie;
   if (!params.GetDictionary("cookie", &cookie))
-    return Status(kUnknownError, "missing 'cookie'");
+    return Status(kInvalidArgument, "missing 'cookie'");
   std::string name;
   std::string cookie_value;
   if (!cookie->GetString("name", &name))
@@ -1488,7 +1489,7 @@
                            Timeout* timeout) {
   std::string name;
   if (!params.GetString("name", &name))
-    return Status(kUnknownError, "missing 'name'");
+    return Status(kInvalidArgument, "missing 'name'");
   base::DictionaryValue params_url;
   std::unique_ptr<base::Value> value_url;
   std::string url;
@@ -1550,10 +1551,10 @@
   if (!params.GetDictionary("location", &location) ||
       !location->GetDouble("latitude", &geoposition.latitude) ||
       !location->GetDouble("longitude", &geoposition.longitude))
-    return Status(kUnknownError, "missing or invalid 'location'");
+    return Status(kInvalidArgument, "missing or invalid 'location'");
   if (location->HasKey("accuracy") &&
       !location->GetDouble("accuracy", &geoposition.accuracy)) {
-    return Status(kUnknownError, "invalid 'accuracy'");
+    return Status(kInvalidArgument, "invalid 'accuracy'");
   } else {
     // |accuracy| is not part of the WebDriver spec yet, so if it is not given
     // default to 100 meters accuracy.
@@ -1583,7 +1584,7 @@
   } else if (params.GetDictionary("network_conditions", &conditions)) {
     // |latency| is required.
     if (!conditions->GetDouble("latency", &network_conditions->latency))
-      return Status(kUnknownError,
+      return Status(kInvalidArgument,
                     "invalid 'network_conditions' is missing 'latency'");
 
     // Either |throughput| or the pair |download_throughput| and
@@ -1591,7 +1592,7 @@
     if (conditions->HasKey("throughput")) {
       if (!conditions->GetDouble("throughput",
                                  &network_conditions->download_throughput))
-        return Status(kUnknownError, "invalid 'throughput'");
+        return Status(kInvalidArgument, "invalid 'throughput'");
       conditions->GetDouble("throughput",
                             &network_conditions->upload_throughput);
     } else if (conditions->HasKey("download_throughput") &&
@@ -1600,10 +1601,10 @@
                                  &network_conditions->download_throughput) ||
           !conditions->GetDouble("upload_throughput",
                                  &network_conditions->upload_throughput))
-        return Status(kUnknownError,
+        return Status(kInvalidArgument,
                       "invalid 'download_throughput' or 'upload_throughput'");
     } else {
-      return Status(kUnknownError,
+      return Status(kInvalidArgument,
                     "invalid 'network_conditions' is missing 'throughput' or "
                     "'download_throughput'/'upload_throughput' pair");
     }
@@ -1611,12 +1612,12 @@
     // |offline| is optional.
     if (conditions->HasKey("offline")) {
       if (!conditions->GetBoolean("offline", &network_conditions->offline))
-        return Status(kUnknownError, "invalid 'offline'");
+        return Status(kInvalidArgument, "invalid 'offline'");
     } else {
       network_conditions->offline = false;
     }
   } else {
-    return Status(kUnknownError,
+    return Status(kInvalidArgument,
                   "either 'network_conditions' or 'network_name' must be "
                   "supplied");
   }
diff --git a/components/arc/BUILD.gn b/components/arc/BUILD.gn
index 7c90eb3..836d1633 100644
--- a/components/arc/BUILD.gn
+++ b/components/arc/BUILD.gn
@@ -153,6 +153,10 @@
     "arc_bridge_service.cc",
     "arc_bridge_service.h",
     "arc_browser_context_keyed_service_factory_base.h",
+    "arc_client_adapter.cc",
+    "arc_client_adapter.h",
+    "arc_container_client_adapter.cc",
+    "arc_container_client_adapter.h",
     "arc_data_remover.cc",
     "arc_data_remover.h",
     "arc_features.cc",
@@ -169,6 +173,8 @@
     "arc_session_runner.h",
     "arc_util.cc",
     "arc_util.h",
+    "arc_vm_client_adapter.cc",
+    "arc_vm_client_adapter.h",
   ]
 
   deps = [
diff --git a/components/arc/arc_client_adapter.cc b/components/arc/arc_client_adapter.cc
new file mode 100644
index 0000000..0e3cff58
--- /dev/null
+++ b/components/arc/arc_client_adapter.cc
@@ -0,0 +1,30 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/arc/arc_client_adapter.h"
+
+#include "components/arc/arc_container_client_adapter.h"
+#include "components/arc/arc_util.h"
+#include "components/arc/arc_vm_client_adapter.h"
+
+namespace arc {
+
+ArcClientAdapter::ArcClientAdapter() = default;
+ArcClientAdapter::~ArcClientAdapter() = default;
+
+void ArcClientAdapter::AddObserver(Observer* observer) {
+  observer_list_.AddObserver(observer);
+}
+
+void ArcClientAdapter::RemoveObserver(Observer* observer) {
+  observer_list_.RemoveObserver(observer);
+}
+
+// static
+std::unique_ptr<ArcClientAdapter> ArcClientAdapter::Create() {
+  return IsArcVmEnabled() ? CreateArcVmClientAdapter()
+                          : CreateArcContainerClientAdapter();
+}
+
+}  // namespace arc
diff --git a/components/arc/arc_client_adapter.h b/components/arc/arc_client_adapter.h
new file mode 100644
index 0000000..a8add82
--- /dev/null
+++ b/components/arc/arc_client_adapter.h
@@ -0,0 +1,78 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_ARC_ARC_CLIENT_ADAPTER_H_
+#define COMPONENTS_ARC_ARC_CLIENT_ADAPTER_H_
+
+#include <memory>
+#include <string>
+
+#include "base/callback_forward.h"
+#include "base/macros.h"
+#include "base/observer_list.h"
+#include "base/optional.h"
+#include "chromeos/dbus/login_manager/arc.pb.h"
+#include "chromeos/dbus/session_manager_client.h"
+
+namespace arc {
+
+// TODO(yusukes): Move the enum and proto in system_api/ from login_manager's
+// namespace to arc and remove all the type aliases.
+using ArcContainerStopReason = login_manager::ArcContainerStopReason;
+using StartArcMiniContainerRequest =
+    login_manager::StartArcMiniContainerRequest;
+using UpgradeArcContainerRequest = login_manager::UpgradeArcContainerRequest;
+
+// An adapter to talk to a Chrome OS daemon to manage lifetime of ARC instance.
+class ArcClientAdapter {
+ public:
+  class Observer {
+   public:
+    virtual ~Observer() = default;
+    virtual void ArcInstanceStopped(ArcContainerStopReason stop_reason,
+                                    const std::string& instance_id) = 0;
+  };
+
+  // Creates a default instance of ArcClientAdapter.
+  static std::unique_ptr<ArcClientAdapter> Create();
+  virtual ~ArcClientAdapter();
+
+  // StartMiniArc starts ARC with only a handful of ARC processes for Chrome OS
+  // login screen.  In case of success, callback will be called with
+  // |instance_id| set to a string.  The ID is passed to ArcInstanceStopped()
+  // to identify which instance is stopped. In case of error, |instance_id| will
+  // be nullopt.
+  using StartMiniArcCallback =
+      base::OnceCallback<void(base::Optional<std::string> instance_id)>;
+  virtual void StartMiniArc(const StartArcMiniContainerRequest& request,
+                            StartMiniArcCallback callback) = 0;
+
+  // UpgradeArc upgrades a mini ARC instance to a full ARC instance. In case of
+  // success, success_callback is called. In case of error, |error_callback|
+  // will be called with a |low_free_disk_space| signaling whether the failure
+  // was due to low free disk space.
+  using UpgradeErrorCallback =
+      base::OnceCallback<void(bool low_free_disk_space)>;
+  virtual void UpgradeArc(const UpgradeArcContainerRequest& request,
+                          base::OnceClosure success_callback,
+                          UpgradeErrorCallback error_callback) = 0;
+
+  // Asynchronously stops the ARC instance.
+  virtual void StopArcInstance() = 0;
+
+  void AddObserver(Observer* observer);
+  void RemoveObserver(Observer* observer);
+
+ protected:
+  ArcClientAdapter();
+
+  base::ObserverList<Observer>::Unchecked observer_list_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ArcClientAdapter);
+};
+
+}  // namespace arc
+
+#endif  // COMPONENTS_ARC_ARC_CLIENT_ADAPTER_H_
diff --git a/components/arc/arc_container_client_adapter.cc b/components/arc/arc_container_client_adapter.cc
new file mode 100644
index 0000000..d9f08c6
--- /dev/null
+++ b/components/arc/arc_container_client_adapter.cc
@@ -0,0 +1,86 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/arc/arc_container_client_adapter.h"
+
+#include <string>
+#include <utility>
+
+#include "base/logging.h"
+#include "base/macros.h"
+#include "chromeos/dbus/dbus_method_call_status.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/dbus/login_manager/arc.pb.h"
+#include "chromeos/dbus/session_manager_client.h"
+
+namespace arc {
+
+namespace {
+
+chromeos::SessionManagerClient* GetSessionManagerClient() {
+  // If the DBusThreadManager or the SessionManagerClient aren't available,
+  // there isn't much we can do. This should only happen when running tests.
+  if (!chromeos::DBusThreadManager::IsInitialized() ||
+      !chromeos::DBusThreadManager::Get() ||
+      !chromeos::DBusThreadManager::Get()->GetSessionManagerClient()) {
+    return nullptr;
+  }
+  return chromeos::DBusThreadManager::Get()->GetSessionManagerClient();
+}
+
+}  // namespace
+
+class ArcContainerClientAdapter
+    : public ArcClientAdapter,
+      public chromeos::SessionManagerClient::Observer {
+ public:
+  ArcContainerClientAdapter() {
+    chromeos::SessionManagerClient* client = GetSessionManagerClient();
+    if (client)
+      client->AddObserver(this);
+  }
+
+  ~ArcContainerClientAdapter() override {
+    chromeos::SessionManagerClient* client = GetSessionManagerClient();
+    if (client)
+      client->RemoveObserver(this);
+  }
+
+  // ArcClientAdapter overrides:
+  void StartMiniArc(const StartArcMiniContainerRequest& request,
+                    StartMiniArcCallback callback) override {
+    GetSessionManagerClient()->StartArcMiniContainer(request,
+                                                     std::move(callback));
+  }
+
+  void UpgradeArc(const UpgradeArcContainerRequest& request,
+                  base::OnceClosure success_callback,
+                  UpgradeErrorCallback error_callback) override {
+    GetSessionManagerClient()->UpgradeArcContainer(
+        request, std::move(success_callback), std::move(error_callback));
+  }
+
+  void StopArcInstance() override {
+    // Since we have the ArcInstanceStopped() callback, we don't need to do
+    // anything when StopArcInstance completes.
+    GetSessionManagerClient()->StopArcInstance(
+        chromeos::EmptyVoidDBusMethodCallback());
+  }
+
+  // chromeos::SessionManagerClient::Observer overrides:
+  void ArcInstanceStopped(login_manager::ArcContainerStopReason stop_reason,
+                          const std::string& container_instance_id) override {
+    for (auto& observer : observer_list_)
+      observer.ArcInstanceStopped(stop_reason, container_instance_id);
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ArcContainerClientAdapter);
+};
+
+std::unique_ptr<ArcClientAdapter> CreateArcContainerClientAdapter() {
+  return std::make_unique<ArcContainerClientAdapter>();
+}
+
+}  // namespace arc
diff --git a/components/arc/arc_container_client_adapter.h b/components/arc/arc_container_client_adapter.h
new file mode 100644
index 0000000..9451df2
--- /dev/null
+++ b/components/arc/arc_container_client_adapter.h
@@ -0,0 +1,19 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_ARC_ARC_CONTAINER_CLIENT_ADAPTER_H_
+#define COMPONENTS_ARC_ARC_CONTAINER_CLIENT_ADAPTER_H_
+
+#include <memory>
+
+#include "components/arc/arc_client_adapter.h"
+
+namespace arc {
+
+// Returns an adapter for talking to session_manager via D-Bus.
+std::unique_ptr<ArcClientAdapter> CreateArcContainerClientAdapter();
+
+}  // namespace arc
+
+#endif  // COMPONENTS_ARC_ARC_CONTAINER_CLIENT_ADAPTER_H_
diff --git a/components/arc/arc_session_impl.cc b/components/arc/arc_session_impl.cc
index 46e0403c..3faf412 100644
--- a/components/arc/arc_session_impl.cc
+++ b/components/arc/arc_session_impl.cc
@@ -23,8 +23,6 @@
 #include "base/task/task_traits.h"
 #include "chromeos/chromeos_switches.h"
 #include "chromeos/cryptohome/cryptohome_parameters.h"
-#include "chromeos/dbus/dbus_method_call_status.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/login_manager/arc.pb.h"
 #include "components/arc/arc_bridge_host_impl.h"
 #include "components/arc/arc_features.h"
@@ -44,17 +42,6 @@
 constexpr char kArcBridgeSocketPath[] = "/run/chrome/arc_bridge.sock";
 constexpr char kArcBridgeSocketGroup[] = "arc-bridge";
 
-chromeos::SessionManagerClient* GetSessionManagerClient() {
-  // If the DBusThreadManager or the SessionManagerClient aren't available,
-  // there isn't much we can do. This should only happen when running tests.
-  if (!chromeos::DBusThreadManager::IsInitialized() ||
-      !chromeos::DBusThreadManager::Get() ||
-      !chromeos::DBusThreadManager::Get()->GetSessionManagerClient()) {
-    return nullptr;
-  }
-  return chromeos::DBusThreadManager::Get()->GetSessionManagerClient();
-}
-
 std::string GenerateRandomToken() {
   char random_bytes[16];
   base::RandBytes(random_bytes, 16);
@@ -343,20 +330,17 @@
 }
 
 ArcSessionImpl::ArcSessionImpl(std::unique_ptr<Delegate> delegate)
-    : delegate_(std::move(delegate)), weak_factory_(this) {
-  chromeos::SessionManagerClient* client = GetSessionManagerClient();
-  if (client == nullptr)
-    return;
-  client->AddObserver(this);
+    : delegate_(std::move(delegate)),
+      client_(ArcClientAdapter::Create()),
+      weak_factory_(this) {
+  DCHECK(client_);
+  client_->AddObserver(this);
 }
 
 ArcSessionImpl::~ArcSessionImpl() {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(state_ == State::NOT_STARTED || state_ == State::STOPPED);
-  chromeos::SessionManagerClient* client = GetSessionManagerClient();
-  if (client == nullptr)
-    return;
-  client->RemoveObserver(this);
+  client_->RemoveObserver(this);
 }
 
 void ArcSessionImpl::StartMiniInstance() {
@@ -375,7 +359,7 @@
   DCHECK_GT(lcd_density, 0);
   DCHECK_EQ(state_, State::WAITING_FOR_LCD_DENSITY);
   state_ = State::STARTING_MINI_INSTANCE;
-  login_manager::StartArcMiniContainerRequest request;
+  StartArcMiniContainerRequest request;
   request.set_native_bridge_experiment(
       base::FeatureList::IsEnabled(arc::kNativeBridgeExperimentFeature));
   request.set_arc_file_picker_experiment(
@@ -385,10 +369,9 @@
   VLOG(1) << "Starting ARC mini instance with lcd_density="
           << request.lcd_density();
 
-  chromeos::SessionManagerClient* client = GetSessionManagerClient();
-  client->StartArcMiniContainer(
-      request, base::BindOnce(&ArcSessionImpl::OnMiniInstanceStarted,
-                              weak_factory_.GetWeakPtr()));
+  client_->StartMiniArc(request,
+                        base::BindOnce(&ArcSessionImpl::OnMiniInstanceStarted,
+                                       weak_factory_.GetWeakPtr()));
 }
 
 void ArcSessionImpl::RequestUpgrade(UpgradeParams params) {
@@ -476,7 +459,7 @@
   }
 
   VLOG(2) << "Socket is created. Starting ARC container";
-  login_manager::UpgradeArcContainerRequest request;
+  UpgradeArcContainerRequest request;
   user_manager::UserManager* user_manager = user_manager::UserManager::Get();
   DCHECK(user_manager->GetPrimaryUser());
 
@@ -524,8 +507,7 @@
 
   request.set_create_socket_in_chrome(true);
 
-  chromeos::SessionManagerClient* client = GetSessionManagerClient();
-  client->UpgradeArcContainer(
+  client_->UpgradeArc(
       request,
       base::BindOnce(&ArcSessionImpl::OnUpgraded, weak_factory_.GetWeakPtr(),
                      std::move(socket_fd)),
@@ -645,14 +627,11 @@
 
   // When the instance is full instance, change the |state_| in
   // ArcInstanceStopped().
-  chromeos::SessionManagerClient* client = GetSessionManagerClient();
-  // Since we have the ArcInstanceStopped() callback, we don't need to do
-  // anything when StopArcInstance completes.
-  client->StopArcInstance(chromeos::EmptyVoidDBusMethodCallback());
+  client_->StopArcInstance();
 }
 
 void ArcSessionImpl::ArcInstanceStopped(
-    login_manager::ArcContainerStopReason stop_reason,
+    ArcContainerStopReason stop_reason,
     const std::string& container_instance_id) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   VLOG(1) << "Notified that ARC instance is stopped "
@@ -678,12 +657,11 @@
     // If the ARC instance is stopped after its explicit request,
     // return SHUTDOWN.
     reason = ArcStopReason::SHUTDOWN;
-  } else if (stop_reason ==
-             login_manager::ArcContainerStopReason::LOW_DISK_SPACE) {
+  } else if (stop_reason == ArcContainerStopReason::LOW_DISK_SPACE) {
     // ARC mini container is stopped because of upgarde failure due to low
     // disk space.
     reason = ArcStopReason::LOW_DISK_SPACE;
-  } else if (stop_reason != login_manager::ArcContainerStopReason::CRASH) {
+  } else if (stop_reason != ArcContainerStopReason::CRASH) {
     // If the ARC instance is stopped, but it is not explicitly requested,
     // then this is triggered by some failure during the starting procedure.
     // Return GENERIC_BOOT_FAILURE for the case.
diff --git a/components/arc/arc_session_impl.h b/components/arc/arc_session_impl.h
index 2eaf7d88..250e4de 100644
--- a/components/arc/arc_session_impl.h
+++ b/components/arc/arc_session_impl.h
@@ -17,7 +17,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/optional.h"
 #include "base/threading/thread_checker.h"
-#include "chromeos/dbus/session_manager_client.h"
+#include "components/arc/arc_client_adapter.h"
 #include "components/arc/arc_session.h"
 
 namespace ash {
@@ -30,8 +30,7 @@
 class ArcBridgeHost;
 }  // namespace mojom
 
-class ArcSessionImpl : public ArcSession,
-                       public chromeos::SessionManagerClient::Observer {
+class ArcSessionImpl : public ArcSession, public ArcClientAdapter::Observer {
  public:
   // The possible states of the session. Expected state changes are as follows.
   //
@@ -201,8 +200,8 @@
   // Request to stop ARC instance via DBus.
   void StopArcInstance();
 
-  // chromeos::SessionManagerClient::Observer:
-  void ArcInstanceStopped(login_manager::ArcContainerStopReason stop_reason,
+  // ArcClientAdapter::Observer:
+  void ArcInstanceStopped(ArcContainerStopReason stop_reason,
                           const std::string& container_instance_id) override;
 
   // Completes the termination procedure. Note that calling this may end up with
@@ -219,6 +218,9 @@
   // Delegate implementation.
   std::unique_ptr<Delegate> delegate_;
 
+  // An adapter to talk to the OS daemon.
+  std::unique_ptr<ArcClientAdapter> client_;
+
   // The state of the session.
   State state_ = State::NOT_STARTED;
 
diff --git a/components/arc/arc_vm_client_adapter.cc b/components/arc/arc_vm_client_adapter.cc
new file mode 100644
index 0000000..a15e1a4
--- /dev/null
+++ b/components/arc/arc_vm_client_adapter.cc
@@ -0,0 +1,85 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/arc/arc_vm_client_adapter.h"
+
+#include <string>
+#include <utility>
+
+#include "base/bind.h"
+#include "base/logging.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/task/post_task.h"
+#include "chromeos/dbus/session_manager_client.h"
+
+namespace arc {
+
+namespace {
+
+// TODO(yusukes): Move ArcContainerStopReason to arc:: and remove the #include.
+constexpr login_manager::ArcContainerStopReason kDummyReason =
+    login_manager::ArcContainerStopReason::SESSION_MANAGER_SHUTDOWN;
+constexpr char kDummyInstanceId[] = "dummyinstanceid";
+
+}  // namespace
+
+class ArcVmClientAdapter : public ArcClientAdapter {
+ public:
+  ArcVmClientAdapter() : weak_factory_(this) {}
+  ~ArcVmClientAdapter() override = default;
+
+  // ArcClientAdapter overrides:
+  void StartMiniArc(const StartArcMiniContainerRequest& request,
+                    StartMiniArcCallback callback) override {
+    // TODO(yusukes): Support mini ARC.
+    VLOG(2) << "Mini ARC instance is not supported yet.";
+    base::PostTask(
+        FROM_HERE,
+        base::BindOnce(&ArcVmClientAdapter::OnArcMiniInstanceStarted,
+                       weak_factory_.GetWeakPtr(), std::move(callback)));
+  }
+
+  void UpgradeArc(const UpgradeArcContainerRequest& request,
+                  base::OnceClosure success_callback,
+                  UpgradeErrorCallback error_callback) override {
+    // TODO(yusukes): Start arcvm.
+    base::PostTask(
+        FROM_HERE,
+        base::BindOnce(&ArcVmClientAdapter::OnArcInstanceUpgradeFailed,
+                       weak_factory_.GetWeakPtr(), std::move(error_callback)));
+  }
+
+  void StopArcInstance() override {
+    // TODO(yusukes): Stop arcvm.
+    base::PostTask(FROM_HERE,
+                   base::BindOnce(&ArcVmClientAdapter::OnArcInstanceStopped,
+                                  weak_factory_.GetWeakPtr()));
+  }
+
+ private:
+  void OnArcMiniInstanceStarted(StartMiniArcCallback callback) {
+    std::move(callback).Run(kDummyInstanceId);
+  }
+
+  void OnArcInstanceUpgradeFailed(UpgradeErrorCallback callback) {
+    std::move(callback).Run(/*low_free_disk_space=*/false);
+  }
+
+  void OnArcInstanceStopped() {
+    for (auto& observer : observer_list_)
+      observer.ArcInstanceStopped(kDummyReason, kDummyInstanceId);
+  }
+
+  // For callbacks.
+  base::WeakPtrFactory<ArcVmClientAdapter> weak_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(ArcVmClientAdapter);
+};
+
+std::unique_ptr<ArcClientAdapter> CreateArcVmClientAdapter() {
+  return std::make_unique<ArcVmClientAdapter>();
+}
+
+}  // namespace arc
diff --git a/components/arc/arc_vm_client_adapter.h b/components/arc/arc_vm_client_adapter.h
new file mode 100644
index 0000000..4e10f4f4
--- /dev/null
+++ b/components/arc/arc_vm_client_adapter.h
@@ -0,0 +1,19 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_ARC_ARC_VM_CLIENT_ADAPTER_H_
+#define COMPONENTS_ARC_ARC_VM_CLIENT_ADAPTER_H_
+
+#include <memory>
+
+#include "components/arc/arc_client_adapter.h"
+
+namespace arc {
+
+// Returns an adapter for arcvm.
+std::unique_ptr<ArcClientAdapter> CreateArcVmClientAdapter();
+
+}  // namespace arc
+
+#endif  // COMPONENTS_ARC_ARC_VM_CLIENT_ADAPTER_H_
diff --git a/components/autofill/content/common/autofill_types.mojom b/components/autofill/content/common/autofill_types.mojom
index 4b784fbe6..ea443f0 100644
--- a/components/autofill/content/common/autofill_types.mojom
+++ b/components/autofill/content/common/autofill_types.mojom
@@ -102,6 +102,15 @@
   ERROR_NOT_ALLOWED,
 };
 
+// autofill::ButtonTitleType
+enum ButtonTitleType {
+  NONE,
+  BUTTON_ELEMENT_SUBMIT_TYPE,
+  BUTTON_ELEMENT_BUTTON_TYPE,
+  INPUT_ELEMENT_SUBMIT_TYPE,
+  INPUT_ELEMENT_BUTTON_TYPE
+};
+
 // autofill::FormFieldData
 struct FormFieldData {
   mojo_base.mojom.String16 label;
@@ -136,12 +145,17 @@
   LabelSource label_source;
 };
 
+struct ButtonTitleInfo {
+  mojo_base.mojom.String16 title;
+  ButtonTitleType type;
+};
+
 // autofill::FormData
 struct FormData {
   mojo_base.mojom.String16 id_attribute;
   mojo_base.mojom.String16 name_attribute;
   mojo_base.mojom.String16 name;
-  mojo_base.mojom.String16 button_title;
+  array<ButtonTitleInfo> button_titles;
   // TODO(crbug.com/788181): Either change type to Origin or rename to URL.
   url.mojom.Url origin;
   url.mojom.Url action;
diff --git a/components/autofill/content/common/autofill_types_struct_traits.cc b/components/autofill/content/common/autofill_types_struct_traits.cc
index 7007561..9ea94763d 100644
--- a/components/autofill/content/common/autofill_types_struct_traits.cc
+++ b/components/autofill/content/common/autofill_types_struct_traits.cc
@@ -527,6 +527,51 @@
 }
 
 // static
+autofill::mojom::ButtonTitleType EnumTraits<
+    autofill::mojom::ButtonTitleType,
+    autofill::ButtonTitleType>::ToMojom(autofill::ButtonTitleType input) {
+  switch (input) {
+    case autofill::ButtonTitleType::NONE:
+      return autofill::mojom::ButtonTitleType::NONE;
+    case autofill::ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE:
+      return autofill::mojom::ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE;
+    case autofill::ButtonTitleType::BUTTON_ELEMENT_BUTTON_TYPE:
+      return autofill::mojom::ButtonTitleType::BUTTON_ELEMENT_BUTTON_TYPE;
+    case autofill::ButtonTitleType::INPUT_ELEMENT_SUBMIT_TYPE:
+      return autofill::mojom::ButtonTitleType::INPUT_ELEMENT_SUBMIT_TYPE;
+    case autofill::ButtonTitleType::INPUT_ELEMENT_BUTTON_TYPE:
+      return autofill::mojom::ButtonTitleType::INPUT_ELEMENT_BUTTON_TYPE;
+  }
+  NOTREACHED();
+  return autofill::mojom::ButtonTitleType::NONE;
+}
+
+// static
+bool EnumTraits<autofill::mojom::ButtonTitleType, autofill::ButtonTitleType>::
+    FromMojom(autofill::mojom::ButtonTitleType input,
+              autofill::ButtonTitleType* output) {
+  switch (input) {
+    case autofill::mojom::ButtonTitleType::NONE:
+      *output = autofill::ButtonTitleType::NONE;
+      return true;
+    case autofill::mojom::ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE:
+      *output = autofill::ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE;
+      return true;
+    case autofill::mojom::ButtonTitleType::BUTTON_ELEMENT_BUTTON_TYPE:
+      *output = autofill::ButtonTitleType::BUTTON_ELEMENT_BUTTON_TYPE;
+      return true;
+    case autofill::mojom::ButtonTitleType::INPUT_ELEMENT_SUBMIT_TYPE:
+      *output = autofill::ButtonTitleType::INPUT_ELEMENT_SUBMIT_TYPE;
+      return true;
+    case autofill::mojom::ButtonTitleType::INPUT_ELEMENT_BUTTON_TYPE:
+      *output = autofill::ButtonTitleType::INPUT_ELEMENT_BUTTON_TYPE;
+      return true;
+  }
+  NOTREACHED();
+  return false;
+}
+
+// static
 bool StructTraits<
     autofill::mojom::FormFieldDataDataView,
     autofill::FormFieldData>::Read(autofill::mojom::FormFieldDataDataView data,
@@ -596,6 +641,14 @@
 }
 
 // static
+bool StructTraits<autofill::mojom::ButtonTitleInfoDataView,
+                  autofill::ButtonTitleInfo>::
+    Read(autofill::mojom::ButtonTitleInfoDataView data,
+         autofill::ButtonTitleInfo* out) {
+  return data.ReadTitle(&out->first) && data.ReadType(&out->second);
+}
+
+// static
 bool StructTraits<autofill::mojom::FormDataDataView, autofill::FormData>::Read(
     autofill::mojom::FormDataDataView data,
     autofill::FormData* out) {
@@ -605,7 +658,7 @@
     return false;
   if (!data.ReadName(&out->name))
     return false;
-  if (!data.ReadButtonTitle(&out->button_title))
+  if (!data.ReadButtonTitles(&out->button_titles))
     return false;
   if (!data.ReadOrigin(&out->origin))
     return false;
diff --git a/components/autofill/content/common/autofill_types_struct_traits.h b/components/autofill/content/common/autofill_types_struct_traits.h
index 81e57ef..100b81f 100644
--- a/components/autofill/content/common/autofill_types_struct_traits.h
+++ b/components/autofill/content/common/autofill_types_struct_traits.h
@@ -119,6 +119,14 @@
 };
 
 template <>
+struct EnumTraits<autofill::mojom::ButtonTitleType, autofill::ButtonTitleType> {
+  static autofill::mojom::ButtonTitleType ToMojom(
+      autofill::ButtonTitleType input);
+  static bool FromMojom(autofill::mojom::ButtonTitleType input,
+                        autofill::ButtonTitleType* output);
+};
+
+template <>
 struct StructTraits<autofill::mojom::FormFieldDataDataView,
                     autofill::FormFieldData> {
   static const base::string16& label(const autofill::FormFieldData& r) {
@@ -244,6 +252,22 @@
 };
 
 template <>
+struct StructTraits<autofill::mojom::ButtonTitleInfoDataView,
+                    autofill::ButtonTitleInfo> {
+  static const base::string16& title(const autofill::ButtonTitleInfo& r) {
+    return r.first;
+  }
+
+  static const autofill::ButtonTitleType& type(
+      const autofill::ButtonTitleInfo& r) {
+    return r.second;
+  }
+
+  static bool Read(autofill::mojom::ButtonTitleInfoDataView data,
+                   autofill::ButtonTitleInfo* out);
+};
+
+template <>
 struct StructTraits<autofill::mojom::FormDataDataView, autofill::FormData> {
   static const base::string16& id_attribute(const autofill::FormData& r) {
     return r.id_attribute;
@@ -257,8 +281,9 @@
     return r.name;
   }
 
-  static const base::string16& button_title(const autofill::FormData& r) {
-    return r.button_title;
+  static const autofill::ButtonTitleList& button_titles(
+      const autofill::FormData& r) {
+    return r.button_titles;
   }
 
   static const GURL& origin(const autofill::FormData& r) { return r.origin; }
diff --git a/components/autofill/content/common/autofill_types_struct_traits_unittest.cc b/components/autofill/content/common/autofill_types_struct_traits_unittest.cc
index d371c7e..35aa1af 100644
--- a/components/autofill/content/common/autofill_types_struct_traits_unittest.cc
+++ b/components/autofill/content/common/autofill_types_struct_traits_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/test/scoped_task_environment.h"
 #include "components/autofill/content/common/test_autofill_types.mojom.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
+#include "components/autofill/core/common/button_title_type.h"
 #include "components/autofill/core/common/form_data.h"
 #include "components/autofill/core/common/form_field_data.h"
 #include "components/autofill/core/common/password_generation_util.h"
@@ -379,6 +380,9 @@
   FormData input;
   test::CreateTestAddressFormData(&input);
   input.username_predictions = {1, 13, 2};
+  input.button_titles.push_back(
+      std::make_pair(base::ASCIIToUTF16("Sign-up"),
+                     autofill::ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE));
 
   base::RunLoop loop;
   mojom::TypeTraitsTestPtr proxy = GetTypeTraitsTestProxy();
diff --git a/components/autofill/content/renderer/form_autofill_util.cc b/components/autofill/content/renderer/form_autofill_util.cc
index ee74da2..1e2ec97 100644
--- a/components/autofill/content/renderer/form_autofill_util.cc
+++ b/components/autofill/content/renderer/form_autofill_util.cc
@@ -29,6 +29,7 @@
 #include "components/autofill/core/common/autofill_regexes.h"
 #include "components/autofill/core/common/autofill_switches.h"
 #include "components/autofill/core/common/autofill_util.h"
+#include "components/autofill/core/common/button_title_type.h"
 #include "components/autofill/core/common/form_data.h"
 #include "components/autofill/core/common/form_field_data.h"
 #include "third_party/blink/public/platform/url_conversion.h"
@@ -69,6 +70,11 @@
 
 namespace {
 
+// Maximal length of a button's title.
+const int kMaxLengthForSingleButtonTitle = 30;
+// Maximal length of all button titles.
+const int kMaxLengthForAllButtonTitles = 200;
+
 // A bit field mask for FillForm functions to not fill some fields.
 enum FieldFilterMask {
   FILTER_NONE                      = 0,
@@ -357,6 +363,26 @@
   return false;
 }
 
+// Helper function to add a button's |title| to the |list| and updates the
+// |total_length| of stored titles. Returns true iff the list still have free
+// capacity.
+bool AddButtonTitleToList(base::string16&& title,
+                          ButtonTitleType button_type,
+                          ButtonTitleList* list,
+                          int* total_length) {
+  if (*total_length >= kMaxLengthForAllButtonTitles)
+    return false;
+  if (title.empty())
+    return true;
+  title = base::CollapseWhitespace(std::move(title), false);
+  TruncateString(&title,
+                 std::min(kMaxLengthForSingleButtonTitle,
+                          kMaxLengthForAllButtonTitles - *total_length));
+  *total_length += title.length();
+  list->push_back(std::make_pair(std::move(title), button_type));
+  return *total_length < kMaxLengthForAllButtonTitles;
+}
+
 // Helper for |InferLabelForElement()| that infers a label, if possible, from
 // a previous sibling of |element|,
 // e.g. Some Text <input ...>
@@ -780,13 +806,14 @@
   return false;
 }
 
-base::string16 InferButtonTitleForForm(const WebFormElement& form_element) {
+ButtonTitleList InferButtonTitlesForForm(const WebFormElement& form_element) {
   static base::NoDestructor<WebString> kSubmit("submit");
   static base::NoDestructor<WebString> kButton("button");
 
-  base::string16 title;
+  ButtonTitleList result;
   WebVector<WebFormControlElement> control_elements;
   form_element.GetFormControlElements(control_elements);
+  int total_length = 0;
   for (const WebFormControlElement& control_element : control_elements) {
     bool is_submit_input =
         control_element.FormControlTypeForAutofill() == *kSubmit;
@@ -794,26 +821,37 @@
         control_element.FormControlTypeForAutofill() == *kButton;
     if (!is_submit_input && !is_button_input)
       continue;
-    if (!control_element.Value().IsEmpty())
-      title = control_element.Value().Utf16() +
-              base::ASCIIToUTF16(is_submit_input ? "$" : "#") + title;
-    if (title.length() >= kMaxDataLength)
+    base::string16&& title = control_element.Value().Utf16();
+    if (!AddButtonTitleToList(std::move(title),
+                              is_submit_input
+                                  ? ButtonTitleType::INPUT_ELEMENT_SUBMIT_TYPE
+                                  : ButtonTitleType::INPUT_ELEMENT_BUTTON_TYPE,
+                              &result, &total_length)) {
       break;
+    }
   }
   WebElementCollection buttons =
       form_element.GetElementsByHTMLTagName(*kButton);
   for (WebElement item = buttons.FirstItem();
-       !item.IsNull() && title.length() <= kMaxDataLength;
+       !item.IsNull() && total_length < kMaxLengthForAllButtonTitles;
        item = buttons.NextItem()) {
-    if (!item.TextContent().IsEmpty()) {
-      bool is_submit_button =
-          item.HasAttribute("type") && item.GetAttribute("type") == *kSubmit;
-      title = item.TextContent().Utf16() +
-              base::ASCIIToUTF16(is_submit_button ? "&" : "%") + title;
+    WebString type_attribute = item.GetAttribute("type");
+    if (!type_attribute.IsNull() && type_attribute != *kButton &&
+        type_attribute != *kSubmit) {
+      // Neither type='submit' nor type='button'. Skip this button.
+      continue;
+    }
+    bool is_submit_type = type_attribute.IsNull() || type_attribute == *kSubmit;
+    base::string16&& title = item.TextContent().Utf16();
+    if (!AddButtonTitleToList(std::move(title),
+                              is_submit_type
+                                  ? ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE
+                                  : ButtonTitleType::BUTTON_ELEMENT_BUTTON_TYPE,
+                              &result, &total_length)) {
+      break;
     }
   }
-  TruncateString(&title, kMaxDataLength);
-  return title;
+  return result;
 }
 
 // Fills |option_strings| with the values of the <option> elements present in
@@ -1647,7 +1685,7 @@
   form->unique_renderer_id = form_element.UniqueRendererFormId();
   form->origin = GetCanonicalOriginForDocument(frame->GetDocument());
   form->action = GetCanonicalActionForForm(form_element);
-  form->button_title = InferButtonTitleForForm(form_element);
+  form->button_titles = InferButtonTitlesForForm(form_element);
   if (frame->Top()) {
     form->main_frame_origin = frame->Top()->GetSecurityOrigin();
   } else {
@@ -2017,8 +2055,9 @@
   return InferLabelForElement(element, stop_words, label, label_source);
 }
 
-base::string16 InferButtonTitleForTesting(const WebFormElement& form_element) {
-  return InferButtonTitleForForm(form_element);
+ButtonTitleList InferButtonTitlesForTesting(
+    const WebFormElement& form_element) {
+  return InferButtonTitlesForForm(form_element);
 }
 
 WebFormElement FindFormByUniqueRendererId(WebDocument doc,
diff --git a/components/autofill/content/renderer/form_autofill_util.h b/components/autofill/content/renderer/form_autofill_util.h
index 3cfb4186c..1770086 100644
--- a/components/autofill/content/renderer/form_autofill_util.h
+++ b/components/autofill/content/renderer/form_autofill_util.h
@@ -278,7 +278,7 @@
                                     const std::vector<base::char16>& stop_words,
                                     base::string16* label,
                                     FormFieldData::LabelSource* label_source);
-base::string16 InferButtonTitleForTesting(
+ButtonTitleList InferButtonTitlesForTesting(
     const blink::WebFormElement& form_element);
 
 // Returns form by unique renderer id. Return null element if there is no form
diff --git a/components/autofill/content/renderer/form_autofill_util_browsertest.cc b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
index 136bb92..d615352 100644
--- a/components/autofill/content/renderer/form_autofill_util_browsertest.cc
+++ b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
@@ -267,31 +267,31 @@
 }
 
 TEST_F(FormAutofillUtilsTest, InferButtonTitleForFormTest) {
-  static const AutofillFieldUtilCase test_cases[] = {
-      {"<button>", "<form id='target'><button>Sign Up</button></form>",
-       "Sign Up%"},
-      {"<input type='submit'>",
-       "<form id='target'><input type='submit' value='Sign In'></form>",
-       "Sign In$"},
-      {"several labels",
-       "<form id='target'><button type='button'>Show "
-       "password</button><button type='submit'>Register</button></form>",
-       "Register&Show password%"}};
-  for (const auto& test_case : test_cases) {
-    SCOPED_TRACE(test_case.description);
-    LoadHTML(test_case.html);
-    WebLocalFrame* web_frame = GetMainFrame();
-    ASSERT_NE(nullptr, web_frame);
-    const WebElement& target =
-        web_frame->GetDocument().GetElementById("target");
-    ASSERT_FALSE(target.IsNull());
-    const WebFormElement& form_target = target.ToConst<WebFormElement>();
-    ASSERT_FALSE(form_target.IsNull());
+  const char kHtml[] =
+      "<form id='target'>"
+      "  <input type='button' value='\n Show\t password '>"
+      "  <button>Sign Up</button>"
+      "  <button type='button'>Register</button>"
+      "</form>";
 
-    base::string16 button_title =
-        autofill::form_util::InferButtonTitleForTesting(form_target);
-    EXPECT_EQ(base::UTF8ToUTF16(test_case.expected_label), button_title);
-  }
+  LoadHTML(kHtml);
+  WebLocalFrame* web_frame = GetMainFrame();
+  ASSERT_NE(nullptr, web_frame);
+  const WebElement& target = web_frame->GetDocument().GetElementById("target");
+  ASSERT_FALSE(target.IsNull());
+  const WebFormElement& form_target = target.ToConst<WebFormElement>();
+  ASSERT_FALSE(form_target.IsNull());
+
+  autofill::ButtonTitleList actual =
+      autofill::form_util::InferButtonTitlesForTesting(form_target);
+  autofill::ButtonTitleList expected = {
+      {base::UTF8ToUTF16("Show password"),
+       autofill::ButtonTitleType::INPUT_ELEMENT_BUTTON_TYPE},
+      {base::UTF8ToUTF16("Sign Up"),
+       autofill::ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE},
+      {base::UTF8ToUTF16("Register"),
+       autofill::ButtonTitleType::BUTTON_ELEMENT_BUTTON_TYPE}};
+  EXPECT_EQ(expected, actual);
 }
 
 TEST_F(FormAutofillUtilsTest, IsEnabled) {
diff --git a/components/autofill/core/browser/autofill_test_utils.cc b/components/autofill/core/browser/autofill_test_utils.cc
index 6be48ef..24ac934 100644
--- a/components/autofill/core/browser/autofill_test_utils.cc
+++ b/components/autofill/core/browser/autofill_test_utils.cc
@@ -113,7 +113,8 @@
                                const char* unique_id) {
   form->name =
       ASCIIToUTF16("MyForm") + ASCIIToUTF16(unique_id ? unique_id : "");
-  form->button_title = ASCIIToUTF16("Submit");
+  form->button_titles = {std::make_pair(
+      ASCIIToUTF16("Submit"), ButtonTitleType::BUTTON_ELEMENT_SUBMIT_TYPE)};
   form->origin = GURL("http://myform.com/form.html");
   form->action = GURL("http://myform.com/submit.html");
   form->main_frame_origin =
diff --git a/components/autofill/core/browser/form_structure.cc b/components/autofill/core/browser/form_structure.cc
index 4df2c16..6b0d96377 100644
--- a/components/autofill/core/browser/form_structure.cc
+++ b/components/autofill/core/browser/form_structure.cc
@@ -441,7 +441,7 @@
     : id_attribute_(form.id_attribute),
       name_attribute_(form.name_attribute),
       form_name_(form.name),
-      button_title_(form.button_title),
+      button_titles_(form.button_titles),
       submission_event_(SubmissionIndicatorEvent::NONE),
       source_url_(form.origin),
       target_url_(form.action),
@@ -571,6 +571,13 @@
     upload->set_action_signature(StrToHash64Bit(target_url_.host()));
     if (!form_name().empty())
       upload->set_form_name(base::UTF16ToUTF8(form_name()));
+    for (const ButtonTitleInfo& e : button_titles_) {
+      auto* button_title = upload->add_button_title();
+      button_title->set_title(base::UTF16ToUTF8(e.first));
+      button_title->set_type(
+          static_cast<AutofillUploadContents_ButtonTitle_ButtonTitleType>(
+              e.second));
+    }
   }
 
   if (!login_form_signature.empty()) {
diff --git a/components/autofill/core/browser/form_structure.h b/components/autofill/core/browser/form_structure.h
index 3226198..182458d 100644
--- a/components/autofill/core/browser/form_structure.h
+++ b/components/autofill/core/browser/form_structure.h
@@ -478,8 +478,8 @@
   // The name of the form.
   base::string16 form_name_;
 
-  // The title of form submission button.
-  base::string16 button_title_;
+  // The titles of form's buttons.
+  ButtonTitleList button_titles_;
 
   // The type of the event that was taken as an indication that the form has
   // been successfully submitted.
diff --git a/components/autofill/core/browser/proto/server.proto b/components/autofill/core/browser/proto/server.proto
index f627a3ba..74472b38 100644
--- a/components/autofill/core/browser/proto/server.proto
+++ b/components/autofill/core/browser/proto/server.proto
@@ -376,7 +376,8 @@
     // Text showed on the button.
     optional string title = 1;
 
-    // Describes how the button is implemented in HTML source.
+    // Describes how the button is implemented in HTML source. Corresponds to
+    // components/autofill/core/common/button_title_type.h
     enum ButtonTitleType {
       NONE = 0;
       BUTTON_ELEMENT_SUBMIT_TYPE = 1;  // <button type='submit'>
diff --git a/components/autofill/core/common/BUILD.gn b/components/autofill/core/common/BUILD.gn
index 8c39eef..0ff74d6c 100644
--- a/components/autofill/core/common/BUILD.gn
+++ b/components/autofill/core/common/BUILD.gn
@@ -25,6 +25,7 @@
     "autofill_switches.h",
     "autofill_util.cc",
     "autofill_util.h",
+    "button_title_type.h",
     "filling_status.h",
     "form_data.cc",
     "form_data.h",
diff --git a/components/autofill/core/common/button_title_type.h b/components/autofill/core/common/button_title_type.h
new file mode 100644
index 0000000..7fd97142
--- /dev/null
+++ b/components/autofill/core/common/button_title_type.h
@@ -0,0 +1,23 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_COMMON_BUTTON_TITLE_TYPE_H_
+#define COMPONENTS_AUTOFILL_CORE_COMMON_BUTTON_TITLE_TYPE_H_
+
+namespace autofill {
+
+// Describes how a form button is implemented in HTML source. Should be
+// synced with |ButtonTitleType| in
+// components/autofill/core/browser/proto/server.proto.
+enum ButtonTitleType {
+  NONE = 0,
+  BUTTON_ELEMENT_SUBMIT_TYPE = 1,  // <button type='submit'>
+  BUTTON_ELEMENT_BUTTON_TYPE = 2,  // <button type='button'>
+  INPUT_ELEMENT_SUBMIT_TYPE = 3,   // <input type='submit'>
+  INPUT_ELEMENT_BUTTON_TYPE = 4    // <input type='button'>
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_COMMON_FORM_SUBMISSION_SOURCE_H_
diff --git a/components/autofill/core/common/form_data.cc b/components/autofill/core/common/form_data.cc
index f0f11cf..06c2327d 100644
--- a/components/autofill/core/common/form_data.cc
+++ b/components/autofill/core/common/form_data.cc
@@ -72,7 +72,7 @@
 
 FormData::FormData(const FormData& data)
     : name(data.name),
-      button_title(data.button_title),
+      button_titles(data.button_titles),
       origin(data.origin),
       action(data.action),
       main_frame_origin(data.main_frame_origin),
diff --git a/components/autofill/core/common/form_data.h b/components/autofill/core/common/form_data.h
index fc2afba..66aff90 100644
--- a/components/autofill/core/common/form_data.h
+++ b/components/autofill/core/common/form_data.h
@@ -9,6 +9,7 @@
 #include <vector>
 
 #include "base/strings/string16.h"
+#include "components/autofill/core/common/button_title_type.h"
 #include "components/autofill/core/common/form_field_data.h"
 #include "components/autofill/core/common/submission_indicator_event.h"
 #include "url/gurl.h"
@@ -16,6 +17,13 @@
 
 namespace autofill {
 
+// Pair of a button title (e.g. "Register") and its type (e.g.
+// INPUT_ELEMENT_SUBMIT_TYPE).
+using ButtonTitleInfo = std::pair<base::string16, ButtonTitleType>;
+
+// List of button titles of a given form.
+using ButtonTitleList = std::vector<ButtonTitleInfo>;
+
 // Holds information about a form to be filled and/or submitted.
 struct FormData {
   static constexpr uint32_t kNotSetFormRendererId =
@@ -56,8 +64,8 @@
   // form signatures.
   // TODO(crbug/896689): remove this and use attributes/unique_id instead.
   base::string16 name;
-  // The form submission button's title.
-  base::string16 button_title;
+  // Titles of form's buttons.
+  ButtonTitleList button_titles;
   // The URL (minus query parameters) containing the form.
   GURL origin;
   // The action target of the form.
diff --git a/components/autofill_assistant_strings.grdp b/components/autofill_assistant_strings.grdp
index 77fcbc8c..2537dee 100644
--- a/components/autofill_assistant_strings.grdp
+++ b/components/autofill_assistant_strings.grdp
@@ -5,7 +5,7 @@
       Something went wrong. You can finish your order on the website.
     </message>
     <message name="IDS_AUTOFILL_ASSISTANT_GIVE_UP" desc="Text label that is shown when autofill assistant cannot help anymore, because of a user action." formatter_data="android_java">
-      I cannot help anymore, please continue manually.
+      I cannot help anymore, please continue on your own.
     </message>
     <message name="IDS_AUTOFILL_ASSISTANT_MAYBE_GIVE_UP" desc="Text label shown next to an UNDO button when user action indicate they want to continue on their own." formatter_data="android_java">
       Continue manually?
@@ -23,7 +23,7 @@
       Terms &amp; Conditions
     </message>
     <message name="IDS_AUTOFILL_ASSISTANT_DETAILS_DIFFER" desc="Shown as Status Message when details differ." formatter_data="android_java">
-      The movie screening is different, do you want to continue?
+      The screening is different from what you selected. Continue?
     </message>
     <message name="IDS_AUTOFILL_ASSISTANT_DETAILS_DIFFER_GO_BACK" desc="Shown on a button allowing going back when details differ." formatter_data="android_java">
       Go back
diff --git a/components/crash/content/browser/crash_handler_host_linux.cc b/components/crash/content/browser/crash_handler_host_linux.cc
index a6fd9f1d..baa7c58 100644
--- a/components/crash/content/browser/crash_handler_host_linux.cc
+++ b/components/crash/content/browser/crash_handler_host_linux.cc
@@ -229,10 +229,9 @@
 
   const ssize_t msg_size = HANDLE_EINTR(recvmsg(browser_socket_, &msg, 0));
   if (msg_size < 0) {
-    LOG(ERROR) << "Error reading from death signal socket. Crash dumping"
-               << " is disabled."
-               << " msg_size:" << msg_size
-               << " errno:" << errno;
+    PLOG(ERROR) << "Error reading from death signal socket. Crash dumping"
+                << " is disabled."
+                << " msg_size:" << msg_size;
     fd_watch_controller_.StopWatchingFileDescriptor();
     return;
   }
diff --git a/components/exo/client_controlled_shell_surface.cc b/components/exo/client_controlled_shell_surface.cc
index 34baf9d..4f32152 100644
--- a/components/exo/client_controlled_shell_surface.cc
+++ b/components/exo/client_controlled_shell_surface.cc
@@ -911,12 +911,21 @@
 
   // PIP windows should not be able to be active.
   if (pending_window_state_ == ash::mojom::WindowStateType::PIP) {
+    auto* window = widget_->GetNativeWindow();
+    if (wm::IsActiveWindow(window)) {
+      // In the case that a window changed state into PIP while activated,
+      // make sure to deactivate it now.
+      wm::DeactivateWindow(window);
+    }
+    widget_->widget_delegate()->set_can_activate(false);
+
     if (ash::features::IsPipRoundedCornersEnabled()) {
       decorator_ = std::make_unique<ash::RoundedCornerDecorator>(
           window_state->window(), host_window(), host_window()->layer(),
           ash::kPipRoundedCornerRadius);
     }
   } else {
+    widget_->widget_delegate()->set_can_activate(true);
     decorator_.reset();  // Remove rounded corners.
   }
 
diff --git a/components/exo/shell_surface_base.cc b/components/exo/shell_surface_base.cc
index 66906d3..e88b737 100644
--- a/components/exo/shell_surface_base.cc
+++ b/components/exo/shell_surface_base.cc
@@ -834,7 +834,7 @@
 
   if (gained_active == widget_->GetNativeWindow() ||
       lost_active == widget_->GetNativeWindow()) {
-    DCHECK(gained_active != widget_->GetNativeWindow() || CanActivate());
+    DCHECK(CanActivate());
     UpdateShadow();
   }
 }
diff --git a/components/module_installer/android/java/src-impl/org/chromium/components/module_installer/ModuleInstaller.java b/components/module_installer/android/java/src-impl/org/chromium/components/module_installer/ModuleInstaller.java
index 6603dfd8..f84f566c 100644
--- a/components/module_installer/android/java/src-impl/org/chromium/components/module_installer/ModuleInstaller.java
+++ b/components/module_installer/android/java/src-impl/org/chromium/components/module_installer/ModuleInstaller.java
@@ -36,12 +36,14 @@
     private static final Map<String, List<OnModuleInstallFinishedListener>> sModuleNameListenerMap =
             new HashMap<>();
     private static ModuleInstallerBackend sBackend;
+    private static boolean sSplitCompatted;
 
     /** Needs to be called before trying to access a module. */
     public static void init() {
         // SplitCompat.install may copy modules into Chrome's internal folder or clean them up.
         try (StrictModeContext unused = StrictModeContext.allowDiskWrites()) {
             SplitCompat.install(ContextUtils.getApplicationContext());
+            sSplitCompatted = true;
         }
         // SplitCompat.install may add emulated modules. Thus, update crash keys.
         updateCrashKeys();
@@ -68,10 +70,16 @@
         }
 
         // Create temporary split install manager to retrieve both fully installed and emulated
-        // modules. Then remove fully installed ones to get emulated ones only.
-        Set<String> emulatedModules =
-                new TreeSet<>(SplitInstallManagerFactory.create(context).getInstalledModules());
-        emulatedModules.removeAll(fullyInstalledModules);
+        // modules. Then remove fully installed ones to get emulated ones only. Querying the
+        // installed modules can only be done if splitcompat has already been called. Otherwise,
+        // emulation of later modules won't work. If splitcompat has not been called no modules are
+        // emulated. Therefore, use an empty set in that case.
+        Set<String> emulatedModules = new TreeSet<>();
+        if (sSplitCompatted) {
+            emulatedModules.addAll(
+                    SplitInstallManagerFactory.create(context).getInstalledModules());
+            emulatedModules.removeAll(fullyInstalledModules);
+        }
 
         CrashKeys.getInstance().set(
                 CrashKeyIndex.INSTALLED_MODULES, encodeCrashKeyValue(fullyInstalledModules));
diff --git a/components/offline_pages/core/offline_page_archiver.cc b/components/offline_pages/core/offline_page_archiver.cc
index 2cd5ce1..b408cae 100644
--- a/components/offline_pages/core/offline_page_archiver.cc
+++ b/components/offline_pages/core/offline_page_archiver.cc
@@ -56,8 +56,7 @@
   bool moved = base::Move(offline_page.file_path, new_file_path);
   if (!moved) {
     archive_result.move_result = SavePageResult::FILE_MOVE_FAILED;
-    DVLOG(0) << "OfflinePage publishing file move failure errno is " << errno
-             << " " << __func__;
+    DVPLOG(0) << "OfflinePage publishing file move failure " << __func__;
     base::UmaHistogramSparse("OfflinePages.PublishArchive.MoveFileError",
                              errno);
 
diff --git a/components/password_manager/core/browser/new_password_form_manager.cc b/components/password_manager/core/browser/new_password_form_manager.cc
index 0a4c452..cc19abf 100644
--- a/components/password_manager/core/browser/new_password_form_manager.cc
+++ b/components/password_manager/core/browser/new_password_form_manager.cc
@@ -254,7 +254,7 @@
   }
   if (user_action_ == UserAction::kOverridePassword &&
       pending_credentials_.type == PasswordForm::TYPE_GENERATED &&
-      !has_generated_password_) {
+      !HasGeneratedPassword()) {
     metrics_util::LogPasswordGenerationSubmissionEvent(
         metrics_util::PASSWORD_OVERRIDDEN);
     pending_credentials_.type = PasswordForm::TYPE_MANUAL;
@@ -369,19 +369,15 @@
   std::unique_ptr<PasswordForm> parsed_form =
       ParseFormAndMakeLogging(form.form_data, FormDataParser::Mode::kSaving);
 
-  if (!parsed_form)
-    return;
-
-  // Clear the username value if there are already saved credentials with the
-  // same username in order to prevent overwriting.
-  if (base::ContainsKey(best_matches_, parsed_form->username_value))
-    parsed_form->username_value.clear();
-
-  form_saver_->PresaveGeneratedPassword(*parsed_form);
+  if (!parsed_form) {
+    // Use the old parser result if parsing fails.
+    // TODO(https://crbug.com/831123). Make it work without the old parser.
+    parsed_form.reset(new PasswordForm(form));
+  }
 
   // If a password had been generated already, a call to
   // PresaveGeneratedPassword() implies that this password was modified.
-  if (!has_generated_password_) {
+  if (!HasGeneratedPassword()) {
     votes_uploader_.set_generated_password_changed(false);
     metrics_recorder_->SetGeneratedPasswordStatus(
         PasswordFormMetricsRecorder::GeneratedPasswordStatus::
@@ -391,14 +387,28 @@
     metrics_recorder_->SetGeneratedPasswordStatus(
         PasswordFormMetricsRecorder::GeneratedPasswordStatus::kPasswordEdited);
   }
-  has_generated_password_ = true;
   votes_uploader_.set_has_generated_password(true);
+
+  // TODO(https://crbug.com/831123). Propagate generated password independently
+  // of PasswordForm when PasswordForm goes away from the renderer process.
+  generated_password_ = form.password_value;
+
+  // Set |password_value| to the generated password in order to ensure that the
+  // generated password is saved.
+  parsed_form->password_value = generated_password_;
+
+  // Clear the username value if there are already saved credentials with
+  // the same username in order to prevent overwriting.
+  if (base::ContainsKey(best_matches_, parsed_form->username_value))
+    parsed_form->username_value.clear();
+
+  form_saver_->PresaveGeneratedPassword(*parsed_form);
 }
 
 void NewPasswordFormManager::PasswordNoLongerGenerated() {
-  DCHECK(has_generated_password_);
+  DCHECK(HasGeneratedPassword());
   form_saver_->RemovePresavedPassword();
-  has_generated_password_ = false;
+  generated_password_.clear();
   votes_uploader_.set_has_generated_password(false);
   votes_uploader_.set_generated_password_changed(false);
   metrics_recorder_->SetGeneratedPasswordStatus(
@@ -406,7 +416,7 @@
 }
 
 bool NewPasswordFormManager::HasGeneratedPassword() const {
-  return has_generated_password_;
+  return !generated_password_.empty();
 }
 
 void NewPasswordFormManager::SetGenerationPopupWasShown(
@@ -472,7 +482,7 @@
   //       code.
   //   (3) They are not changed during ProcessMatches, triggered at some point
   //       by the cloned FormFetcher.
-  result->has_generated_password_ = has_generated_password_;
+  result->generated_password_ = generated_password_;
   result->user_action_ = user_action_;
   result->votes_uploader_ = votes_uploader_;
   if (parser_.predictions())
@@ -784,7 +794,7 @@
     if (best_update_match) {
       // Chose |best_update_match| to be updated.
       pending_credentials_ = *best_update_match;
-    } else if (has_generated_password_) {
+    } else if (HasGeneratedPassword()) {
       // If a password was generated and we didn't find a match, we have to save
       // it in a separate entry since we have to store it but we don't know
       // where.
@@ -822,7 +832,9 @@
   if (!IsValidAndroidFacetURI(pending_credentials_.signon_realm))
     pending_credentials_.action = submitted_form_.action;
 
-  pending_credentials_.password_value = password_to_save.first;
+  pending_credentials_.password_value = generated_password_.empty()
+                                            ? password_to_save.first
+                                            : generated_password_;
   pending_credentials_.preferred = true;
   pending_credentials_.form_has_autofilled_value =
       parsed_submitted_form_->form_has_autofilled_value;
@@ -846,7 +858,7 @@
     pending_credentials_.signon_realm = parsed_submitted_form_->signon_realm;
   }
 
-  if (has_generated_password_)
+  if (HasGeneratedPassword())
     pending_credentials_.type = PasswordForm::TYPE_GENERATED;
 }
 
@@ -855,7 +867,7 @@
   // This function is called for forms that do not contain a username field.
   // This means that we cannot update credentials based on a matching username
   // and that we may need to show an update prompt.
-  if (best_matches_.size() == 1 && !has_generated_password_) {
+  if (best_matches_.size() == 1 && !HasGeneratedPassword()) {
     // In case the submitted form contained no username but a password, and if
     // the user has only one credential stored, return it as the one that should
     // be updated.
diff --git a/components/password_manager/core/browser/new_password_form_manager.h b/components/password_manager/core/browser/new_password_form_manager.h
index 8ca238c..448adca4 100644
--- a/components/password_manager/core/browser/new_password_form_manager.h
+++ b/components/password_manager/core/browser/new_password_form_manager.h
@@ -295,8 +295,9 @@
   // existing one.
   bool is_new_login_ = true;
 
-  // Whether this form has an auto generated password.
-  bool has_generated_password_ = false;
+  // Contains a generated password, empty if no password generation happened or
+  // a generated password removed by the user.
+  base::string16 generated_password_;
 
   // Whether the saved password was overridden.
   bool password_overridden_ = false;
diff --git a/components/password_manager/core/browser/new_password_form_manager_unittest.cc b/components/password_manager/core/browser/new_password_form_manager_unittest.cc
index c35c415..005539f 100644
--- a/components/password_manager/core/browser/new_password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/new_password_form_manager_unittest.cc
@@ -301,6 +301,7 @@
         observed_form_.fields[kPasswordFieldIndex].name;
 
     parsed_submitted_form_ = parsed_observed_form_;
+    parsed_submitted_form_.form_data = submitted_form_;
     parsed_submitted_form_.username_value =
         submitted_form_.fields[kUsernameFieldIndex].value;
     parsed_submitted_form_.password_value =
@@ -1245,8 +1246,7 @@
   EXPECT_CALL(form_saver, PresaveGeneratedPassword(_))
       .WillOnce(SaveArg<0>(&saved_form));
 
-  PasswordForm form_with_generated_password;
-  form_with_generated_password.form_data = submitted_form_;
+  PasswordForm form_with_generated_password = parsed_submitted_form_;
   FormData& form_data = form_with_generated_password.form_data;
   form_manager_->PresaveGeneratedPassword(form_with_generated_password);
 
@@ -1259,7 +1259,7 @@
   Mock::VerifyAndClearExpectations(&form_saver);
 
   // Check that when the generated password is edited, then it's presaved.
-  form_data.fields[kPasswordFieldIndex].value += ASCIIToUTF16("1");
+  form_with_generated_password.password_value += ASCIIToUTF16("1");
   EXPECT_CALL(form_saver, PresaveGeneratedPassword(_))
       .WillOnce(SaveArg<0>(&saved_form));
 
@@ -1269,7 +1269,7 @@
   EXPECT_EQ(saved_form.username_value,
             form_data.fields[kUsernameFieldIndex].value);
   EXPECT_EQ(saved_form.password_value,
-            form_data.fields[kPasswordFieldIndex].value);
+            form_with_generated_password.password_value);
 
   Mock::VerifyAndClearExpectations(&form_saver);
 
@@ -1283,6 +1283,62 @@
   CheckPasswordGenerationUKM(test_ukm_recorder, expected_metrics);
 }
 
+TEST_F(NewPasswordFormManagerTest, GeneratedPasswordWhichIsNotInFormData) {
+  TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
+  fetcher_->SetNonFederated({}, 0u);
+  MockFormSaver& form_saver = MockFormSaver::Get(form_manager_.get());
+
+  // Create a password form such that |form_data| do not contain the generated
+  // password.
+  PasswordForm form_with_generated_password;
+  form_with_generated_password.form_data = submitted_form_;
+  const base::string16 generated_password = ASCIIToUTF16("gen_pw");
+  // |password_value| should contain the generated password.
+  form_with_generated_password.password_value = generated_password;
+
+  // Check that the generated password is presaved.
+  PasswordForm saved_form;
+  EXPECT_CALL(form_saver, PresaveGeneratedPassword(_))
+      .WillOnce(SaveArg<0>(&saved_form));
+
+  form_manager_->PresaveGeneratedPassword(form_with_generated_password);
+  EXPECT_EQ(submitted_form_.fields[kUsernameFieldIndex].value,
+            saved_form.username_value);
+  EXPECT_EQ(generated_password, saved_form.password_value);
+  EXPECT_TRUE(form_manager_->HasGeneratedPassword());
+
+  // Check that the generated password is saved.
+  EXPECT_CALL(form_saver, Save(_, _)).WillOnce(SaveArg<0>(&saved_form));
+  EXPECT_CALL(client_, UpdateFormManagers());
+
+  EXPECT_TRUE(
+      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  form_manager_->Save();
+
+  EXPECT_EQ(submitted_form_.fields[kUsernameFieldIndex].value,
+            saved_form.username_value);
+  EXPECT_EQ(generated_password, saved_form.password_value);
+}
+
+TEST_F(NewPasswordFormManagerTest, PresaveGenerationWhenParsingFails) {
+  TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
+  fetcher_->SetNonFederated({}, 0u);
+  MockFormSaver& form_saver = MockFormSaver::Get(form_manager_.get());
+
+  // Create a password form with empty |form_data|. On this form the form parser
+  // should fail.
+  PasswordForm form_with_empty_form_data;
+  const base::string16 generated_password = ASCIIToUTF16("gen_pw");
+  form_with_empty_form_data.password_value = generated_password;
+
+  // Check that nevertheless the generated password is presaved.
+  PasswordForm saved_form;
+  EXPECT_CALL(form_saver, PresaveGeneratedPassword(_))
+      .WillOnce(SaveArg<0>(&saved_form));
+  form_manager_->PresaveGeneratedPassword(form_with_empty_form_data);
+  EXPECT_EQ(generated_password, saved_form.password_value);
+}
+
 TEST_F(NewPasswordFormManagerTest, PasswordNoLongerGenerated) {
   TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
   ukm::TestAutoSetUkmRecorder test_ukm_recorder;
@@ -1294,8 +1350,7 @@
 
   EXPECT_CALL(form_saver, PresaveGeneratedPassword(_));
 
-  PasswordForm form;
-  form.form_data = submitted_form_;
+  PasswordForm form = parsed_submitted_form_;
   form_manager_->PresaveGeneratedPassword(form);
   Mock::VerifyAndClearExpectations(&form_saver);
 
@@ -1333,8 +1388,7 @@
   EXPECT_CALL(form_saver, PresaveGeneratedPassword(_))
       .WillOnce(SaveArg<0>(&saved_form));
 
-  PasswordForm form_with_generated_password;
-  form_with_generated_password.form_data = submitted_form_;
+  PasswordForm form_with_generated_password = parsed_submitted_form_;
   FormData& form_data = form_with_generated_password.form_data;
 
   // Check that the generated password is saved with the empty username when
@@ -1344,8 +1398,8 @@
 
   EXPECT_TRUE(form_manager_->HasGeneratedPassword());
   EXPECT_TRUE(saved_form.username_value.empty());
-  EXPECT_EQ(saved_form.password_value,
-            form_data.fields[kPasswordFieldIndex].value);
+  EXPECT_EQ(form_with_generated_password.password_value,
+            saved_form.password_value);
 }
 
 TEST_F(NewPasswordFormManagerTest, UserEventsForGeneration) {
diff --git a/components/password_manager/core/browser/votes_uploader_unittest.cc b/components/password_manager/core/browser/votes_uploader_unittest.cc
index b2d15ba..e073296d 100644
--- a/components/password_manager/core/browser/votes_uploader_unittest.cc
+++ b/components/password_manager/core/browser/votes_uploader_unittest.cc
@@ -12,12 +12,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_task_environment.h"
 #include "components/autofill/core/browser/autofill_download_manager.h"
-#include "components/autofill/core/browser/autofill_manager.h"
 #include "components/autofill/core/browser/form_structure.h"
-#include "components/autofill/core/browser/test_autofill_client.h"
-#include "components/autofill/core/browser/test_autofill_driver.h"
-#include "components/autofill/core/browser/test_personal_data_manager.h"
-#include "components/autofill/core/common/autofill_prefs.h"
 #include "components/password_manager/core/browser/stub_password_manager_client.h"
 #include "components/password_manager/core/browser/vote_uploads_test_matchers.h"
 #include "components/prefs/pref_registry_simple.h"
@@ -48,38 +43,28 @@
 
 class MockAutofillDownloadManager : public autofill::AutofillDownloadManager {
  public:
-  MockAutofillDownloadManager(
-      autofill::AutofillDriver* driver,
-      autofill::AutofillDownloadManager::Observer* observer)
-      : AutofillDownloadManager(driver, observer) {}
+  MockAutofillDownloadManager()
+      : AutofillDownloadManager(nullptr, &fake_observer) {}
 
   MOCK_METHOD6(StartUploadRequest,
                bool(const FormStructure&,
                     bool,
-                    const ServerFieldTypeSet&,
+                    const autofill::ServerFieldTypeSet&,
                     const std::string&,
                     bool,
                     PrefService*));
 
  private:
+  class StubObserver : public AutofillDownloadManager::Observer {
+    void OnLoadedServerPredictions(
+        std::string response,
+        const std::vector<std::string>& form_signatures) override {}
+  };
+
+  StubObserver fake_observer;
   DISALLOW_COPY_AND_ASSIGN(MockAutofillDownloadManager);
 };
 
-class MockAutofillManager : public autofill::AutofillManager {
- public:
-  MockAutofillManager(autofill::AutofillDriver* driver,
-                      autofill::AutofillClient* client,
-                      autofill::PersonalDataManager* data_manager)
-      : AutofillManager(driver, client, data_manager) {}
-
-  void SetDownloadManager(autofill::AutofillDownloadManager* manager) {
-    set_download_manager(manager);
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(MockAutofillManager);
-};
-
 class MockPasswordManagerClient : public StubPasswordManagerClient {
  public:
   MOCK_METHOD0(GetAutofillDownloadManager,
@@ -90,26 +75,11 @@
 
 class VotesUploaderTest : public testing::Test {
  public:
-  VotesUploaderTest()
-      : mock_autofill_manager_(&test_autofill_driver_,
-                               &test_autofill_client_,
-                               &test_personal_data_manager_) {
-    std::unique_ptr<TestingPrefServiceSimple> prefs(
-        new TestingPrefServiceSimple());
-    prefs->registry()->RegisterBooleanPref(
-        autofill::prefs::kAutofillCreditCardEnabled, true);
-    prefs->registry()->RegisterBooleanPref(
-        autofill::prefs::kAutofillProfileEnabled, true);
-    test_autofill_client_.SetPrefs(std::move(prefs));
-    mock_autofill_download_manager_ = new MockAutofillDownloadManager(
-        &test_autofill_driver_, &mock_autofill_manager_);
-    // AutofillManager takes ownership of |mock_autofill_download_manager_|.
-    mock_autofill_manager_.SetDownloadManager(mock_autofill_download_manager_);
-
+  VotesUploaderTest() {
     EXPECT_CALL(client_, GetAutofillDownloadManager())
-        .WillRepeatedly(Return(mock_autofill_download_manager_));
+        .WillRepeatedly(Return(&mock_autofill_download_manager_));
 
-    ON_CALL(*mock_autofill_download_manager_,
+    ON_CALL(mock_autofill_download_manager_,
             StartUploadRequest(_, _, _, _, _, _))
         .WillByDefault(Return(true));
 
@@ -131,12 +101,8 @@
   }
 
   base::test::ScopedTaskEnvironment scoped_task_environment_;
-  autofill::TestAutofillDriver test_autofill_driver_;
-  autofill::TestAutofillClient test_autofill_client_;
-  autofill::TestPersonalDataManager test_personal_data_manager_;
-  MockAutofillDownloadManager* mock_autofill_download_manager_;
+  MockAutofillDownloadManager mock_autofill_download_manager_;
 
-  MockAutofillManager mock_autofill_manager_;
   MockPasswordManagerClient client_;
 
   PasswordForm form_to_upload_;
@@ -163,7 +129,7 @@
       SubmissionIndicatorEvent::HTML_FORM_SUBMISSION;
 
   EXPECT_CALL(
-      *mock_autofill_download_manager_,
+      mock_autofill_download_manager_,
       StartUploadRequest(
           AllOf(SignatureIsSameAs(form_to_upload_),
                 UploadedAutofillTypesAre(expected_types),
@@ -188,7 +154,7 @@
   SubmissionIndicatorEvent expected_submission_event =
       SubmissionIndicatorEvent::HTML_FORM_SUBMISSION;
 
-  EXPECT_CALL(*mock_autofill_download_manager_,
+  EXPECT_CALL(mock_autofill_download_manager_,
               StartUploadRequest(
                   SubmissionEventIsSameAs(expected_submission_event), false,
                   expected_field_types, login_form_signature_, true,
diff --git a/components/quirks/quirks_client.cc b/components/quirks/quirks_client.cc
index ca3c65b..e7d227c 100644
--- a/components/quirks/quirks_client.cc
+++ b/components/quirks/quirks_client.cc
@@ -40,7 +40,7 @@
 bool WriteIccFile(const base::FilePath file_path, const std::string& data) {
   int bytes_written = base::WriteFile(file_path, data.data(), data.length());
   if (bytes_written == -1)
-    LOG(ERROR) << "Write failed: " << file_path.value() << ", err = " << errno;
+    PLOG(ERROR) << "Write failed: " << file_path.value();
   else
     VLOG(1) << bytes_written << "bytes written to: " << file_path.value();
 
diff --git a/components/search/OWNERS b/components/search/OWNERS
index 75e8530..64c7413 100644
--- a/components/search/OWNERS
+++ b/components/search/OWNERS
@@ -1,3 +1,4 @@
+kmilka@chromium.org
 kristipark@chromium.org
 mathp@chromium.org
 ramyan@chromium.org
diff --git a/components/sync/driver/test_sync_service.cc b/components/sync/driver/test_sync_service.cc
index 0bc4f6e..5f42672c 100644
--- a/components/sync/driver/test_sync_service.cc
+++ b/components/sync/driver/test_sync_service.cc
@@ -59,6 +59,10 @@
   account_info_ = account_info;
 }
 
+void TestSyncService::SetSetupInProgress(bool in_progress) {
+  setup_in_progress_ = in_progress;
+}
+
 void TestSyncService::SetIsAuthenticatedAccountPrimary(bool is_primary) {
   account_is_primary_ = is_primary;
 }
@@ -95,6 +99,20 @@
   SetLastCycleSnapshot(MakeDefaultCycleSnapshot());
 }
 
+void TestSyncService::SetDetailedSyncStatus(bool engine_available,
+                                            SyncStatus status) {
+  detailed_sync_status_engine_available_ = engine_available;
+  detailed_sync_status_ = status;
+}
+
+void TestSyncService::SetPassphraseRequired(bool required) {
+  passphrase_required_ = required;
+}
+
+void TestSyncService::SetPassphraseRequiredForDecryption(bool required) {
+  passphrase_required_for_decryption_ = required;
+}
+
 SyncUserSettings* TestSyncService::GetUserSettings() {
   return &user_settings_;
 }
@@ -133,7 +151,7 @@
 }
 
 bool TestSyncService::IsSetupInProgress() const {
-  return false;
+  return setup_in_progress_;
 }
 
 ModelTypeSet TestSyncService::GetPreferredDataTypes() const {
@@ -163,7 +181,7 @@
 }
 
 bool TestSyncService::IsPassphraseRequiredForDecryption() const {
-  return false;
+  return passphrase_required_for_decryption_;
 }
 
 base::Time TestSyncService::GetExplicitPassphraseTime() const {
@@ -203,7 +221,8 @@
 }
 
 bool TestSyncService::QueryDetailedSyncStatus(SyncStatus* result) const {
-  return false;
+  *result = detailed_sync_status_;
+  return detailed_sync_status_engine_available_;
 }
 
 base::Time TestSyncService::GetLastSyncedTime() const {
@@ -252,7 +271,7 @@
 void TestSyncService::SetInvalidationsForSessionsEnabled(bool enabled) {}
 
 bool TestSyncService::IsPassphraseRequired() const {
-  return false;
+  return passphrase_required_;
 }
 
 ModelTypeSet TestSyncService::GetEncryptedDataTypes() const {
diff --git a/components/sync/driver/test_sync_service.h b/components/sync/driver/test_sync_service.h
index d81b509a..0c406f3 100644
--- a/components/sync/driver/test_sync_service.h
+++ b/components/sync/driver/test_sync_service.h
@@ -13,6 +13,7 @@
 #include "components/sync/driver/sync_service.h"
 #include "components/sync/driver/test_sync_user_settings.h"
 #include "components/sync/engine/cycle/sync_cycle_snapshot.h"
+#include "components/sync/engine/sync_status.h"
 #include "google_apis/gaia/google_service_auth_error.h"
 #include "url/gurl.h"
 
@@ -30,6 +31,7 @@
   void SetLocalSyncEnabled(bool local_sync_enabled);
   void SetAuthenticatedAccountInfo(const AccountInfo& account_info);
   void SetIsAuthenticatedAccountPrimary(bool is_primary);
+  void SetSetupInProgress(bool in_progress);
   void SetAuthError(const GoogleServiceAuthError& auth_error);
   void SetFirstSetupComplete(bool first_setup_complete);
   void SetPreferredDataTypes(const ModelTypeSet& types);
@@ -40,6 +42,9 @@
   // the particular values in the snapshot, just whether there is one.
   void SetEmptyLastCycleSnapshot();
   void SetNonEmptyLastCycleSnapshot();
+  void SetDetailedSyncStatus(bool engine_available, SyncStatus status);
+  void SetPassphraseRequired(bool required);
+  void SetPassphraseRequiredForDecryption(bool required);
 
   // SyncService implementation.
   syncer::SyncUserSettings* GetUserSettings() override;
@@ -110,12 +115,18 @@
   bool local_sync_enabled_ = false;
   AccountInfo account_info_;
   bool account_is_primary_ = true;
+  bool setup_in_progress_ = false;
   GoogleServiceAuthError auth_error_;
 
   ModelTypeSet preferred_data_types_;
   ModelTypeSet active_data_types_;
 
   bool using_secondary_passphrase_ = false;
+  bool passphrase_required_ = false;
+  bool passphrase_required_for_decryption_ = false;
+
+  bool detailed_sync_status_engine_available_ = false;
+  SyncStatus detailed_sync_status_;
 
   SyncCycleSnapshot last_cycle_snapshot_;
 
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
index 45ada21..edb4054 100644
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -26,8 +26,13 @@
 // Enables running the display compositor as part of the viz service in the GPU
 // process. This is also referred to as out-of-process display compositor
 // (OOP-D).
+#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
 const base::Feature kVizDisplayCompositor{"VizDisplayCompositor",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
+#else
+const base::Feature kVizDisplayCompositor{"VizDisplayCompositor",
+                                          base::FEATURE_ENABLED_BY_DEFAULT};
+#endif
 
 // Enables running the Viz-assisted hit-test logic.
 #if defined(OS_CHROMEOS)
diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
index 5f1da1b3..255ae64f 100644
--- a/components/viz/service/BUILD.gn
+++ b/components/viz/service/BUILD.gn
@@ -320,6 +320,7 @@
     "//media/mojo/services",
     "//services/viz/privileged/interfaces/gl",
     "//skia",
+    "//ui/latency:latency",
   ]
 
   defines = [ "VIZ_SERVICE_IMPLEMENTATION" ]
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index d911eba..7e62d1b7 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -1167,7 +1167,9 @@
       RenderPassId render_pass_id = 0;
       // If we are in child render pass and we don't have overdraw, copy the
       // current render pass.
-      if (root_canvas_ != current_canvas_ && !settings_->show_overdraw_feedback)
+      if (current_frame()->root_render_pass !=
+              current_frame()->current_render_pass &&
+          !settings_->show_overdraw_feedback)
         render_pass_id = current_frame()->current_render_pass->id;
       skia_output_surface_->CopyOutput(render_pass_id, window_copy_rect,
                                        std::move(request));
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index d8b009d..082c0e4 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -265,6 +265,7 @@
     latency.AddLatencyNumberWithTimestamp(
         ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, swap_end, 1);
   }
+  latency_tracker_.OnGpuSwapBuffersCompleted(frame.latency_info);
 }
 
 void SkiaOutputSurfaceImplOnGpu::FinishPaintRenderPass(
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
index d314307358..64b4e99 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -5,6 +5,10 @@
 #ifndef COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_SKIA_OUTPUT_SURFACE_IMPL_ON_GPU_H_
 #define COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_SKIA_OUTPUT_SURFACE_IMPL_ON_GPU_H_
 
+#include <memory>
+#include <utility>
+#include <vector>
+
 #include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/threading/thread_checker.h"
@@ -19,6 +23,7 @@
 #include "gpu/ipc/in_process_command_buffer.h"
 #include "gpu/ipc/service/image_transport_surface_delegate.h"
 #include "third_party/skia/include/core/SkSurface.h"
+#include "ui/latency/latency_tracker.h"
 
 class SkDeferredDisplayList;
 
@@ -172,6 +177,8 @@
       pending_swap_completed_params_;
   uint64_t swap_id_ = 0;
 
+  ui::LatencyTracker latency_tracker_;
+
   THREAD_CHECKER(thread_checker_);
 
   base::WeakPtr<SkiaOutputSurfaceImplOnGpu> weak_ptr_;
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index 5786547..7431e62d 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -239,7 +239,6 @@
   AddFilter(filters, "minValueForRange*");
   AddFilter(filters, "maxValueForRange*");
   AddFilter(filters, "hierarchicalLevel*");
-  AddFilter(filters, "aria*");  // ariaCurrentState, ariaInvalidValue, etc.
   AddFilter(filters, "autoComplete*");
   AddFilter(filters, "restriction*");
   AddFilter(filters, "keyShortcuts*");
diff --git a/content/browser/frame_host/interstitial_page_navigator_impl.cc b/content/browser/frame_host/interstitial_page_navigator_impl.cc
index 7f4c7de9..1d16d5e 100644
--- a/content/browser/frame_host/interstitial_page_navigator_impl.cc
+++ b/content/browser/frame_host/interstitial_page_navigator_impl.cc
@@ -31,16 +31,16 @@
 void InterstitialPageNavigatorImpl::DidNavigate(
     RenderFrameHostImpl* render_frame_host,
     const FrameHostMsg_DidCommitProvisionalLoad_Params& input_params,
-    std::unique_ptr<NavigationHandleImpl> navigation_handle,
+    std::unique_ptr<NavigationRequest> navigation_request,
     bool was_within_same_document) {
   // Do not proceed if the interstitial itself has been disabled.
   if (!enabled_)
     return;
 
-  navigation_handle->DidCommitNavigation(
+  navigation_request->navigation_handle()->DidCommitNavigation(
       input_params, true, false, GURL(), NAVIGATION_TYPE_NEW_PAGE,
       render_frame_host);
-  navigation_handle.reset();
+  navigation_request.reset();
 
   // TODO(nasko): Move implementation here, but for the time being call out
   // to the interstitial page code.
diff --git a/content/browser/frame_host/interstitial_page_navigator_impl.h b/content/browser/frame_host/interstitial_page_navigator_impl.h
index 3ed1141c..28cded2 100644
--- a/content/browser/frame_host/interstitial_page_navigator_impl.h
+++ b/content/browser/frame_host/interstitial_page_navigator_impl.h
@@ -30,7 +30,7 @@
   void DidNavigate(
       RenderFrameHostImpl* render_frame_host,
       const FrameHostMsg_DidCommitProvisionalLoad_Params& input_params,
-      std::unique_ptr<NavigationHandleImpl> navigation_handle,
+      std::unique_ptr<NavigationRequest> navigation_request,
       bool was_within_same_document) override;
 
   // Disables any further action when the interstitial page is preparing to
diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
index 4f631c7..4716f8f 100644
--- a/content/browser/frame_host/navigation_controller_impl.cc
+++ b/content/browser/frame_host/navigation_controller_impl.cc
@@ -887,7 +887,8 @@
     const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
     LoadCommittedDetails* details,
     bool is_same_document_navigation,
-    NavigationHandleImpl* navigation_handle) {
+    NavigationRequest* navigation_request) {
+  DCHECK(navigation_request);
   is_initial_navigation_ = false;
 
   // Save the previous state before we clobber it.
@@ -942,6 +943,9 @@
 
   // Save reload type and timestamp for a reload navigation to detect
   // consecutive reloads when the next reload is requested.
+  NavigationHandleImpl* navigation_handle =
+      navigation_request->navigation_handle();
+  DCHECK(navigation_handle);
   if (PendingEntryMatchesHandle(navigation_handle)) {
     if (pending_entry_->reload_type() != ReloadType::NONE) {
       last_committed_reload_type_ = pending_entry_->reload_type();
diff --git a/content/browser/frame_host/navigation_controller_impl.h b/content/browser/frame_host/navigation_controller_impl.h
index bfcd763..bf379c2c2 100644
--- a/content/browser/frame_host/navigation_controller_impl.h
+++ b/content/browser/frame_host/navigation_controller_impl.h
@@ -163,7 +163,7 @@
       const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
       LoadCommittedDetails* details,
       bool is_same_document_navigation,
-      NavigationHandleImpl* navigation_handle);
+      NavigationRequest* navigation_request);
 
   // Notifies us that we just became active. This is used by the WebContentsImpl
   // so that we know to load URLs that were pending as "lazy" loads.
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc
index e54d2ed..5e3e6d6 100644
--- a/content/browser/frame_host/navigation_request.cc
+++ b/content/browser/frame_host/navigation_request.cc
@@ -38,6 +38,7 @@
 #include "content/browser/site_instance_impl.h"
 #include "content/common/appcache_interfaces.h"
 #include "content/common/content_constants_internal.h"
+#include "content/common/frame_messages.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -323,7 +324,8 @@
   std::unique_ptr<NavigationRequest> navigation_request(new NavigationRequest(
       frame_tree_node, common_params, std::move(navigation_params),
       request_params, browser_initiated, false /* from_begin_navigation */,
-      &frame_entry, &entry, std::move(navigation_ui_data), nullptr, nullptr));
+      false /* is_for_commit */, &frame_entry, &entry,
+      std::move(navigation_ui_data), nullptr, nullptr));
   navigation_request->blob_url_loader_factory_ =
       frame_entry.blob_url_loader_factory();
   return navigation_request;
@@ -373,6 +375,7 @@
       frame_tree_node, common_params, std::move(begin_params), request_params,
       false,  // browser_initiated
       true,   // from_begin_navigation
+      false,  // is_for_commit
       nullptr, entry,
       nullptr,  // navigation_ui_data
       std::move(navigation_client), std::move(navigation_initiator)));
@@ -381,6 +384,54 @@
   return navigation_request;
 }
 
+// static
+std::unique_ptr<NavigationRequest> NavigationRequest::CreateForCommit(
+    FrameTreeNode* frame_tree_node,
+    NavigationEntryImpl* entry,
+    const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
+    bool is_renderer_initiated,
+    bool is_same_document) {
+  // TODO(clamy): Improve the *NavigationParams and *CommitParams to avoid
+  // copying so many parameters here.
+  CommonNavigationParams common_params(
+      params.url, params.referrer, params.transition,
+      is_same_document ? FrameMsg_Navigate_Type::SAME_DOCUMENT
+                       : FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT,
+      NavigationDownloadPolicy::kAllow, params.should_replace_current_entry,
+      params.base_url, params.base_url, PREVIEWS_UNSPECIFIED,
+      base::TimeTicks::Now(), params.method, nullptr,
+      base::Optional<SourceLocation>(), false /* started_from_context_menu */,
+      params.gesture == NavigationGestureUser, InitiatorCSPInfo(),
+      std::string() /* href_translate */, base::TimeTicks::Now());
+  RequestNavigationParams request_params(
+      params.is_overriding_user_agent, params.redirects,
+      params.original_request_url, params.method,
+      false /* can_load_local_resources */, params.page_state,
+      params.nav_entry_id, false /* is_history_navigation_in_new_child */,
+      std::map<std::string, bool>() /* subframe_unique_names */,
+      params.intended_as_new_entry, -1 /* pending_history_list_offset */,
+      -1 /* current_history_list_offset */,
+      -1 /* current_history_list_length */, false /* is_view_source */,
+      params.history_list_was_cleared);
+  mojom::BeginNavigationParamsPtr begin_params =
+      mojom::BeginNavigationParams::New();
+  std::unique_ptr<NavigationRequest> navigation_request(new NavigationRequest(
+      frame_tree_node, common_params, std::move(begin_params), request_params,
+      !is_renderer_initiated, false /* from_begin_navigation */,
+      true /* is_for_commit */,
+      entry ? entry->GetFrameEntry(frame_tree_node) : nullptr, entry,
+      nullptr /* navigation_ui_data */,
+      mojom::NavigationClientAssociatedPtrInfo(),
+      blink::mojom::NavigationInitiatorPtr()));
+
+  // Update the state of the NavigationRequest to match the fact that the
+  // navigation just committed.
+  navigation_request->state_ = RESPONSE_STARTED;
+  navigation_request->CreateNavigationHandle(true);
+  DCHECK(navigation_request->navigation_handle());
+  return navigation_request;
+}
+
 NavigationRequest::NavigationRequest(
     FrameTreeNode* frame_tree_node,
     const CommonNavigationParams& common_params,
@@ -388,6 +439,7 @@
     const RequestNavigationParams& request_params,
     bool browser_initiated,
     bool from_begin_navigation,
+    bool is_for_commit,
     const FrameNavigationEntry* frame_entry,
     const NavigationEntryImpl* entry,
     std::unique_ptr<NavigationUIData> navigation_ui_data,
@@ -439,7 +491,7 @@
                          base::Unretained(this)));
       associated_site_instance_id_ = source_site_instance_->GetId();
     }
-  } else {
+  } else if (entry) {
     DCHECK(!navigation_client.is_valid());
     FrameNavigationEntry* frame_navigation_entry =
         entry->GetFrameEntry(frame_tree_node);
@@ -471,44 +523,48 @@
 
   std::unique_ptr<net::HttpRequestHeaders> embedder_additional_headers;
   int additional_load_flags = 0;
-  GetContentClient()->browser()->NavigationRequestStarted(
-      frame_tree_node->frame_tree_node_id(), common_params_.url,
-      &embedder_additional_headers, &additional_load_flags);
-  begin_params_->load_flags |= additional_load_flags;
-
   net::HttpRequestHeaders headers;
-  headers.AddHeadersFromString(begin_params_->headers);
-  AddAdditionalRequestHeaders(
-      &headers, std::move(embedder_additional_headers), common_params_.url,
-      common_params_.navigation_type,
-      frame_tree_node_->navigator()->GetController()->GetBrowserContext(),
-      common_params.method, user_agent_override,
-      common_params_.has_user_gesture, begin_params_->initiator_origin,
-      frame_tree_node);
+  // Only add specific headers when creating a NavigationRequest before the
+  // network request is made, not at commit time.
+  if (!is_for_commit) {
+    GetContentClient()->browser()->NavigationRequestStarted(
+        frame_tree_node->frame_tree_node_id(), common_params_.url,
+        &embedder_additional_headers, &additional_load_flags);
+    begin_params_->load_flags |= additional_load_flags;
 
-  if (begin_params_->is_form_submission) {
-    if (browser_initiated && !request_params.post_content_type.empty()) {
-      // This is a form resubmit, so make sure to set the Content-Type header.
-      headers.SetHeaderIfMissing(net::HttpRequestHeaders::kContentType,
-                                 request_params.post_content_type);
-    } else if (!browser_initiated) {
-      // Save the Content-Type in case the form is resubmitted. This will get
-      // sent back to the renderer in the CommitNavigation IPC. The renderer
-      // will then send it back with the post body so that we can access it
-      // along with the body in FrameNavigationEntry::page_state_.
-      headers.GetHeader(net::HttpRequestHeaders::kContentType,
-                        &request_params_.post_content_type);
+    headers.AddHeadersFromString(begin_params_->headers);
+    AddAdditionalRequestHeaders(
+        &headers, std::move(embedder_additional_headers), common_params_.url,
+        common_params_.navigation_type,
+        frame_tree_node_->navigator()->GetController()->GetBrowserContext(),
+        common_params.method, user_agent_override,
+        common_params_.has_user_gesture, begin_params_->initiator_origin,
+        frame_tree_node);
+
+    if (begin_params_->is_form_submission) {
+      if (browser_initiated && !request_params.post_content_type.empty()) {
+        // This is a form resubmit, so make sure to set the Content-Type header.
+        headers.SetHeaderIfMissing(net::HttpRequestHeaders::kContentType,
+                                   request_params.post_content_type);
+      } else if (!browser_initiated) {
+        // Save the Content-Type in case the form is resubmitted. This will get
+        // sent back to the renderer in the CommitNavigation IPC. The renderer
+        // will then send it back with the post body so that we can access it
+        // along with the body in FrameNavigationEntry::page_state_.
+        headers.GetHeader(net::HttpRequestHeaders::kContentType,
+                          &request_params_.post_content_type);
+      }
     }
-  }
 
-  BrowserContext* browser_context =
-      frame_tree_node_->navigator()->GetController()->GetBrowserContext();
-  RendererPreferences render_prefs = frame_tree_node_->render_manager()
-                                         ->current_host()
-                                         ->GetDelegate()
-                                         ->GetRendererPrefs(browser_context);
-  if (render_prefs.enable_do_not_track)
-    headers.SetHeader(kDoNotTrackHeader, "1");
+    BrowserContext* browser_context =
+        frame_tree_node_->navigator()->GetController()->GetBrowserContext();
+    RendererPreferences render_prefs = frame_tree_node_->render_manager()
+                                           ->current_host()
+                                           ->GetDelegate()
+                                           ->GetRendererPrefs(browser_context);
+    if (render_prefs.enable_do_not_track)
+      headers.SetHeader(kDoNotTrackHeader, "1");
+  }
 
   begin_params_->headers = headers.ToString();
 
@@ -578,7 +634,7 @@
   if (net_error != net::OK) {
     // Create a navigation handle so that the correct error code can be set on
     // it by OnRequestFailedInternal().
-    CreateNavigationHandle();
+    CreateNavigationHandle(false);
     OnRequestFailedInternal(network::URLLoaderCompletionStatus(net_error),
                             false /* skip_throttles */,
                             base::nullopt /* error_page_content */,
@@ -594,7 +650,7 @@
           LegacyProtocolInSubresourceCheckResult::BLOCK_REQUEST) {
     // Create a navigation handle so that the correct error code can be set on
     // it by OnRequestFailedInternal().
-    CreateNavigationHandle();
+    CreateNavigationHandle(false);
     OnRequestFailedInternal(
         network::URLLoaderCompletionStatus(net::ERR_ABORTED),
         false /* skip_throttles  */, base::nullopt /* error_page_content */,
@@ -605,7 +661,7 @@
     return;
   }
 
-  CreateNavigationHandle();
+  CreateNavigationHandle(false);
 
   if (IsURLHandledByNetworkStack(common_params_.url) &&
       !navigation_handle_->IsSameDocument()) {
@@ -650,14 +706,33 @@
   state_ = WAITING_FOR_RENDERER_RESPONSE;
 }
 
-void NavigationRequest::CreateNavigationHandle() {
-  DCHECK_EQ(frame_tree_node_->navigation_request(), this);
+void NavigationRequest::CreateNavigationHandle(bool is_for_commit) {
+  DCHECK(frame_tree_node_->navigation_request() == this || is_for_commit);
   FrameTreeNode* frame_tree_node = frame_tree_node_;
 
+  // Compute the redirect chain.
+  // TODO(clamy): Try to simplify this and have the redirects be part of
+  // CommonNavigationParams.
   std::vector<GURL> redirect_chain;
-  if (!begin_params_->client_side_redirect_url.is_empty())
+  if (!begin_params_->client_side_redirect_url.is_empty()) {
+    // |begin_params_->client_side_redirect_url| will be set when the navigation
+    // was triggered by a client-side redirect.
     redirect_chain.push_back(begin_params_->client_side_redirect_url);
-  redirect_chain.push_back(common_params_.url);
+  } else if (!request_params_.redirects.empty()) {
+    // Redirects that were specified at NavigationRequest creation time should
+    // be added to the list of redirects. In particular, if the
+    // NavigationRequest was created at commit time, redirects that happened
+    // during the navigation have been added to |request_params_.redirects| and
+    // should be passed to the NavigationHandle.
+    for (const auto& url : request_params_.redirects)
+      redirect_chain.push_back(url);
+  }
+
+  // Finally, add the current URL to the vector of redirects.
+  // Note: for NavigationRequests created at commit time, the current URL has
+  // been added to |request_params_.redirects|, so don't add it a second time.
+  if (!is_for_commit)
+    redirect_chain.push_back(common_params_.url);
 
   bool is_external_protocol =
       !GetContentClient()->browser()->IsHandledURL(common_params_.url);
@@ -673,7 +748,9 @@
               common_params_.navigation_type),
           common_params_.navigation_start, nav_entry_id_,
           common_params_.started_from_context_menu,
-          common_params_.initiator_csp_info.should_check_main_world_csp,
+          is_for_commit
+              ? CSPDisposition::CHECK
+              : common_params_.initiator_csp_info.should_check_main_world_csp,
           begin_params_->is_form_submission, std::move(navigation_ui_data_),
           common_params_.method, std::move(headers), common_params_.post_data,
           Referrer::SanitizeForRequest(common_params_.url,
@@ -683,7 +760,7 @@
           begin_params_->mixed_content_context_type,
           common_params_.href_translate, common_params_.input_start);
 
-  if (!frame_tree_node->navigation_request()) {
+  if (!frame_tree_node->navigation_request() && !is_for_commit) {
     // A callback could have cancelled this request synchronously in which case
     // |this| is deleted.
     return;
diff --git a/content/browser/frame_host/navigation_request.h b/content/browser/frame_host/navigation_request.h
index 24ea2fe..8431404 100644
--- a/content/browser/frame_host/navigation_request.h
+++ b/content/browser/frame_host/navigation_request.h
@@ -111,6 +111,18 @@
       mojom::NavigationClientAssociatedPtrInfo navigation_client,
       blink::mojom::NavigationInitiatorPtr navigation_initiator);
 
+  // Creates a request at commit time. This should only be used for
+  // renderer-initiated same-document navigations, and navigations whose
+  // original NavigationRequest has been destroyed by race-conditions.
+  // TODO(clamy): Eventually, this should only be called for same-document
+  // renderer-initiated navigations.
+  static std::unique_ptr<NavigationRequest> CreateForCommit(
+      FrameTreeNode* frame_tree_node,
+      NavigationEntryImpl* entry,
+      const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
+      bool is_renderer_initiated,
+      bool is_same_document);
+
   ~NavigationRequest() override;
 
   // Called on the UI thread by the Navigator to start the navigation.
@@ -174,8 +186,10 @@
   void SetWaitingForRendererResponse();
 
   // Creates a NavigationHandle. This should be called after any previous
-  // NavigationRequest for the FrameTreeNode has been destroyed.
-  void CreateNavigationHandle();
+  // NavigationRequest for the FrameTreeNode has been destroyed. |is_for_commit|
+  // should only be true when creating a NavigationHandle at commit time (this
+  // happens for renderer-initiated same-document navigations).
+  void CreateNavigationHandle(bool is_for_commit);
 
   // Returns ownership of the navigation handle.
   std::unique_ptr<NavigationHandleImpl> TakeNavigationHandle();
@@ -221,6 +235,7 @@
                     const RequestNavigationParams& request_params,
                     bool browser_initiated,
                     bool from_begin_navigation,
+                    bool is_for_commit,
                     const FrameNavigationEntry* frame_navigation_entry,
                     const NavigationEntryImpl* navitation_entry,
                     std::unique_ptr<NavigationUIData> navigation_ui_data,
diff --git a/content/browser/frame_host/navigator.h b/content/browser/frame_host/navigator.h
index 5d81f7a..0673b9c 100644
--- a/content/browser/frame_host/navigator.h
+++ b/content/browser/frame_host/navigator.h
@@ -64,17 +64,17 @@
                                     const base::string16& error_description) {}
 
   // The RenderFrameHostImpl has committed a navigation. The Navigator is
-  // responsible for resetting |navigation_handle| at the end of this method and
-  // should not attempt to keep it alive.
-  // Note: it is possible that |navigation_handle| is not the NavigationHandle
-  // stored in the RenderFrameHost that just committed. This happens for example
-  // when a same-page navigation commits while another navigation is ongoing.
-  // The Navigator should use the NavigationHandle provided by this method and
-  // not attempt to access the RenderFrameHost's NavigationsHandle.
+  // responsible for resetting |navigation_request| at the end of this method
+  // and should not attempt to keep it alive. Note: it is possible that
+  // |navigation_request| is not the NavigationRequest stored in the
+  // RenderFrameHost that just committed. This happens for example when a
+  // same-page navigation commits while another navigation is ongoing. The
+  // Navigator should use the NavigationRequest provided by this method and not
+  // attempt to access the RenderFrameHost's NavigationsRequests.
   virtual void DidNavigate(
       RenderFrameHostImpl* render_frame_host,
       const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
-      std::unique_ptr<NavigationHandleImpl> navigation_handle,
+      std::unique_ptr<NavigationRequest> navigation_request,
       bool was_within_same_document) {}
 
   // Called on a newly created subframe during a history navigation. The browser
diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc
index fb60e94..8b0efce 100644
--- a/content/browser/frame_host/navigator_impl.cc
+++ b/content/browser/frame_host/navigator_impl.cc
@@ -176,8 +176,9 @@
 void NavigatorImpl::DidNavigate(
     RenderFrameHostImpl* render_frame_host,
     const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
-    std::unique_ptr<NavigationHandleImpl> navigation_handle,
+    std::unique_ptr<NavigationRequest> navigation_request,
     bool was_within_same_document) {
+  DCHECK(navigation_request);
   FrameTreeNode* frame_tree_node = render_frame_host->frame_tree_node();
   FrameTree* frame_tree = frame_tree_node->frame_tree();
 
@@ -268,7 +269,7 @@
   LoadCommittedDetails details;
   bool did_navigate = controller_->RendererDidNavigate(
       render_frame_host, params, &details, is_same_document_navigation,
-      navigation_handle.get());
+      navigation_request.get());
 
   // If the history length and/or offset changed, update other renderers in the
   // FrameTree.
@@ -290,10 +291,10 @@
   if (details.type != NAVIGATION_TYPE_NAV_IGNORE && delegate_) {
     DCHECK_EQ(!render_frame_host->GetParent(),
               did_navigate ? details.is_main_frame : false);
-    navigation_handle->DidCommitNavigation(
+    navigation_request->navigation_handle()->DidCommitNavigation(
         params, did_navigate, details.did_replace_entry, details.previous_url,
         details.type, render_frame_host);
-    navigation_handle.reset();
+    navigation_request.reset();
   }
 
   if (!did_navigate)
diff --git a/content/browser/frame_host/navigator_impl.h b/content/browser/frame_host/navigator_impl.h
index 89f8f323..533d097 100644
--- a/content/browser/frame_host/navigator_impl.h
+++ b/content/browser/frame_host/navigator_impl.h
@@ -50,7 +50,7 @@
                             const base::string16& error_description) override;
   void DidNavigate(RenderFrameHostImpl* render_frame_host,
                    const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
-                   std::unique_ptr<NavigationHandleImpl> navigation_handle,
+                   std::unique_ptr<NavigationRequest> navigation_request,
                    bool was_within_same_document) override;
   bool StartHistoryNavigationInNewSubframe(
       RenderFrameHostImpl* render_frame_host,
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index c443a75..aa700f2 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -5606,32 +5606,24 @@
   }
 }
 
-std::unique_ptr<NavigationHandleImpl>
-RenderFrameHostImpl::TakeNavigationHandleForSameDocumentCommit(
+std::unique_ptr<NavigationRequest>
+RenderFrameHostImpl::TakeNavigationRequestForSameDocumentCommit(
     const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
   bool is_browser_initiated = (params.nav_entry_id != 0);
 
-  NavigationHandleImpl* navigation_handle =
-      same_document_navigation_request_
-          ? same_document_navigation_request_->navigation_handle()
-          : nullptr;
-
-  // A NavigationHandle is created for browser-initiated same-document
+  // A NavigationRequest is created for browser-initiated same-document
   // navigation. Try to take it if it's still available and matches the
   // current navigation.
-  if (is_browser_initiated && navigation_handle &&
-      navigation_handle->GetURL() == params.url) {
-    std::unique_ptr<NavigationHandleImpl> result_navigation_handle =
-        same_document_navigation_request_->TakeNavigationHandle();
-    same_document_navigation_request_.reset();
-    return result_navigation_handle;
+  if (is_browser_initiated && same_document_navigation_request_ &&
+      same_document_navigation_request_->common_params().url == params.url) {
+    return std::move(same_document_navigation_request_);
   }
 
-  // No existing NavigationHandle has been found. Create a new one, but don't
-  // reset any NavigationHandle tracking an ongoing navigation, since this may
+  // No existing NavigationRequest has been found. Create a new one, but don't
+  // reset any NavigationRequest tracking an ongoing navigation, since this may
   // lead to the cancellation of the navigation.
   // First, determine if the navigation corresponds to the pending navigation
-  // entry. This is the case if the NavigationHandle for a browser-initiated
+  // entry. This is the case if the NavigationRequest for a browser-initiated
   // same-document navigation was erased due to a race condition.
   // TODO(ahemery): Remove when the full mojo interface is in place.
   // (https://bugs.chromium.org/p/chromium/issues/detail?id=784904)
@@ -5644,38 +5636,28 @@
     is_renderer_initiated = pending_entry->is_renderer_initiated();
   }
 
-  return NavigationHandleImpl::Create(
-      params.url, params.redirects, frame_tree_node_, is_renderer_initiated,
-      true /* was_within_same_document */, base::TimeTicks::Now(),
-      pending_nav_entry_id,
-      false,                  // started_from_context_menu
-      CSPDisposition::CHECK,  // should_check_main_world_csp
-      false,                  // is_form_submission
-      nullptr);               // navigation_ui_data
+  return NavigationRequest::CreateForCommit(
+      frame_tree_node_, pending_entry, params, is_renderer_initiated,
+      true /* was_within_same_document */);
 }
 
-std::unique_ptr<NavigationHandleImpl>
-RenderFrameHostImpl::TakeNavigationHandleForCommit(
+std::unique_ptr<NavigationRequest>
+RenderFrameHostImpl::TakeNavigationRequestForCommit(
     const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
+  // Determine if the current NavigationRequest can be used.
   NavigationHandleImpl* navigation_handle =
       navigation_request_ ? navigation_request_->navigation_handle() : nullptr;
 
-  // Determine if the current NavigationHandle can be used.
-  //
   // TODO(lukasza, clamy): https://crbug.com/784904: Match commit IPC to proper
   // NavigationHandle without requiring URLs to match.
   if (navigation_handle && navigation_handle->GetURL() == params.url) {
-    std::unique_ptr<NavigationHandleImpl> result_navigation_handle =
-        navigation_request()->TakeNavigationHandle();
-    if (!IsPerNavigationMojoInterfaceEnabled())
-      navigation_request_.reset();
-    return result_navigation_handle;
+    return std::move(navigation_request_);
   }
 
   // At this point we know that the right/matching |navigation_request_| has
   // already been found based on navigation id look-up performed by
-  // RFHI::OnCrossDocumentCommitProcessed.  OTOH, we cannot use
-  // |navigation_handle|, because it has a mismatched URL (which would cause
+  // RFHI::OnCrossDocumentCommitProcessed.  OTOH, we cannot use its
+  // NavigationHandle, because it has a mismatched URL (which would cause
   // DCHECKs - for example in NavigationHandleImpl::DidCommitNavigation).
   //
   // Because of the above, if the URL does not match what the NavigationHandle
@@ -5695,7 +5677,7 @@
   // page - for example this can happen during CSP/frame-ancestors checks (see
   // https://crbug.com/759184).
 
-  int entry_id_for_data_nav = 0;
+  NavigationEntryImpl* entry_for_request = nullptr;
   bool is_renderer_initiated = true;
 
   // Make sure that the pending entry was really loaded via LoadDataWithBaseURL
@@ -5715,27 +5697,18 @@
     if (navigation_handle->GetURL() == params.base_url &&
         pending_entry_matches_handle &&
         !pending_entry->GetBaseURLForDataURL().is_empty()) {
-      entry_id_for_data_nav = navigation_handle->pending_nav_entry_id();
+      entry_for_request = pending_entry;
       is_renderer_initiated = pending_entry->is_renderer_initiated();
     }
-
-    // Going forward we'll use the NavigationHandle created below.  Therefore we
-    // should destroy the old |navigation_request_| and the NavigationHandle it
-    // owns.  This avoids the leak reported in https://crbug.com/872803.
-    navigation_request_.reset();
   }
 
   // There is no pending NavigationEntry in these cases, so pass 0 as the
   // pending_nav_entry_id. If the previous handle was a prematurely aborted
   // navigation loaded via LoadDataWithBaseURL, propagate the entry id.
-  return NavigationHandleImpl::Create(
-      params.url, params.redirects, frame_tree_node_, is_renderer_initiated,
-      false /* was_within_same_document */, base::TimeTicks::Now(),
-      entry_id_for_data_nav,
-      false,                  // started_from_context_menu
-      CSPDisposition::CHECK,  // should_check_main_world_csp
-      false,                  // is_form_submission
-      nullptr);               // navigation_ui_data
+  return NavigationRequest::CreateForCommit(
+      frame_tree_node_, entry_for_request, params,
+      is_renderer_initiated /* is_renderer_initiated */,
+      false /* is_same_document */);
 }
 
 void RenderFrameHostImpl::BeforeUnloadTimeout() {
@@ -6010,25 +5983,25 @@
   if (navigation_request_)
     was_discarded_ = navigation_request_->request_params().was_discarded;
 
-  // Find the appropriate NavigationHandle for this navigation.
-  std::unique_ptr<NavigationHandleImpl> navigation_handle;
+  // Find the appropriate NavigationRequest for this navigation.
+  std::unique_ptr<NavigationRequest> navigation_request;
 
   if (is_same_document_navigation) {
-    navigation_handle =
-        TakeNavigationHandleForSameDocumentCommit(*validated_params);
+    navigation_request =
+        TakeNavigationRequestForSameDocumentCommit(*validated_params);
   } else {
-    navigation_handle = TakeNavigationHandleForCommit(*validated_params);
+    navigation_request = TakeNavigationRequestForCommit(*validated_params);
   }
-
-  DCHECK(navigation_handle);
+  DCHECK(navigation_request);
+  DCHECK(navigation_request->navigation_handle());
 
   UpdateSiteURL(validated_params->url, validated_params->url_is_unreachable);
 
   accessibility_reset_count_ = 0;
   frame_tree_node()->navigator()->DidNavigate(this, *validated_params,
-                                              std::move(navigation_handle),
+                                              std::move(navigation_request),
                                               is_same_document_navigation);
-  if (IsPerNavigationMojoInterfaceEnabled() && !is_same_document_navigation)
+  if (!is_same_document_navigation)
     navigation_request_.reset();
   return true;
 }
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 820f2ef..12d88e6 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -1186,12 +1186,11 @@
                                  bool success,
                                  const base::string16& user_input);
 
-  // Returns ownership of the NavigationHandle associated with a navigation that
-  // just committed.
-  std::unique_ptr<NavigationHandleImpl>
-  TakeNavigationHandleForSameDocumentCommit(
+  // Returns ownership of the NavigationRequest associated with a navigation
+  // that just committed.
+  std::unique_ptr<NavigationRequest> TakeNavigationRequestForSameDocumentCommit(
       const FrameHostMsg_DidCommitProvisionalLoad_Params& params);
-  std::unique_ptr<NavigationHandleImpl> TakeNavigationHandleForCommit(
+  std::unique_ptr<NavigationRequest> TakeNavigationRequestForCommit(
       const FrameHostMsg_DidCommitProvisionalLoad_Params& params);
 
   // Helper to process the beforeunload ACK. |proceed| indicates whether the
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index ee4b0eb..af8281d 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -2191,15 +2191,12 @@
   // TODO(danakj): For subframes the old_render_frame_host will get swapped out
   // and eventually deleted on SwapOutACK. So why would we want to Hide() it
   // here anyways?
-  // TODO(danakj): But regardless if this old frame was a local root, why dont
-  // just go through RFH::GetView() and not need to involve RVH?
-  if (is_main_frame &&
-      old_render_frame_host->render_view_host()->GetWidget()->GetView()) {
-    // TODO(crbug.com/908582): Note that this hides the RenderWidget but does
-    // not hide the Page. If it did hide the Page then making a new
-    // RenderFrameHost on another call to here would need to make sure it showed
-    // the RenderView when the RenderWidget was created as visible.
-    old_render_frame_host->render_view_host()->GetWidget()->GetView()->Hide();
+  if (is_main_frame && old_render_frame_host->GetView()) {
+    // Note that this hides the RenderWidget but does not hide the Page. If it
+    // did hide the Page then making a new RenderFrameHost on another call to
+    // here would need to make sure it showed the RenderView when the
+    // RenderWidget was created as visible.
+    old_render_frame_host->GetView()->Hide();
   }
 
   // Make sure the size is up to date.  (Fix for bug 1079768.)
diff --git a/content/public/test/test_browser_context.cc b/content/public/test/test_browser_context.cc
index fa98268..25df72d 100644
--- a/content/public/test/test_browser_context.cc
+++ b/content/public/test/test_browser_context.cc
@@ -9,6 +9,7 @@
 #include "base/files/file_path.h"
 #include "base/logging.h"
 #include "base/single_thread_task_runner.h"
+#include "base/task/task_scheduler/task_scheduler.h"
 #include "base/test/null_task_runner.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/permission_controller_delegate.h"
@@ -70,6 +71,13 @@
 
   NotifyWillBeDestroyed(this);
   ShutdownStoragePartitions();
+
+  // disk_cache::SimpleBackendImpl performs all disk IO on the TaskScheduler
+  // threads. The cache is initialized in the directory owned by
+  // |browser_context_dir_| and so ScopedTempDir destructor may race with cache
+  // IO (see https://crbug.com/910029 for example). Let all pending IO
+  // operations finish before destroying |browser_context_dir_|.
+  base::TaskScheduler::GetInstance()->FlushForTesting();
 }
 
 base::FilePath TestBrowserContext::TakePath() {
diff --git a/content/renderer/loader/url_loader_client_impl.cc b/content/renderer/loader/url_loader_client_impl.cc
index f9d5578..faeb453 100644
--- a/content/renderer/loader/url_loader_client_impl.cc
+++ b/content/renderer/loader/url_loader_client_impl.cc
@@ -234,7 +234,7 @@
 
 void URLLoaderClientImpl::OnReceiveResponse(
     const network::ResourceResponseHead& response_head) {
-  has_received_response_ = true;
+  has_received_response_head_ = true;
   if (NeedsStoringMessage()) {
     StoreAndDispatch(
         std::make_unique<DeferredOnReceiveResponse>(response_head));
@@ -246,7 +246,7 @@
 void URLLoaderClientImpl::OnReceiveRedirect(
     const net::RedirectInfo& redirect_info,
     const network::ResourceResponseHead& response_head) {
-  DCHECK(!has_received_response_);
+  DCHECK(!has_received_response_head_);
   DCHECK(!body_consumer_);
   if (base::FeatureList::IsEnabled(network::features::kNetworkService) &&
       !bypass_redirect_checks_ &&
@@ -300,7 +300,9 @@
 void URLLoaderClientImpl::OnStartLoadingResponseBody(
     mojo::ScopedDataPipeConsumerHandle body) {
   DCHECK(!body_consumer_);
-  DCHECK(has_received_response_);
+  DCHECK(has_received_response_head_);
+  DCHECK(!has_received_response_body_);
+  has_received_response_body_ = true;
 
   if (pass_response_pipe_to_dispatcher_) {
     resource_dispatcher_->OnStartLoadingResponseBody(request_id_,
@@ -323,6 +325,8 @@
     const network::URLLoaderCompletionStatus& status) {
   has_received_complete_ = true;
   if (!body_consumer_) {
+    // Except for errors, there must always be a response's body.
+    DCHECK(has_received_response_body_ || status.error_code != net::OK);
     if (NeedsStoringMessage()) {
       StoreAndDispatch(std::make_unique<DeferredOnComplete>(status));
     } else {
diff --git a/content/renderer/loader/url_loader_client_impl.h b/content/renderer/loader/url_loader_client_impl.h
index 8ebd277..ba980c8 100644
--- a/content/renderer/loader/url_loader_client_impl.h
+++ b/content/renderer/loader/url_loader_client_impl.h
@@ -98,7 +98,8 @@
   scoped_refptr<URLResponseBodyConsumer> body_consumer_;
   std::vector<std::unique_ptr<DeferredMessage>> deferred_messages_;
   const int request_id_;
-  bool has_received_response_ = false;
+  bool has_received_response_head_ = false;
+  bool has_received_response_body_ = false;
   bool has_received_complete_ = false;
   bool is_deferred_ = false;
   bool pass_response_pipe_to_dispatcher_ = false;
diff --git a/content/renderer/loader/url_loader_client_impl_unittest.cc b/content/renderer/loader/url_loader_client_impl_unittest.cc
index 1ee557c..4ecade12 100644
--- a/content/renderer/loader/url_loader_client_impl_unittest.cc
+++ b/content/renderer/loader/url_loader_client_impl_unittest.cc
@@ -156,20 +156,6 @@
   EXPECT_EQ(8, request_peer_context_.total_encoded_data_length);
 }
 
-TEST_F(URLLoaderClientImplTest, OnCompleteWithoutResponseBody) {
-  network::ResourceResponseHead response_head;
-  network::URLLoaderCompletionStatus status;
-
-  url_loader_client_->OnReceiveResponse(response_head);
-  url_loader_client_->OnComplete(status);
-
-  EXPECT_FALSE(request_peer_context_.received_response);
-  EXPECT_FALSE(request_peer_context_.complete);
-  base::RunLoop().RunUntilIdle();
-  EXPECT_TRUE(request_peer_context_.received_response);
-  EXPECT_TRUE(request_peer_context_.complete);
-}
-
 TEST_F(URLLoaderClientImplTest, OnCompleteWithResponseBody) {
   network::ResourceResponseHead response_head;
   network::URLLoaderCompletionStatus status;
@@ -291,6 +277,10 @@
   network::URLLoaderCompletionStatus status;
 
   url_loader_client_->OnReceiveResponse(response_head);
+  mojo::DataPipe data_pipe;
+  data_pipe.producer_handle.reset();  // Empty body.
+  url_loader_client_->OnStartLoadingResponseBody(
+      std::move(data_pipe.consumer_handle));
   url_loader_client_->OnComplete(status);
 
   EXPECT_FALSE(request_peer_context_.received_response);
@@ -466,6 +456,10 @@
   network::URLLoaderCompletionStatus status;
 
   url_loader_client_->OnReceiveResponse(response_head);
+  mojo::DataPipe data_pipe;
+  data_pipe.producer_handle.reset();  // Empty body.
+  url_loader_client_->OnStartLoadingResponseBody(
+      std::move(data_pipe.consumer_handle));
 
   url_loader_client_->OnTransferSizeUpdated(4);
   url_loader_client_->OnComplete(status);
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 805779fa..6ac66a6 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -2735,11 +2735,11 @@
       settings.top_controls_hide_threshold = hide_threshold;
   }
 
-  // Blink sends cc a layer list and property trees when either Blink Gen
-  // Property Trees or Slimming Paint V2 are enabled.
+  // Blink sends cc a layer list and property trees when either
+  // BlinkGenPropertyTrees or CompositeAfterPaint are enabled.
   settings.use_layer_lists =
       blink::WebRuntimeFeatures::IsBlinkGenPropertyTreesEnabled() ||
-      blink::WebRuntimeFeatures::IsSlimmingPaintV2Enabled();
+      blink::WebRuntimeFeatures::IsCompositeAfterPaintEnabled();
 
   // Blink currently doesn't support setting fractional scroll offsets so CC
   // must send integer values. We plan to eventually make Blink use fractional
diff --git a/content/test/data/accessibility/aria/aria-grid-extra-wrap-elems.html b/content/test/data/accessibility/aria/aria-grid-extra-wrap-elems.html
index 9cc0f36..8cbe854 100644
--- a/content/test/data/accessibility/aria/aria-grid-extra-wrap-elems.html
+++ b/content/test/data/accessibility/aria/aria-grid-extra-wrap-elems.html
@@ -2,8 +2,8 @@
 @MAC-ALLOW:AXRole*
 @WIN-ALLOW:*SELECTABLE
 @WIN-ALLOW:xml-roles*
-@BLINK-ALLOW:*ColumnCount*
-@BLINK-ALLOW:*RowCount*
+@BLINK-ALLOW:tableColumnCount*
+@BLINK-ALLOW:tableRowCount*
 @BLINK-ALLOW:id*
 @BLINK-ALLOW:table*Index*
 -->
diff --git a/content/test/data/accessibility/aria/aria-illegal-val.html b/content/test/data/accessibility/aria/aria-illegal-val.html
index df2f138..724306e 100644
--- a/content/test/data/accessibility/aria/aria-illegal-val.html
+++ b/content/test/data/accessibility/aria/aria-illegal-val.html
@@ -16,6 +16,7 @@
 @BLINK-DENY:hierarchical*
 @BLINK-DENY:*ForRange*
 @BLINK-ALLOW:ariaCurrent*
+@BLINK-ALLOW:ariaInvalidValue*
 @BLINK-ALLOW:autoComplete*
 @BLINK-ALLOW:busy*
 @BLINK-ALLOW:checked*
@@ -76,4 +77,4 @@
      and ruin the rest of the test. -->
 <div aria-hidden="X-ILLEGAL" aria-label="Hidden illegal"></div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/content/test/data/accessibility/aria/aria-invalid.html b/content/test/data/accessibility/aria/aria-invalid.html
index cab3c12..7f695d5a 100644
--- a/content/test/data/accessibility/aria/aria-invalid.html
+++ b/content/test/data/accessibility/aria/aria-invalid.html
@@ -1,5 +1,6 @@
 <!DOCTYPE html>
 <!--
+@BLINK-ALLOW:ariaInvalidValue*
 @BLINK-ALLOW:invalidState*
 @MAC-ALLOW:AXInvalid=*
 @WIN-ALLOW:ia2_hypertext*
diff --git a/content/test/gpu/gpu_tests/pixel_expectations.py b/content/test/gpu/gpu_tests/pixel_expectations.py
index 746bd68..09da641c 100644
--- a/content/test/gpu/gpu_tests/pixel_expectations.py
+++ b/content/test/gpu/gpu_tests/pixel_expectations.py
@@ -137,3 +137,13 @@
     self.Fail('Pixel_Video_MP4_FourColors_Rot_90', ['android'], bug=911898)
     self.Fail('Pixel_Video_MP4_FourColors_Rot_180', ['android'], bug=911898)
     self.Fail('Pixel_Video_MP4_FourColors_Rot_270', ['android'], bug=911898)
+
+    # Fails on Mac Pro FYI Release (AMD)
+    self.Fail('Pixel_Video_MP4_FourColors_Aspect_4x3',
+        ['mac', ('amd', 0x679e)], bug=911413)
+    self.Fail('Pixel_Video_MP4_FourColors_Rot_90',
+        ['mac', ('amd', 0x679e)], bug=911413)
+    self.Fail('Pixel_Video_MP4_FourColors_Rot_180',
+        ['mac', ('amd', 0x679e)], bug=911413)
+    self.Fail('Pixel_Video_MP4_FourColors_Rot_270',
+        ['mac', ('amd', 0x679e)], bug=911413)
diff --git a/content/test/test_content_client.cc b/content/test/test_content_client.cc
index 76afc4e1..a266ce2 100644
--- a/content/test/test_content_client.cc
+++ b/content/test/test_content_client.cc
@@ -44,7 +44,7 @@
 #if defined(OS_ANDROID)
     ui::ResourceBundle::InitSharedInstanceWithLocale(
         base::android::GetDefaultLocaleString(), NULL,
-        ui::ResourceBundle::LOAD_COMMON_RESOURCES);
+        ui::ResourceBundle::DO_NOT_LOAD_COMMON_RESOURCES);
 
     ui::LoadMainAndroidPackFile("assets/content_shell.pak",
                                 content_shell_pack_path);
diff --git a/device/bluetooth/dbus/bluetooth_dbus_client_bundle.cc b/device/bluetooth/dbus/bluetooth_dbus_client_bundle.cc
index de16d2e..3258c8b 100644
--- a/device/bluetooth/dbus/bluetooth_dbus_client_bundle.cc
+++ b/device/bluetooth/dbus/bluetooth_dbus_client_bundle.cc
@@ -59,7 +59,6 @@
     bluetooth_gatt_service_client_.reset(BluetoothGattServiceClient::Create());
 
     alternate_bluetooth_adapter_client_.reset(BluetoothAdapterClient::Create());
-    alternate_bluetooth_device_client_.reset(BluetoothDeviceClient::Create());
   } else {
     bluetooth_adapter_client_.reset(new FakeBluetoothAdapterClient);
     bluetooth_le_advertising_manager_client_.reset(
@@ -80,7 +79,6 @@
     bluetooth_gatt_service_client_.reset(new FakeBluetoothGattServiceClient);
 
     alternate_bluetooth_adapter_client_.reset(new FakeBluetoothAdapterClient);
-    alternate_bluetooth_device_client_.reset(new FakeBluetoothDeviceClient);
   }
 }
 
diff --git a/device/bluetooth/dbus/bluetooth_dbus_client_bundle.h b/device/bluetooth/dbus/bluetooth_dbus_client_bundle.h
index 97945796..3561896a 100644
--- a/device/bluetooth/dbus/bluetooth_dbus_client_bundle.h
+++ b/device/bluetooth/dbus/bluetooth_dbus_client_bundle.h
@@ -90,10 +90,6 @@
     return alternate_bluetooth_adapter_client_.get();
   }
 
-  BluetoothDeviceClient* alternate_bluetooth_device_client() {
-    return alternate_bluetooth_device_client_.get();
-  }
-
  private:
   friend class BluezDBusManagerSetter;
 
@@ -119,7 +115,6 @@
 
   // See "Alternate D-Bus Client" note in bluez_dbus_manager.h.
   std::unique_ptr<BluetoothAdapterClient> alternate_bluetooth_adapter_client_;
-  std::unique_ptr<BluetoothDeviceClient> alternate_bluetooth_device_client_;
 
   DISALLOW_COPY_AND_ASSIGN(BluetoothDBusClientBundle);
 };
diff --git a/device/bluetooth/dbus/bluez_dbus_manager.cc b/device/bluetooth/dbus/bluez_dbus_manager.cc
index 18971d7..c568331 100644
--- a/device/bluetooth/dbus/bluez_dbus_manager.cc
+++ b/device/bluetooth/dbus/bluez_dbus_manager.cc
@@ -169,11 +169,6 @@
   return client_bundle_->alternate_bluetooth_adapter_client();
 }
 
-BluetoothDeviceClient* BluezDBusManager::GetAlternateBluetoothDeviceClient() {
-  DCHECK(object_manager_support_known_);
-  return client_bundle_->alternate_bluetooth_device_client();
-}
-
 void BluezDBusManager::OnObjectManagerSupported(dbus::Response* response) {
   VLOG(1) << "Bluetooth supported. Initializing clients.";
   object_manager_supported_ = true;
@@ -234,8 +229,6 @@
 
   client_bundle_->alternate_bluetooth_adapter_client()->Init(
       alternate_bus_, bluetooth_service_name);
-  client_bundle_->alternate_bluetooth_device_client()->Init(
-      alternate_bus_, bluetooth_service_name);
 }
 
 std::string BluezDBusManager::GetBluetoothServiceName() {
@@ -408,10 +401,4 @@
       ->client_bundle_->alternate_bluetooth_adapter_client_ = std::move(client);
 }
 
-void BluezDBusManagerSetter::SetAlternateBluetoothDeviceClient(
-    std::unique_ptr<BluetoothDeviceClient> client) {
-  bluez::BluezDBusManager::Get()
-      ->client_bundle_->alternate_bluetooth_device_client_ = std::move(client);
-}
-
 }  // namespace bluez
diff --git a/device/bluetooth/dbus/bluez_dbus_manager.h b/device/bluetooth/dbus/bluez_dbus_manager.h
index 6863eae..2202240 100644
--- a/device/bluetooth/dbus/bluez_dbus_manager.h
+++ b/device/bluetooth/dbus/bluez_dbus_manager.h
@@ -126,7 +126,6 @@
 
   // See "Alternate D-Bus Client" note above.
   BluetoothAdapterClient* GetAlternateBluetoothAdapterClient();
-  BluetoothDeviceClient* GetAlternateBluetoothDeviceClient();
 
  private:
   friend class BluezDBusManagerSetter;
@@ -202,8 +201,6 @@
 
   void SetAlternateBluetoothAdapterClient(
       std::unique_ptr<BluetoothAdapterClient> client);
-  void SetAlternateBluetoothDeviceClient(
-      std::unique_ptr<BluetoothDeviceClient> client);
 
  private:
   friend class BluezDBusManager;
diff --git a/docs/infra/cq_builders.md b/docs/infra/cq_builders.md
index 7dc1f67..52a1e51 100644
--- a/docs/infra/cq_builders.md
+++ b/docs/infra/cq_builders.md
@@ -132,8 +132,8 @@
     * [`//third_party/blink/renderer/platform/graphics/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/graphics/)
     * [`//third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees)
     * [`//third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees)
-    * [`//third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2)
-    * [`//third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/)
+    * [`//third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint)
+    * [`//third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/)
 
 * [linux_chromium_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_dbg_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_chromium_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_dbg_ng))
 
@@ -157,8 +157,8 @@
     * [`//third_party/blink/renderer/platform/graphics/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/graphics/)
     * [`//third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees)
     * [`//third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees)
-    * [`//third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2)
-    * [`//third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/)
+    * [`//third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint)
+    * [`//third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/)
 
 * [linux_mojo](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_mojo) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_mojo)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_mojo))
 
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc
index a33ea4c..77f9b8a 100644
--- a/extensions/browser/extension_prefs.cc
+++ b/extensions/browser/extension_prefs.cc
@@ -580,7 +580,8 @@
       extension_id, JoinPrefs(pref_key, kPrefScriptableHosts),
       &scriptable_hosts, UserScript::ValidUserScriptSchemes());
 
-  return std::make_unique<PermissionSet>(apis, manifest_permissions,
+  return std::make_unique<PermissionSet>(std::move(apis),
+                                         std::move(manifest_permissions),
                                          explicit_hosts, scriptable_hosts);
 }
 
diff --git a/extensions/common/extension_messages.cc b/extensions/common/extension_messages.cc
index 8d68cd0..8ceeccf 100644
--- a/extensions/common/extension_messages.cc
+++ b/extensions/common/extension_messages.cc
@@ -32,21 +32,24 @@
 
 ExtensionMsg_PermissionSetStruct::ExtensionMsg_PermissionSetStruct(
     const PermissionSet& permissions)
-    : apis(permissions.apis()),
-      manifest_permissions(permissions.manifest_permissions()),
+    : apis(permissions.apis().Clone()),
+      manifest_permissions(permissions.manifest_permissions().Clone()),
       explicit_hosts(permissions.explicit_hosts()),
-      scriptable_hosts(permissions.scriptable_hosts()) {
-}
+      scriptable_hosts(permissions.scriptable_hosts()) {}
+
+ExtensionMsg_PermissionSetStruct::~ExtensionMsg_PermissionSetStruct() {}
 
 ExtensionMsg_PermissionSetStruct::ExtensionMsg_PermissionSetStruct(
-    const ExtensionMsg_PermissionSetStruct& other) = default;
+    ExtensionMsg_PermissionSetStruct&& other) = default;
 
-ExtensionMsg_PermissionSetStruct::~ExtensionMsg_PermissionSetStruct() {
-}
+ExtensionMsg_PermissionSetStruct& ExtensionMsg_PermissionSetStruct::operator=(
+    ExtensionMsg_PermissionSetStruct&& other) = default;
 
 std::unique_ptr<const PermissionSet>
 ExtensionMsg_PermissionSetStruct::ToPermissionSet() const {
-  return std::make_unique<PermissionSet>(apis, manifest_permissions,
+  // TODO(devlin): Make this destructive so we can std::move() the members.
+  return std::make_unique<PermissionSet>(apis.Clone(),
+                                         manifest_permissions.Clone(),
                                          explicit_hosts, scriptable_hosts);
 }
 
diff --git a/extensions/common/extension_messages.h b/extensions/common/extension_messages.h
index d4140c6..193a7b0 100644
--- a/extensions/common/extension_messages.h
+++ b/extensions/common/extension_messages.h
@@ -12,6 +12,7 @@
 #include <string>
 #include <vector>
 
+#include "base/macros.h"
 #include "base/memory/shared_memory.h"
 #include "base/values.h"
 #include "content/public/common/common_param_traits.h"
@@ -306,16 +307,20 @@
   ExtensionMsg_PermissionSetStruct();
   explicit ExtensionMsg_PermissionSetStruct(
       const extensions::PermissionSet& permissions);
-  ExtensionMsg_PermissionSetStruct(
-      const ExtensionMsg_PermissionSetStruct& other);
   ~ExtensionMsg_PermissionSetStruct();
 
+  ExtensionMsg_PermissionSetStruct(ExtensionMsg_PermissionSetStruct&& other);
+  ExtensionMsg_PermissionSetStruct& operator=(
+      ExtensionMsg_PermissionSetStruct&& other);
+
   std::unique_ptr<const extensions::PermissionSet> ToPermissionSet() const;
 
   extensions::APIPermissionSet apis;
   extensions::ManifestPermissionSet manifest_permissions;
   extensions::URLPatternSet explicit_hosts;
   extensions::URLPatternSet scriptable_hosts;
+
+  DISALLOW_COPY_AND_ASSIGN(ExtensionMsg_PermissionSetStruct);
 };
 
 struct ExtensionMsg_Loaded_Params {
diff --git a/extensions/common/extension_messages_unittest.cc b/extensions/common/extension_messages_unittest.cc
index 98ffbbf6..07c0d5e 100644
--- a/extensions/common/extension_messages_unittest.cc
+++ b/extensions/common/extension_messages_unittest.cc
@@ -67,11 +67,13 @@
   LOG(WARNING) << required_permissions.apis().size();
   EXPECT_TRUE(
       extension->permissions_data()->HasAPIPermission(APIPermission::kAlarms));
-  APIPermissionSet tab_permissions;
-  tab_permissions.insert(APIPermission::kDns);
-  extension->permissions_data()->UpdateTabSpecificPermissions(
-      1, PermissionSet(tab_permissions, ManifestPermissionSet(),
-                       URLPatternSet(), URLPatternSet()));
+  {
+    APIPermissionSet tab_permissions;
+    tab_permissions.insert(APIPermission::kDns);
+    extension->permissions_data()->UpdateTabSpecificPermissions(
+        1, PermissionSet(std::move(tab_permissions), ManifestPermissionSet(),
+                         URLPatternSet(), URLPatternSet()));
+  }
   URLPatternSet runtime_blocked_hosts;
   AddPattern("*://*.example.*/*", &runtime_blocked_hosts);
   URLPatternSet runtime_allowed_hosts;
diff --git a/extensions/common/manifest_handlers/permissions_parser.cc b/extensions/common/manifest_handlers/permissions_parser.cc
index 636fe52f..27639b7 100644
--- a/extensions/common/manifest_handlers/permissions_parser.cc
+++ b/extensions/common/manifest_handlers/permissions_parser.cc
@@ -273,7 +273,7 @@
                                required_api_permissions,
                                &new_optional_api_permissions);
 
-  *optional_api_permissions = new_optional_api_permissions;
+  *optional_api_permissions = std::move(new_optional_api_permissions);
 }
 
 void RemoveOverlappingHostPermissions(
@@ -356,18 +356,18 @@
   ManifestHandler::AddExtensionInitialRequiredPermissions(
       extension, &initial_required_permissions_->manifest_permissions);
 
-  std::unique_ptr<const PermissionSet> required_permissions(
-      new PermissionSet(initial_required_permissions_->api_permissions,
-                        initial_required_permissions_->manifest_permissions,
-                        initial_required_permissions_->host_permissions,
-                        initial_required_permissions_->scriptable_hosts));
+  std::unique_ptr<const PermissionSet> required_permissions(new PermissionSet(
+      initial_required_permissions_->api_permissions.Clone(),
+      initial_required_permissions_->manifest_permissions.Clone(),
+      initial_required_permissions_->host_permissions,
+      initial_required_permissions_->scriptable_hosts));
   extension->SetManifestData(
       keys::kPermissions,
       std::make_unique<ManifestPermissions>(std::move(required_permissions)));
 
   std::unique_ptr<const PermissionSet> optional_permissions(new PermissionSet(
-      initial_optional_permissions_->api_permissions,
-      initial_optional_permissions_->manifest_permissions,
+      initial_optional_permissions_->api_permissions.Clone(),
+      initial_optional_permissions_->manifest_permissions.Clone(),
       initial_optional_permissions_->host_permissions, URLPatternSet()));
   extension->SetManifestData(
       keys::kOptionalPermissions,
diff --git a/extensions/common/permissions/base_set_operators.h b/extensions/common/permissions/base_set_operators.h
index 7e878367..729b3f7 100644
--- a/extensions/common/permissions/base_set_operators.h
+++ b/extensions/common/permissions/base_set_operators.h
@@ -76,12 +76,11 @@
                   "U ptr must implicitly convert to T ptr");
   }
 
-  explicit BaseSetOperators(const BaseSetOperators<T>& other) { Assign(other); }
+  BaseSetOperators(BaseSetOperators<T>&& other) = default;
+  BaseSetOperators<T>& operator=(BaseSetOperators<T>&& rhs) = default;
 
   ~BaseSetOperators() {}
 
-  T& operator=(const BaseSetOperators<T>& rhs) { return Assign(rhs); }
-
   bool operator==(const T& rhs) const {
     return Equal(rhs);
   }
@@ -90,15 +89,11 @@
     return !operator==(rhs);
   }
 
-  T& Assign(const BaseSetOperators<T>& rhs) {
-    map_.clear();
-    const_iterator it = rhs.begin();
-    const const_iterator end = rhs.end();
-    while (it != end) {
-      insert(it->Clone());
-      ++it;
-    }
-    return *static_cast<T*>(this);
+  T Clone() const {
+    T result;
+    for (const auto* item : *this)
+      result.insert(item->Clone());
+    return result;
   }
 
   bool Equal(const T& rhs) const {
diff --git a/extensions/common/permissions/base_set_operators_unittest.cc b/extensions/common/permissions/base_set_operators_unittest.cc
index a0ec005..8e25f0a 100644
--- a/extensions/common/permissions/base_set_operators_unittest.cc
+++ b/extensions/common/permissions/base_set_operators_unittest.cc
@@ -74,7 +74,7 @@
   set1.insert(std::make_unique<TestPermission>(1));
   set1.insert(std::make_unique<TestPermission>(2));
 
-  TestPermissionSet set2 = set1;
+  TestPermissionSet set2 = set1.Clone();
   EXPECT_EQ(set1, set2);
   EXPECT_EQ(2u, set2.size());
   EXPECT_EQ(1u, set2.count(1));
@@ -87,7 +87,7 @@
   EXPECT_EQ(1u, set2.count(3));
 
   // Assigning should clear the set (https://crbug.com/908619).
-  set2 = set1;
+  set2 = set1.Clone();
   EXPECT_EQ(set1, set2);
   EXPECT_EQ(2u, set2.size());
   EXPECT_EQ(1u, set2.count(1));
@@ -115,19 +115,14 @@
 
   {
     SCOPED_TRACE("Assignment Operator");
-    TestPermissionSet copy = set;
-    validate(set, copy);
-  }
-
-  {
-    SCOPED_TRACE("Copy Constructor");
-    TestPermissionSet copy(set);
+    TestPermissionSet copy = set.Clone();
     validate(set, copy);
   }
 
   {
     SCOPED_TRACE("Assigned to Return Value");
-    TestPermissionSet copy = ([&]() -> TestPermissionSet { return set; })();
+    TestPermissionSet copy =
+        ([&]() -> TestPermissionSet { return set.Clone(); })();
     validate(set, copy);
   }
 }
diff --git a/extensions/common/permissions/permission_set.cc b/extensions/common/permissions/permission_set.cc
index a533286..8d4c2b5e 100644
--- a/extensions/common/permissions/permission_set.cc
+++ b/extensions/common/permissions/permission_set.cc
@@ -31,12 +31,12 @@
 //
 
 PermissionSet::PermissionSet() {}
-PermissionSet::PermissionSet(const APIPermissionSet& apis,
-                             const ManifestPermissionSet& manifest_permissions,
+PermissionSet::PermissionSet(APIPermissionSet apis,
+                             ManifestPermissionSet manifest_permissions,
                              const URLPatternSet& explicit_hosts,
                              const URLPatternSet& scriptable_hosts)
-    : apis_(apis),
-      manifest_permissions_(manifest_permissions),
+    : apis_(std::move(apis)),
+      manifest_permissions_(std::move(manifest_permissions)),
       scriptable_hosts_(scriptable_hosts) {
   AddPatternsAndRemovePaths(explicit_hosts, &explicit_hosts_);
   InitImplicitPermissions();
@@ -63,7 +63,8 @@
   URLPatternSet scriptable_hosts = URLPatternSet::CreateDifference(
       set1.scriptable_hosts(), set2.scriptable_hosts());
 
-  return base::WrapUnique(new PermissionSet(apis, manifest_permissions,
+  return base::WrapUnique(new PermissionSet(std::move(apis),
+                                            std::move(manifest_permissions),
                                             explicit_hosts, scriptable_hosts));
 }
 
@@ -85,7 +86,8 @@
   URLPatternSet scriptable_hosts = URLPatternSet::CreateIntersection(
       set1.scriptable_hosts(), set2.scriptable_hosts(), intersection_behavior);
 
-  return base::WrapUnique(new PermissionSet(apis, manifest_permissions,
+  return base::WrapUnique(new PermissionSet(std::move(apis),
+                                            std::move(manifest_permissions),
                                             explicit_hosts, scriptable_hosts));
 }
 
@@ -107,7 +109,8 @@
   URLPatternSet scriptable_hosts = URLPatternSet::CreateUnion(
       set1.scriptable_hosts(), set2.scriptable_hosts());
 
-  return base::WrapUnique(new PermissionSet(apis, manifest_permissions,
+  return base::WrapUnique(new PermissionSet(std::move(apis),
+                                            std::move(manifest_permissions),
                                             explicit_hosts, scriptable_hosts));
 }
 
@@ -218,7 +221,12 @@
   return effective_hosts().MatchesURL(url);
 }
 
-PermissionSet::PermissionSet(const PermissionSet& permissions) = default;
+PermissionSet::PermissionSet(const PermissionSet& other)
+    : apis_(other.apis_.Clone()),
+      manifest_permissions_(other.manifest_permissions_.Clone()),
+      explicit_hosts_(other.explicit_hosts_),
+      scriptable_hosts_(other.scriptable_hosts_),
+      effective_hosts_(other.effective_hosts_) {}
 
 void PermissionSet::InitImplicitPermissions() {
   // The downloads permission implies the internal version as well.
diff --git a/extensions/common/permissions/permission_set.h b/extensions/common/permissions/permission_set.h
index e04c5dd..50ba93d 100644
--- a/extensions/common/permissions/permission_set.h
+++ b/extensions/common/permissions/permission_set.h
@@ -35,8 +35,8 @@
   // permissions, manifest key permissions, host permissions, and scriptable
   // hosts. The effective hosts of the newly created permission set will be
   // inferred from the given host permissions.
-  PermissionSet(const APIPermissionSet& apis,
-                const ManifestPermissionSet& manifest_permissions,
+  PermissionSet(APIPermissionSet apis,
+                ManifestPermissionSet manifest_permissions,
                 const URLPatternSet& explicit_hosts,
                 const URLPatternSet& scriptable_hosts);
   ~PermissionSet();
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc
index 633fa30..374d92a3 100644
--- a/extensions/renderer/dispatcher.cc
+++ b/extensions/renderer/dispatcher.cc
@@ -1323,10 +1323,10 @@
     if (info.url_patterns.MatchesURL(url)) {
       APIPermissionSet new_permissions;
       APIPermissionSet::Union(permissions, info.permissions, &new_permissions);
-      permissions = new_permissions;
+      permissions = std::move(new_permissions);
     }
   }
-  context->set_content_capabilities(permissions);
+  context->set_content_capabilities(std::move(permissions));
 }
 
 void Dispatcher::PopulateSourceMap() {
diff --git a/extensions/renderer/native_extension_bindings_system_unittest.cc b/extensions/renderer/native_extension_bindings_system_unittest.cc
index 764f8f731..6000867 100644
--- a/extensions/renderer/native_extension_bindings_system_unittest.cc
+++ b/extensions/renderer/native_extension_bindings_system_unittest.cc
@@ -863,7 +863,8 @@
     apis.insert(APIPermission::kPower);
     apis.insert(APIPermission::kIdle);
     extension->permissions_data()->SetPermissions(
-        std::make_unique<PermissionSet>(apis, ManifestPermissionSet(),
+        std::make_unique<PermissionSet>(std::move(apis),
+                                        ManifestPermissionSet(),
                                         URLPatternSet(), URLPatternSet()),
         std::make_unique<PermissionSet>());
     bindings_system()->OnExtensionPermissionsUpdated(extension->id());
diff --git a/extensions/renderer/script_context.h b/extensions/renderer/script_context.h
index f2ac3b89..55f3462d 100644
--- a/extensions/renderer/script_context.h
+++ b/extensions/renderer/script_context.h
@@ -203,8 +203,8 @@
                           const std::string& error) override;
 
   // Grants a set of content capabilities to this context.
-  void set_content_capabilities(const APIPermissionSet& capabilities) {
-    content_capabilities_ = capabilities;
+  void set_content_capabilities(APIPermissionSet capabilities) {
+    content_capabilities_ = std::move(capabilities);
   }
 
   // Indicates if this context has an effective API permission either by being
diff --git a/infra/config/branch/cq.cfg b/infra/config/branch/cq.cfg
index 5a93755..062f0a8 100644
--- a/infra/config/branch/cq.cfg
+++ b/infra/config/branch/cq.cfg
@@ -140,8 +140,8 @@
         path_regexp: "third_party/blink/renderer/platform/graphics/.+"
         path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees"
         path_regexp: "third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees"
-        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2"
-        path_regexp: "third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/.+"
+        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint"
+        path_regexp: "third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+"
       }
       builders {
         name: "linux_chromium_dbg_ng"
@@ -162,8 +162,8 @@
         path_regexp: "third_party/blink/renderer/platform/graphics/.+"
         path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees"
         path_regexp: "third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees"
-        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2"
-        path_regexp: "third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/.+"
+        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint"
+        path_regexp: "third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+"
       }
       builders {
         name: "linux_mojo"
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg
index 9ead6a7..d2bec0f 100644
--- a/infra/config/global/cr-buildbucket.cfg
+++ b/infra/config/global/cr-buildbucket.cfg
@@ -3161,6 +3161,8 @@
     builders { mixins: "ios-try" name: "ios-simulator-full-configs" }
     builders { mixins: "ios-try" name: "ios-simulator-eg" }
     builders { mixins: "ios-try" name: "ios-simulator-xcode-clang" }
+    builders { mixins: "ios-try" name: "ios-slimnav" }
+    builders { mixins: "ios-try" name: "ios-webview" }
     builders { mixins: "mac-angle-try" name: "mac_angle_compile_dbg_ng" }
     builders { mixins: "mac-angle-try" name: "mac_angle_dbg_ng" }
     builders { mixins: "mac-angle-try" name: "mac_angle_rel_ng" }
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg
index a756b36..d62ab98 100644
--- a/infra/config/global/luci-milo.cfg
+++ b/infra/config/global/luci-milo.cfg
@@ -4200,6 +4200,12 @@
     name: "buildbucket/luci.chromium.try/ios12-sdk-simulator"
   }
   builders {
+    name: "buildbucket/luci.chromium.try/ios-slimnav"
+  }
+  builders {
+    name: "buildbucket/luci.chromium.try/ios-webview"
+  }
+  builders {
     name: "buildbucket/luci.chromium.try/mac-rel"
   }
   builders {
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 3a259d1c..50d8006 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
@@ -107,7 +107,8 @@
 
 - (void)setHighlighted:(BOOL)highlighted {
   [super setHighlighted:highlighted];
-  [UIView animateWithDuration:0.1
+  CGFloat duration = highlighted ? 0.1 : 0.2;
+  [UIView animateWithDuration:duration
                         delay:0
                       options:UIViewAnimationOptionBeginFromCurrentState
                    animations:^{
diff --git a/ios/public/provider/chrome/browser/chrome_browser_provider.h b/ios/public/provider/chrome/browser/chrome_browser_provider.h
index f20680b..798f03a3 100644
--- a/ios/public/provider/chrome/browser/chrome_browser_provider.h
+++ b/ios/public/provider/chrome/browser/chrome_browser_provider.h
@@ -157,9 +157,6 @@
   // Returns an instance of the fullscreen provider.
   virtual FullscreenProvider* GetFullscreenProvider() const;
 
-  // Checks for native iOS apps that are installed.
-  virtual void CheckForFirstPartyApps() const;
-
   // Adds and removes observers.
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
diff --git a/ios/public/provider/chrome/browser/chrome_browser_provider.mm b/ios/public/provider/chrome/browser/chrome_browser_provider.mm
index 9e840b5..4078ae6 100644
--- a/ios/public/provider/chrome/browser/chrome_browser_provider.mm
+++ b/ios/public/provider/chrome/browser/chrome_browser_provider.mm
@@ -114,8 +114,6 @@
   return mailto_handler_provider_.get();
 }
 
-void ChromeBrowserProvider::CheckForFirstPartyApps() const {}
-
 BrandedImageProvider* ChromeBrowserProvider::GetBrandedImageProvider() const {
   return nullptr;
 }
diff --git a/ios/public/provider/chrome/browser/test_chrome_browser_provider.h b/ios/public/provider/chrome/browser/test_chrome_browser_provider.h
index 3f5dbc8d..bef57994 100644
--- a/ios/public/provider/chrome/browser/test_chrome_browser_provider.h
+++ b/ios/public/provider/chrome/browser/test_chrome_browser_provider.h
@@ -34,7 +34,6 @@
   UserFeedbackProvider* GetUserFeedbackProvider() const override;
   SpotlightProvider* GetSpotlightProvider() const override;
   FullscreenProvider* GetFullscreenProvider() const override;
-  void CheckForFirstPartyApps() const override;
   BrandedImageProvider* GetBrandedImageProvider() const override;
   MailtoHandlerProvider* GetMailtoHandlerProvider() const override;
 
diff --git a/ios/public/provider/chrome/browser/test_chrome_browser_provider.mm b/ios/public/provider/chrome/browser/test_chrome_browser_provider.mm
index b8da683..07dec418 100644
--- a/ios/public/provider/chrome/browser/test_chrome_browser_provider.mm
+++ b/ios/public/provider/chrome/browser/test_chrome_browser_provider.mm
@@ -97,8 +97,6 @@
   return fullscreen_provider_.get();
 }
 
-void TestChromeBrowserProvider::CheckForFirstPartyApps() const {}
-
 BrandedImageProvider* TestChromeBrowserProvider::GetBrandedImageProvider()
     const {
   return branded_image_provider_.get();
diff --git a/media/base/test_helpers.h b/media/base/test_helpers.h
index e16c6e139..7bea53e8 100644
--- a/media/base/test_helpers.h
+++ b/media/base/test_helpers.h
@@ -208,6 +208,14 @@
   return arg.get() && arg->end_of_stream();
 }
 
+MATCHER(EosBeforeHaveMetadata, "") {
+  return CONTAINS_STRING(
+      arg,
+      "MediaSource endOfStream before demuxer initialization completes (before "
+      "HAVE_METADATA) is treated as an error. This may also occur as "
+      "consequence of other MediaSource errors before HAVE_METADATA.");
+}
+
 MATCHER_P(SegmentMissingFrames, track_id, "") {
   return CONTAINS_STRING(
       arg, "Media segment did not contain any coded frames for track " +
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index 15ec60e..c29a7a95 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -1123,6 +1123,10 @@
     return;
 
   if (state_ == INITIALIZING) {
+    MEDIA_LOG(ERROR, media_log_)
+        << "MediaSource endOfStream before demuxer initialization completes "
+           "(before HAVE_METADATA) is treated as an error. This may also occur "
+           "as consequence of other MediaSource errors before HAVE_METADATA.";
     ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN);
     return;
   }
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index 5ac4368..a2d65876 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -1705,6 +1705,7 @@
   EXPECT_CALL(*this, DemuxerOpened());
   demuxer_->Initialize(&host_,
                        NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN));
+  EXPECT_MEDIA_LOG(EosBeforeHaveMetadata());
   MarkEndOfStream(PIPELINE_OK);
 }
 
@@ -1716,7 +1717,10 @@
   ASSERT_EQ(AddId(), ChunkDemuxer::kOk);
 
   CheckExpectedRanges("{ }");
+
+  EXPECT_MEDIA_LOG(EosBeforeHaveMetadata());
   MarkEndOfStream(PIPELINE_OK);
+
   ShutdownDemuxer();
   CheckExpectedRanges("{ }");
   demuxer_->RemoveId(kSourceId);
diff --git a/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc b/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc
index 25bb7ba7..4cf2b4c 100644
--- a/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc
+++ b/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc
@@ -1648,15 +1648,14 @@
     // the client, or by ourselves, if we are allocating.
     output_record.at_client = true;
     if (output_mode_ == Config::OutputMode::ALLOCATE) {
-      std::vector<base::ScopedFD> dmabuf_fds = device_->GetDmabufsForV4L2Buffer(
-          i, output_planes_count_, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
-      if (dmabuf_fds.empty()) {
+      std::vector<base::ScopedFD> passed_dmabuf_fds =
+          device_->GetDmabufsForV4L2Buffer(i, output_planes_count_,
+                                           V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+      if (passed_dmabuf_fds.empty()) {
         NOTIFY_ERROR(PLATFORM_FAILURE);
         return;
       }
 
-      auto passed_dmabuf_fds(base::WrapUnique(
-          new std::vector<base::ScopedFD>(std::move(dmabuf_fds))));
       ImportBufferForPictureTask(output_record.picture_id,
                                  std::move(passed_dmabuf_fds));
     }  // else we'll get triggered via ImportBufferForPicture() from client.
@@ -1678,7 +1677,7 @@
 void V4L2SliceVideoDecodeAccelerator::CreateGLImageFor(
     size_t buffer_index,
     int32_t picture_buffer_id,
-    std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds,
+    std::vector<base::ScopedFD> passed_dmabuf_fds,
     GLuint client_texture_id,
     GLuint texture_id,
     const gfx::Size& size,
@@ -1699,7 +1698,7 @@
   }
 
   scoped_refptr<gl::GLImage> gl_image =
-      device_->CreateGLImage(size, fourcc, *passed_dmabuf_fds);
+      device_->CreateGLImage(size, fourcc, passed_dmabuf_fds);
   if (!gl_image) {
     VLOGF(1) << "Could not create GLImage,"
              << " index=" << buffer_index << " texture_id=" << texture_id;
@@ -1715,13 +1714,13 @@
       FROM_HERE,
       base::BindOnce(&V4L2SliceVideoDecodeAccelerator::AssignDmaBufs,
                      base::Unretained(this), buffer_index, picture_buffer_id,
-                     base::Passed(&passed_dmabuf_fds)));
+                     std::move(passed_dmabuf_fds)));
 }
 
 void V4L2SliceVideoDecodeAccelerator::AssignDmaBufs(
     size_t buffer_index,
     int32_t picture_buffer_id,
-    std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds) {
+    std::vector<base::ScopedFD> passed_dmabuf_fds) {
   DVLOGF(3) << "index=" << buffer_index;
   DCHECK(decoder_thread_task_runner_->BelongsToCurrentThread());
 
@@ -1748,7 +1747,7 @@
 
   if (output_mode_ == Config::OutputMode::IMPORT) {
     DCHECK(output_record.dmabuf_fds.empty());
-    output_record.dmabuf_fds = std::move(*passed_dmabuf_fds);
+    output_record.dmabuf_fds = std::move(passed_dmabuf_fds);
   }
 
   DCHECK_EQ(std::count(free_output_buffers_.begin(), free_output_buffers_.end(),
@@ -1765,11 +1764,11 @@
   DVLOGF(3) << "picture_buffer_id=" << picture_buffer_id;
   DCHECK(child_task_runner_->BelongsToCurrentThread());
 
-  auto passed_dmabuf_fds(base::WrapUnique(new std::vector<base::ScopedFD>()));
+  std::vector<base::ScopedFD> passed_dmabuf_fds;
 #if defined(USE_OZONE)
   for (const auto& fd : gpu_memory_buffer_handle.native_pixmap_handle.fds) {
     DCHECK_NE(fd.fd, -1);
-    passed_dmabuf_fds->push_back(base::ScopedFD(fd.fd));
+    passed_dmabuf_fds.push_back(base::ScopedFD(fd.fd));
   }
 #endif
 
@@ -1789,14 +1788,15 @@
 
   decoder_thread_task_runner_->PostTask(
       FROM_HERE,
-      base::Bind(&V4L2SliceVideoDecodeAccelerator::ImportBufferForPictureTask,
-                 base::Unretained(this), picture_buffer_id,
-                 base::Passed(&passed_dmabuf_fds)));
+      base::BindOnce(
+          &V4L2SliceVideoDecodeAccelerator::ImportBufferForPictureTask,
+          base::Unretained(this), picture_buffer_id,
+          std::move(passed_dmabuf_fds)));
 }
 
 void V4L2SliceVideoDecodeAccelerator::ImportBufferForPictureTask(
     int32_t picture_buffer_id,
-    std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds) {
+    std::vector<base::ScopedFD> passed_dmabuf_fds) {
   DVLOGF(3) << "picture_buffer_id=" << picture_buffer_id;
   DCHECK(decoder_thread_task_runner_->BelongsToCurrentThread());
 
@@ -1834,14 +1834,14 @@
   if (iter->texture_id != 0) {
     child_task_runner_->PostTask(
         FROM_HERE,
-        base::Bind(&V4L2SliceVideoDecodeAccelerator::CreateGLImageFor,
-                   weak_this_, index, picture_buffer_id,
-                   base::Passed(&passed_dmabuf_fds), iter->client_texture_id,
-                   iter->texture_id, coded_size_, output_format_fourcc_));
+        base::BindOnce(&V4L2SliceVideoDecodeAccelerator::CreateGLImageFor,
+                       weak_this_, index, picture_buffer_id,
+                       std::move(passed_dmabuf_fds), iter->client_texture_id,
+                       iter->texture_id, coded_size_, output_format_fourcc_));
   } else {
     // No need for a GLImage, start using this buffer now.
-    DCHECK_EQ(output_planes_count_, passed_dmabuf_fds->size());
-    iter->dmabuf_fds.swap(*passed_dmabuf_fds);
+    DCHECK_EQ(output_planes_count_, passed_dmabuf_fds.size());
+    iter->dmabuf_fds = std::move(passed_dmabuf_fds);
     free_output_buffers_.push_back(index);
     ScheduleDecodeBufferTaskIfNeeded();
   }
diff --git a/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.h b/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.h
index d672268..77985429 100644
--- a/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.h
+++ b/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.h
@@ -272,37 +272,26 @@
   // file descriptors.
   void ImportBufferForPictureTask(
       int32_t picture_buffer_id,
-      // TODO(posciak): (https://crbug.com/561749) we should normally be able to
-      // pass the vector by itself via std::move, but it's not possible to do
-      // this if this method is used as a callback.
-      std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds);
+      std::vector<base::ScopedFD> passed_dmabuf_fds);
 
   // Create a GLImage for the buffer associated with V4L2 |buffer_index| and
   // for |picture_buffer_id|, backed by dmabuf file descriptors in
   // |passed_dmabuf_fds|, taking ownership of them.
   // The GLImage will be associated |client_texture_id| in gles2 decoder.
-  void CreateGLImageFor(
-      size_t buffer_index,
-      int32_t picture_buffer_id,
-      // TODO(posciak): (https://crbug.com/561749) we should normally be able to
-      // pass the vector by itself via std::move, but it's not possible to do
-      // this if this method is used as a callback.
-      std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds,
-      GLuint client_texture_id,
-      GLuint texture_id,
-      const gfx::Size& size,
-      uint32_t fourcc);
+  void CreateGLImageFor(size_t buffer_index,
+                        int32_t picture_buffer_id,
+                        std::vector<base::ScopedFD> passed_dmabuf_fds,
+                        GLuint client_texture_id,
+                        GLuint texture_id,
+                        const gfx::Size& size,
+                        uint32_t fourcc);
 
   // Take the dmabuf |passed_dmabuf_fds|, for |picture_buffer_id|, and use it
   // for OutputRecord at |buffer_index|. The buffer is backed by
   // |passed_dmabuf_fds|, and the OutputRecord takes ownership of them.
-  void AssignDmaBufs(
-      size_t buffer_index,
-      int32_t picture_buffer_id,
-      // TODO(posciak): (https://crbug.com/561749) we should normally be able to
-      // pass the vector by itself via std::move, but it's not possible to do
-      // this if this method is used as a callback.
-      std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds);
+  void AssignDmaBufs(size_t buffer_index,
+                     int32_t picture_buffer_id,
+                     std::vector<base::ScopedFD> passed_dmabuf_fds);
 
   // Performed on decoder_thread_ as a consequence of poll() on decoder_thread_
   // returning an event.
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
index b57fb9c..1b28e0bb 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
@@ -580,17 +580,6 @@
   QueueInputBuffer(std::move(buffer), bitstream_id);
 }
 
-void VaapiVideoDecodeAccelerator::RecycleVASurfaceID(
-    VASurfaceID va_surface_id) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
-  base::AutoLock auto_lock(lock_);
-
-  available_va_surfaces_.push_back(va_surface_id);
-  surfaces_available_.Signal();
-
-  TryOutputPicture();
-}
-
 void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
     const std::vector<PictureBuffer>& buffers) {
   DCHECK(task_runner_->BelongsToCurrentThread());
@@ -960,6 +949,11 @@
   if (!decode_using_client_picture_buffers_) {
     const VASurfaceID id = available_va_surfaces_.front();
     available_va_surfaces_.pop_front();
+
+    TRACE_COUNTER_ID2("media,gpu", "Vaapi VASurfaceIDs", this, "used",
+                      pictures_.size() - available_va_surfaces_.size(),
+                      "available", available_va_surfaces_.size());
+
     return new VASurface(id, requested_pic_size_,
                          vaapi_wrapper_->va_surface_format(),
                          va_surface_release_cb_);
@@ -985,6 +979,21 @@
   return nullptr;
 }
 
+void VaapiVideoDecodeAccelerator::RecycleVASurfaceID(
+    VASurfaceID va_surface_id) {
+  DCHECK(task_runner_->BelongsToCurrentThread());
+  base::AutoLock auto_lock(lock_);
+  available_va_surfaces_.push_back(va_surface_id);
+  if (!decode_using_client_picture_buffers_) {
+    TRACE_COUNTER_ID2("media,gpu", "Vaapi VASurfaceIDs", this, "used",
+                      pictures_.size() - available_va_surfaces_.size(),
+                      "available", available_va_surfaces_.size());
+  }
+  surfaces_available_.Signal();
+
+  TryOutputPicture();
+}
+
 // static
 VideoDecodeAccelerator::SupportedProfiles
 VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.h b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
index e16f74a..8c9dbd9 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
@@ -167,8 +167,8 @@
   void TryOutputPicture();
 
   // Called when a VASurface is no longer in use by the decoder or is not being
-  // synced/waiting to be synced to a picture. Returns it to available surfaces
-  // pool.
+  // synced/waiting to be synced to a picture. Returns it to the
+  // |available_va_surfaces_|
   void RecycleVASurfaceID(VASurfaceID va_surface_id);
 
   // Initiate wait cycle for surfaces to be released before we release them
diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
index 9252dec6..3ca7ba1 100644
--- a/net/dns/host_resolver_impl.cc
+++ b/net/dns/host_resolver_impl.cc
@@ -267,7 +267,7 @@
   struct ifaddrs* interface_addr = NULL;
   int rv = getifaddrs(&interface_addr);
   if (rv != 0) {
-    DVLOG(1) << "getifaddrs() failed with errno = " << errno;
+    DVPLOG(1) << "getifaddrs() failed";
     return false;
   }
 
diff --git a/net/socket/socket_posix.cc b/net/socket/socket_posix.cc
index a6f0b38..563646bb 100644
--- a/net/socket/socket_posix.cc
+++ b/net/socket/socket_posix.cc
@@ -90,7 +90,7 @@
       SOCK_STREAM,
       address_family == AF_UNIX ? 0 : IPPROTO_TCP);
   if (socket_fd_ < 0) {
-    PLOG(ERROR) << "CreatePlatformSocket() returned an error, errno=" << errno;
+    PLOG(ERROR) << "CreatePlatformSocket() failed";
     return MapSystemError(errno);
   }
 
@@ -141,7 +141,7 @@
 
   int rv = bind(socket_fd_, address.addr, address.addr_len);
   if (rv < 0) {
-    PLOG(ERROR) << "bind() returned an error, errno=" << errno;
+    PLOG(ERROR) << "bind() failed";
     return MapSystemError(errno);
   }
 
@@ -155,7 +155,7 @@
 
   int rv = listen(socket_fd_, backlog);
   if (rv < 0) {
-    PLOG(ERROR) << "listen() returned an error, errno=" << errno;
+    PLOG(ERROR) << "listen() failed";
     return MapSystemError(errno);
   }
 
@@ -177,7 +177,7 @@
   if (!base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor(
           socket_fd_, true, base::MessagePumpForIO::WATCH_READ,
           &accept_socket_watcher_, this)) {
-    PLOG(ERROR) << "WatchFileDescriptor failed on accept, errno " << errno;
+    PLOG(ERROR) << "WatchFileDescriptor failed on accept";
     return MapSystemError(errno);
   }
 
@@ -202,7 +202,7 @@
   if (!base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor(
           socket_fd_, true, base::MessagePumpForIO::WATCH_WRITE,
           &write_socket_watcher_, this)) {
-    PLOG(ERROR) << "WatchFileDescriptor failed on connect, errno " << errno;
+    PLOG(ERROR) << "WatchFileDescriptor failed on connect";
     return MapSystemError(errno);
   }
 
@@ -340,7 +340,7 @@
   if (!base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor(
           socket_fd_, true, base::MessagePumpForIO::WATCH_READ,
           &read_socket_watcher_, this)) {
-    PLOG(ERROR) << "WatchFileDescriptor failed on read, errno " << errno;
+    PLOG(ERROR) << "WatchFileDescriptor failed on read";
     return MapSystemError(errno);
   }
 
@@ -390,7 +390,7 @@
   if (!base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor(
           socket_fd_, true, base::MessagePumpForIO::WATCH_WRITE,
           &write_socket_watcher_, this)) {
-    PLOG(ERROR) << "WatchFileDescriptor failed on write, errno " << errno;
+    PLOG(ERROR) << "WatchFileDescriptor failed on write";
     return MapSystemError(errno);
   }
 
@@ -445,7 +445,7 @@
 
   if (socket_fd_ != kInvalidSocket) {
     if (IGNORE_EINTR(close(socket_fd_)) < 0)
-      PLOG(ERROR) << "close() returned an error, errno=" << errno;
+      PLOG(ERROR) << "close() failed";
     socket_fd_ = kInvalidSocket;
   }
 }
diff --git a/net/socket/udp_socket_posix.cc b/net/socket/udp_socket_posix.cc
index 1ea9435..1d237a8 100644
--- a/net/socket/udp_socket_posix.cc
+++ b/net/socket/udp_socket_posix.cc
@@ -441,7 +441,7 @@
   if (!base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor(
           socket_, true, base::MessagePumpForIO::WATCH_WRITE,
           &write_socket_watcher_, &write_watcher_)) {
-    DVLOG(1) << "WatchFileDescriptor failed on write, errno " << errno;
+    DVPLOG(1) << "WatchFileDescriptor failed on write";
     int result = MapSystemError(errno);
     LogWrite(result, NULL, NULL);
     return result;
@@ -1415,7 +1415,7 @@
   if (last_async_result_ == ERR_IO_PENDING) {
     DVLOG(2) << __func__ << " WatchFileDescriptor start";
     if (!WatchFileDescriptor()) {
-      DVLOG(1) << "WatchFileDescriptor failed on write, errno " << errno;
+      DVPLOG(1) << "WatchFileDescriptor failed on write";
       last_async_result_ = MapSystemError(errno);
       LogWrite(last_async_result_, NULL, NULL);
     } else {
diff --git a/net/ssl/openssl_ssl_util.cc b/net/ssl/openssl_ssl_util.cc
index e45db9e7..0e4e0ac 100644
--- a/net/ssl/openssl_ssl_util.cc
+++ b/net/ssl/openssl_ssl_util.cc
@@ -176,9 +176,9 @@
     case SSL_ERROR_EARLY_DATA_REJECTED:
       return ERR_EARLY_DATA_REJECTED;
     case SSL_ERROR_SYSCALL:
-      LOG(ERROR) << "OpenSSL SYSCALL error, earliest error code in "
-                    "error queue: " << ERR_peek_error() << ", errno: "
-                 << errno;
+      PLOG(ERROR) << "OpenSSL SYSCALL error, earliest error code in "
+                     "error queue: "
+                  << ERR_peek_error();
       return ERR_FAILED;
     case SSL_ERROR_SSL:
       // Walk down the error stack to find an SSL or net error.
diff --git a/ppapi/proxy/BUILD.gn b/ppapi/proxy/BUILD.gn
index 49f3837..70e131d9 100644
--- a/ppapi/proxy/BUILD.gn
+++ b/ppapi/proxy/BUILD.gn
@@ -12,6 +12,12 @@
 jumbo_component("proxy") {
   output_name = "ppapi_proxy"
 
+  if (is_nacl) {
+    # The nacl toolchain has template related bugs that are triggered
+    # in jumbo builds. https://crbug.com/912152
+    never_build_jumbo = true
+  }
+
   sources = [
     # Take some standalone files from the C++ wrapper allowing us to more
     # easily make async callbacks in the proxy. We can't depend on the
diff --git a/ppapi/shared_impl/BUILD.gn b/ppapi/shared_impl/BUILD.gn
index edddfc8b0..f5b7c01 100644
--- a/ppapi/shared_impl/BUILD.gn
+++ b/ppapi/shared_impl/BUILD.gn
@@ -8,6 +8,12 @@
 jumbo_component("shared_impl") {
   output_name = "ppapi_shared"
 
+  if (is_nacl) {
+    # The nacl toolchain has template related bugs that are triggered
+    # in jumbo builds. https://crbug.com/912152
+    never_build_jumbo = true
+  }
+
   sources = [
     "array_var.cc",
     "array_var.h",
diff --git a/remoting/host/posix/signal_handler.cc b/remoting/host/posix/signal_handler.cc
index 855e411..f061792 100644
--- a/remoting/host/posix/signal_handler.cc
+++ b/remoting/host/posix/signal_handler.cc
@@ -89,7 +89,7 @@
     int pipe_fd[2];
     int result = pipe(pipe_fd);
     if (result < 0) {
-      LOG(ERROR) << "Could not create signal pipe: " << errno;
+      PLOG(ERROR) << "Could not create signal pipe";
       return false;
     }
 
@@ -101,7 +101,7 @@
                               base::Unretained(g_signal_listener)));
   }
   if (signal(signal_number, GlobalSignalHandler) == SIG_ERR) {
-    LOG(ERROR) << "signal() failed: " << errno;
+    PLOG(ERROR) << "signal() failed";
     return false;
   }
   g_signal_listener->AddSignalHandler(signal_number, handler);
diff --git a/services/device/bluetooth/bluetooth_system_unittest.cc b/services/device/bluetooth/bluetooth_system_unittest.cc
index 1e591a0d..2b8fe9d 100644
--- a/services/device/bluetooth/bluetooth_system_unittest.cc
+++ b/services/device/bluetooth/bluetooth_system_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/strings/stringprintf.h"
 #include "base/test/bind_test_util.h"
 #include "device/bluetooth/dbus/bluetooth_adapter_client.h"
-#include "device/bluetooth/dbus/bluetooth_device_client.h"
 #include "device/bluetooth/dbus/bluez_dbus_manager.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "services/device/device_service_test_base.h"
@@ -418,153 +417,6 @@
   base::ObserverList<Observer>::Unchecked observers_;
 };
 
-// Exposes high-level methods to simulate Bluetooth device events e.g. a new
-// device was added, device connected, etc.
-//
-// As opposed to FakeBluetoothDeviceClient, the other fake implementation of
-// BluetoothDeviceClient, this class does not have any built-in behavior
-// e.g. it won't start triggering device discovery events when StartDiscovery is
-// called. It's up to its users to call the relevant Simulate*() method to
-// trigger each event.
-class DEVICE_BLUETOOTH_EXPORT TestBluetoothDeviceClient
-    : public bluez::BluetoothDeviceClient {
- public:
-  struct Properties : public bluez::BluetoothDeviceClient::Properties {
-    explicit Properties(const PropertyChangedCallback& callback)
-        : BluetoothDeviceClient::Properties(
-              nullptr /* object_proxy */,
-              bluetooth_device::kBluetoothDeviceInterface,
-              callback) {}
-    ~Properties() override = default;
-
-    // dbus::PropertySet
-    void Get(dbus::PropertyBase* property,
-             dbus::PropertySet::GetCallback callback) override {
-      DVLOG(1) << "Get " << property->name();
-      NOTIMPLEMENTED();
-    }
-
-    void GetAll() override {
-      DVLOG(1) << "GetAll";
-      NOTIMPLEMENTED();
-    }
-
-    void Set(dbus::PropertyBase* property,
-             dbus::PropertySet::SetCallback callback) override {
-      DVLOG(1) << "Set " << property->name();
-      NOTIMPLEMENTED();
-    }
-  };
-
-  TestBluetoothDeviceClient() = default;
-  ~TestBluetoothDeviceClient() override = default;
-
-  // bluez::BluetoothDeviceClient
-  void Init(dbus::Bus* bus,
-            const std::string& bluetooth_service_name) override {}
-
-  void AddObserver(Observer* observer) override {
-    observers_.AddObserver(observer);
-  }
-
-  void RemoveObserver(Observer* observer) override {
-    observers_.RemoveObserver(observer);
-  }
-
-  std::vector<dbus::ObjectPath> GetDevicesForAdapter(
-      const dbus::ObjectPath& adapter_path) override {
-    std::vector<dbus::ObjectPath> devices;
-    for (const auto& path_and_properties : device_object_paths_to_properties_) {
-      if (path_and_properties.second->adapter.value() == adapter_path)
-        devices.push_back(path_and_properties.first);
-    }
-    return devices;
-  }
-
-  Properties* GetProperties(const dbus::ObjectPath& object_path) override {
-    auto it = device_object_paths_to_properties_.find(object_path);
-    if (it == device_object_paths_to_properties_.end())
-      return nullptr;
-    return it->second.get();
-  }
-
-  void Connect(const dbus::ObjectPath& object_path,
-               const base::Closure& callback,
-               const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void Disconnect(const dbus::ObjectPath& object_path,
-                  const base::Closure& callback,
-                  const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void ConnectProfile(const dbus::ObjectPath& object_path,
-                      const std::string& uuid,
-                      const base::Closure& callback,
-                      const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void DisconnectProfile(const dbus::ObjectPath& object_path,
-                         const std::string& uuid,
-                         const base::Closure& callback,
-                         const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void Pair(const dbus::ObjectPath& object_path,
-            const base::Closure& callback,
-            const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void CancelPairing(const dbus::ObjectPath& object_path,
-                     const base::Closure& callback,
-                     const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void GetConnInfo(const dbus::ObjectPath& object_path,
-                   const ConnInfoCallback& callback,
-                   const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void SetLEConnectionParameters(const dbus::ObjectPath& object_path,
-                                 const ConnectionParameters& conn_params,
-                                 const base::Closure& callback,
-                                 const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void GetServiceRecords(const dbus::ObjectPath& object_path,
-                         const ServiceRecordsCallback& callback,
-                         const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void ExecuteWrite(const dbus::ObjectPath& object_path,
-                    const base::Closure& callback,
-                    const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
-  void AbortWrite(const dbus::ObjectPath& object_path,
-                  const base::Closure& callback,
-                  const ErrorCallback& error_callback) override {
-    NOTIMPLEMENTED();
-  }
-
- private:
-  using ObjectPathToProperties =
-      std::map<dbus::ObjectPath, std::unique_ptr<Properties>>;
-  ObjectPathToProperties device_object_paths_to_properties_;
-
-  base::ObserverList<Observer>::Unchecked observers_;
-};
-
 }  // namespace
 
 class BluetoothSystemTest : public DeviceServiceTestBase,
@@ -580,16 +432,11 @@
     auto test_bluetooth_adapter_client =
         std::make_unique<TestBluetoothAdapterClient>();
     test_bluetooth_adapter_client_ = test_bluetooth_adapter_client.get();
-    auto test_bluetooth_device_client =
-        std::make_unique<TestBluetoothDeviceClient>();
-    test_bluetooth_device_client_ = test_bluetooth_device_client.get();
 
     std::unique_ptr<bluez::BluezDBusManagerSetter> dbus_setter =
         bluez::BluezDBusManager::GetSetterForTesting();
     dbus_setter->SetAlternateBluetoothAdapterClient(
         std::move(test_bluetooth_adapter_client));
-    dbus_setter->SetAlternateBluetoothDeviceClient(
-        std::move(test_bluetooth_device_client));
   }
 
   // Helper methods to avoid AsyncWaiter boilerplate.
@@ -680,7 +527,6 @@
   mojom::BluetoothSystemFactoryPtr system_factory_;
 
   TestBluetoothAdapterClient* test_bluetooth_adapter_client_;
-  TestBluetoothDeviceClient* test_bluetooth_device_client_;
 
   mojo::Binding<mojom::BluetoothSystemClient> system_client_binding_{this};
 
diff --git a/services/device/geolocation/geolocation_service_unittest.cc b/services/device/geolocation/geolocation_service_unittest.cc
index c5e3ab6..bd51890c 100644
--- a/services/device/geolocation/geolocation_service_unittest.cc
+++ b/services/device/geolocation/geolocation_service_unittest.cc
@@ -104,7 +104,13 @@
 }
 #endif
 
-TEST_F(GeolocationServiceUnitTest, GeolocationConfig) {
+// TODO(https://crbug.com/912057): Flaky on Chrome OS / Fails often on *San.
+#if defined(OS_CHROMEOS)
+#define MAYBE_GeolocationConfig DISABLED_GeolocationConfig
+#else
+#define MAYBE_GeolocationConfig GeolocationConfig
+#endif
+TEST_F(GeolocationServiceUnitTest, MAYBE_GeolocationConfig) {
   BindGeolocationConfig();
   {
     base::RunLoop run_loop;
diff --git a/services/identity/public/cpp/primary_account_mutator_impl.cc b/services/identity/public/cpp/primary_account_mutator_impl.cc
index cc9d3d3..84380cf 100644
--- a/services/identity/public/cpp/primary_account_mutator_impl.cc
+++ b/services/identity/public/cpp/primary_account_mutator_impl.cc
@@ -103,7 +103,7 @@
 }
 
 void PrimaryAccountMutatorImpl::LegacyMergeSigninCredentialIntoCookieJar() {
-  NOTIMPLEMENTED();
+  signin_manager_->MergeSigninCredentialIntoCookieJar();
 }
 
 bool PrimaryAccountMutatorImpl::LegacyIsPrimaryAccountAuthInProgress() const {
diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc
index 714fa96a..dcde2ce 100644
--- a/services/network/cors/cors_url_loader.cc
+++ b/services/network/cors/cors_url_loader.cc
@@ -157,9 +157,9 @@
   // in net/url_request/redirect_util.cc).
   if ((original_fetch_cors_flag && !NeedsPreflight(request_)) ||
       !fetch_cors_flag_) {
-    response_tainting_ =
-        CalculateResponseTainting(request_.url, request_.fetch_request_mode,
-                                  request_.request_initiator, fetch_cors_flag_);
+    response_tainting_ = CalculateResponseTainting(
+        request_.url, request_.fetch_request_mode, request_.request_initiator,
+        fetch_cors_flag_, tainted_);
     network_loader_->FollowRedirect(to_be_removed_request_headers,
                                     modified_request_headers, new_url);
     return;
@@ -388,9 +388,9 @@
     return;
   }
 
-  response_tainting_ =
-      CalculateResponseTainting(request_.url, request_.fetch_request_mode,
-                                request_.request_initiator, fetch_cors_flag_);
+  response_tainting_ = CalculateResponseTainting(
+      request_.url, request_.fetch_request_mode, request_.request_initiator,
+      fetch_cors_flag_, tainted_);
 
   if (!CalculateCredentialsFlag(request_.fetch_credentials_mode,
                                 response_tainting_)) {
diff --git a/services/network/public/cpp/cors/cors.cc b/services/network/public/cpp/cors/cors.cc
index 17ed91da..f93b3f6 100644
--- a/services/network/public/cpp/cors/cors.cc
+++ b/services/network/public/cpp/cors/cors.cc
@@ -322,7 +322,8 @@
     const GURL& url,
     mojom::FetchRequestMode request_mode,
     const base::Optional<url::Origin>& origin,
-    bool cors_flag) {
+    bool cors_flag,
+    bool tainted_origin) {
   if (url.SchemeIs(url::kDataScheme))
     return mojom::FetchResponseType::kBasic;
 
@@ -338,7 +339,7 @@
   }
 
   if (request_mode == mojom::FetchRequestMode::kNoCors &&
-      !origin->IsSameOriginWith(url::Origin::Create(url))) {
+      (tainted_origin || !origin->IsSameOriginWith(url::Origin::Create(url)))) {
     return mojom::FetchResponseType::kOpaque;
   }
   return mojom::FetchResponseType::kBasic;
diff --git a/services/network/public/cpp/cors/cors.h b/services/network/public/cpp/cors/cors.h
index f80899b..b0046c8 100644
--- a/services/network/public/cpp/cors/cors.h
+++ b/services/network/public/cpp/cors/cors.h
@@ -108,7 +108,8 @@
     const GURL& url,
     mojom::FetchRequestMode request_mode,
     const base::Optional<url::Origin>& origin,
-    bool cors_flag);
+    bool cors_flag,
+    bool tainted_origin);
 
 // Checks safelisted request parameters.
 COMPONENT_EXPORT(NETWORK_CPP)
diff --git a/services/network/public/cpp/cors/cors_unittest.cc b/services/network/public/cpp/cors/cors_unittest.cc
index f285e40..18663673 100644
--- a/services/network/public/cpp/cors/cors_unittest.cc
+++ b/services/network/public/cpp/cors/cors_unittest.cc
@@ -319,64 +319,83 @@
   const base::Optional<url::Origin> no_origin;
 
   // CORS flag is false, same-origin request
-  EXPECT_EQ(FetchResponseType::kBasic,
-            CalculateResponseTainting(
-                same_origin_url, FetchRequestMode::kSameOrigin, origin, false));
-  EXPECT_EQ(FetchResponseType::kBasic,
-            CalculateResponseTainting(
-                same_origin_url, FetchRequestMode::kNoCors, origin, false));
+  EXPECT_EQ(
+      FetchResponseType::kBasic,
+      CalculateResponseTainting(same_origin_url, FetchRequestMode::kSameOrigin,
+                                origin, false, false));
+  EXPECT_EQ(
+      FetchResponseType::kBasic,
+      CalculateResponseTainting(same_origin_url, FetchRequestMode::kNoCors,
+                                origin, false, false));
   EXPECT_EQ(FetchResponseType::kBasic,
             CalculateResponseTainting(same_origin_url, FetchRequestMode::kCors,
-                                      origin, false));
+                                      origin, false, false));
   EXPECT_EQ(FetchResponseType::kBasic,
             CalculateResponseTainting(
                 same_origin_url, FetchRequestMode::kCorsWithForcedPreflight,
-                origin, false));
+                origin, false, false));
+  EXPECT_EQ(
+      FetchResponseType::kBasic,
+      CalculateResponseTainting(same_origin_url, FetchRequestMode::kNavigate,
+                                origin, false, false));
+  EXPECT_EQ(
+      FetchResponseType::kOpaque,
+      CalculateResponseTainting(same_origin_url, FetchRequestMode::kNoCors,
+                                origin, false, true));
   EXPECT_EQ(FetchResponseType::kBasic,
             CalculateResponseTainting(
-                same_origin_url, FetchRequestMode::kNavigate, origin, false));
+                same_origin_url, FetchRequestMode::kCorsWithForcedPreflight,
+                origin, false, true));
+  EXPECT_EQ(
+      FetchResponseType::kBasic,
+      CalculateResponseTainting(same_origin_url, FetchRequestMode::kNavigate,
+                                origin, false, false));
 
   // CORS flag is false, cross-origin request
-  EXPECT_EQ(FetchResponseType::kOpaque,
-            CalculateResponseTainting(
-                cross_origin_url, FetchRequestMode::kNoCors, origin, false));
-  EXPECT_EQ(FetchResponseType::kBasic,
-            CalculateResponseTainting(
-                cross_origin_url, FetchRequestMode::kNavigate, origin, false));
+  EXPECT_EQ(
+      FetchResponseType::kOpaque,
+      CalculateResponseTainting(cross_origin_url, FetchRequestMode::kNoCors,
+                                origin, false, false));
+  EXPECT_EQ(
+      FetchResponseType::kBasic,
+      CalculateResponseTainting(cross_origin_url, FetchRequestMode::kNavigate,
+                                origin, false, false));
 
   // CORS flag is true, same-origin request
   EXPECT_EQ(FetchResponseType::kCors,
             CalculateResponseTainting(same_origin_url, FetchRequestMode::kCors,
-                                      origin, true));
+                                      origin, true, false));
   EXPECT_EQ(FetchResponseType::kCors,
             CalculateResponseTainting(
                 same_origin_url, FetchRequestMode::kCorsWithForcedPreflight,
-                origin, true));
+                origin, true, false));
 
   // CORS flag is true, cross-origin request
   EXPECT_EQ(FetchResponseType::kCors,
             CalculateResponseTainting(cross_origin_url, FetchRequestMode::kCors,
-                                      origin, true));
+                                      origin, true, false));
   EXPECT_EQ(FetchResponseType::kCors,
             CalculateResponseTainting(
                 cross_origin_url, FetchRequestMode::kCorsWithForcedPreflight,
-                origin, true));
+                origin, true, false));
 
   // Origin is not provided.
-  EXPECT_EQ(FetchResponseType::kBasic,
-            CalculateResponseTainting(
-                same_origin_url, FetchRequestMode::kNoCors, no_origin, false));
+  EXPECT_EQ(
+      FetchResponseType::kBasic,
+      CalculateResponseTainting(same_origin_url, FetchRequestMode::kNoCors,
+                                no_origin, false, false));
   EXPECT_EQ(
       FetchResponseType::kBasic,
       CalculateResponseTainting(same_origin_url, FetchRequestMode::kNavigate,
-                                no_origin, false));
-  EXPECT_EQ(FetchResponseType::kBasic,
-            CalculateResponseTainting(
-                cross_origin_url, FetchRequestMode::kNoCors, no_origin, false));
+                                no_origin, false, false));
+  EXPECT_EQ(
+      FetchResponseType::kBasic,
+      CalculateResponseTainting(cross_origin_url, FetchRequestMode::kNoCors,
+                                no_origin, false, false));
   EXPECT_EQ(
       FetchResponseType::kBasic,
       CalculateResponseTainting(cross_origin_url, FetchRequestMode::kNavigate,
-                                no_origin, false));
+                                no_origin, false, false));
 }
 
 TEST_F(CorsTest, SafelistedMethod) {
diff --git a/services/service_manager/sandbox/mac/common_v2.sb b/services/service_manager/sandbox/mac/common_v2.sb
index d7a2798..2280ebf 100644
--- a/services/service_manager/sandbox/mac/common_v2.sb
+++ b/services/service_manager/sandbox/mac/common_v2.sb
@@ -22,9 +22,10 @@
 (define log-file-path "LOG_FILE_PATH")
 (define os-version (string->number (param "OS_VERSION")))
 
-; Backwards compatibility for 10.9
+; Backwards compatibility for 10.10.
 (if (not (defined? 'path))
   (define path literal))
+; Backwards compatibility for 10.11.
 (if (not (defined? 'iokit-registry-entry-class))
   (define iokit-registry-entry-class iokit-user-client-class))
 
@@ -150,28 +151,25 @@
   (global-name "com.apple.system.opendirectoryd.libinfo"))
 
 ; sysctls permitted.
-(if (= os-version 1009)
-  (allow sysctl-read)
-  ; else
-  (allow sysctl-read
-    (sysctl-name "hw.activecpu")
-    (sysctl-name "hw.busfrequency_compat")
-    (sysctl-name "hw.byteorder")
-    (sysctl-name "hw.cachelinesize_compat")
-    (sysctl-name "hw.cpufrequency_compat")
-    (sysctl-name "hw.cputype")
-    (sysctl-name "hw.machine")
-    (sysctl-name "hw.ncpu")
-    (sysctl-name "hw.pagesize_compat")
-    (sysctl-name "hw.physicalcpu_max")
-    (sysctl-name "hw.tbfrequency_compat")
-    (sysctl-name "hw.vectorunit")
-    (sysctl-name "kern.hostname")
-    (sysctl-name "kern.maxfilesperproc")
-    (sysctl-name "kern.osrelease")
-    (sysctl-name "kern.ostype")
-    (sysctl-name "kern.osversion")
-    (sysctl-name (string-append "kern.proc.pid." (param current-pid)))
-    (sysctl-name "kern.usrstack64")
-    (sysctl-name "kern.version")
-    (sysctl-name "sysctl.proc_cputype")))
+(allow sysctl-read
+  (sysctl-name "hw.activecpu")
+  (sysctl-name "hw.busfrequency_compat")
+  (sysctl-name "hw.byteorder")
+  (sysctl-name "hw.cachelinesize_compat")
+  (sysctl-name "hw.cpufrequency_compat")
+  (sysctl-name "hw.cputype")
+  (sysctl-name "hw.machine")
+  (sysctl-name "hw.ncpu")
+  (sysctl-name "hw.pagesize_compat")
+  (sysctl-name "hw.physicalcpu_max")
+  (sysctl-name "hw.tbfrequency_compat")
+  (sysctl-name "hw.vectorunit")
+  (sysctl-name "kern.hostname")
+  (sysctl-name "kern.maxfilesperproc")
+  (sysctl-name "kern.osrelease")
+  (sysctl-name "kern.ostype")
+  (sysctl-name "kern.osversion")
+  (sysctl-name (string-append "kern.proc.pid." (param current-pid)))
+  (sysctl-name "kern.usrstack64")
+  (sysctl-name "kern.version")
+  (sysctl-name "sysctl.proc_cputype"))
diff --git a/services/service_manager/sandbox/mac/gpu_v2.sb b/services/service_manager/sandbox/mac/gpu_v2.sb
index 49a72cc..fd9a44b 100644
--- a/services/service_manager/sandbox/mac/gpu_v2.sb
+++ b/services/service_manager/sandbox/mac/gpu_v2.sb
@@ -37,5 +37,4 @@
 (if (>= os-version 1013)
   (allow mach-lookup (global-name "com.apple.coremedia.videodecoder")))
 
-(if (> os-version 1009)
-  (allow sysctl-read (sysctl-name "hw.model")))
+(allow sysctl-read (sysctl-name "hw.model"))
diff --git a/services/service_manager/zygote/host/zygote_communication_linux.cc b/services/service_manager/zygote/host/zygote_communication_linux.cc
index 204fa4bc..9d27af2 100644
--- a/services/service_manager/zygote/host/zygote_communication_linux.cc
+++ b/services/service_manager/zygote/host/zygote_communication_linux.cc
@@ -282,7 +282,7 @@
   int status = base::TERMINATION_STATUS_NORMAL_TERMINATION;
 
   if (len == -1) {
-    LOG(WARNING) << "Error reading message from zygote: " << errno;
+    PLOG(WARNING) << "Error reading message from zygote";
   } else if (len == 0) {
     LOG(WARNING) << "Socket closed prematurely.";
   } else {
diff --git a/services/ws/window_service.cc b/services/ws/window_service.cc
index 241f5ee..9c07323 100644
--- a/services/ws/window_service.cc
+++ b/services/ws/window_service.cc
@@ -150,6 +150,21 @@
                      : nullptr;
 }
 
+Id WindowService::GetCompleteTransportIdForWindow(aura::Window* window) {
+  ServerWindow* server_window = ServerWindow::GetMayBeNull(window);
+  if (!server_window)
+    return kInvalidTransportId;
+  if (!server_window->owning_window_tree())
+    return kInvalidTransportId;
+  // NOTE: WindowTree::TransportIdForWindow() is the id sent to the client,
+  // which has the client_id portion set to 0. This function wants to see the
+  // real client_id, so it has to build it.
+  return BuildTransportId(
+      server_window->owning_window_tree()->client_id(),
+      ClientWindowIdFromTransportId(
+          server_window->owning_window_tree()->TransportIdForWindow(window)));
+}
+
 WindowService::TreeAndWindowId
 WindowService::FindTreeWithScheduleEmbedForExistingClient(
     const base::UnguessableToken& embed_token) {
diff --git a/services/ws/window_service.h b/services/ws/window_service.h
index c147b07..e9f59eb0 100644
--- a/services/ws/window_service.h
+++ b/services/ws/window_service.h
@@ -119,6 +119,16 @@
   // Returns the window representing the specified id.
   aura::Window* GetWindowByClientId(Id transport_id);
 
+  // Returns the transport-id for the specified |window|. If |window| was
+  // not created by a client, returns kInvalidTransportId.
+  // NOTE: this function returns an id with the client_id portion set to the
+  // id of the client that created it. The client that created the window
+  // generally uses a client_id of 0 for Windows it creates. If you need to
+  // correlate this with a WindowMus you will most likely need to set the
+  // client_id to 0. See documentation of ClientWindowId in README.md
+  // for more details.
+  Id GetCompleteTransportIdForWindow(aura::Window* window);
+
   struct TreeAndWindowId {
     ClientWindowId id;
     WindowTree* tree = nullptr;
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h
index addd77d6..2787161 100644
--- a/skia/config/SkUserConfig.h
+++ b/skia/config/SkUserConfig.h
@@ -150,10 +150,6 @@
 #define SK_DISABLE_EXPLICIT_GPU_RESOURCE_ALLOCATION
 #endif
 
-#ifndef SK_SUPPORT_LEGACY_TEXTENCODINGENUM
-#define SK_SUPPORT_LEGACY_TEXTENCODINGENUM
-#endif
-
 #ifndef SK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS
 #define SK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS
 #endif
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 9c55a2dc..976ae30b 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -2200,8 +2200,7 @@
       {
         "args": [
           "--num-retries=3",
-          "--additional-driver-flag=--enable-blink-features=LayoutNG",
-          "--additional-driver-flag=--enable-slimming-paint-v175"
+          "--additional-driver-flag=--enable-blink-features=LayoutNG"
         ],
         "isolate_name": "webkit_layout_tests_exparchive",
         "merge": {
@@ -2259,7 +2258,7 @@
       {
         "args": [
           "--num-retries=3",
-          "--additional-driver-flag=--enable-slimming-paint-v2"
+          "--additional-driver-flag=--enable-blink-features=CompositeAfterPaint"
         ],
         "isolate_name": "webkit_layout_tests_exparchive",
         "merge": {
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json
index 0754f51..320799b8 100644
--- a/testing/buildbot/chromium.perf.fyi.json
+++ b/testing/buildbot/chromium.perf.fyi.json
@@ -301,7 +301,7 @@
       },
       {
         "args": [
-          "--benchmarks=loading.desktop.network_service,rendering.oopd.desktop",
+          "--benchmarks=loading.desktop.network_service",
           "-v",
           "--upload-results",
           "--output-format=chartjson",
diff --git a/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter b/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter
index b2b3e38..bba74554 100644
--- a/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter
+++ b/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter
@@ -21,10 +21,6 @@
 -CrossSiteDocumentBlockingIsolatedOriginTest.BlockDocumentsFromIsolatedOrigin
 -CrossSiteDocumentBlockingServiceWorkerTest.NoNetwork
 
-# Flakes on Android.
-# https://crbug.com/827318
--RenderThreadImplBrowserTest.NonResourceDispatchIPCTasksDontGoThroughScheduler
-
 # NOTE: if adding an exclusion for an existing failure (e.g. additional test for
 # feature X that is already not working), please add it beside the existing
 # failures. Otherwise please reach out to network-service-dev@.
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 4705ca5..7cc8deb 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -1379,7 +1379,6 @@
       'WebKit Linux layout_ng Dummy Builder': {
         'args': [
           '--additional-driver-flag=--enable-blink-features=LayoutNG',
-          '--additional-driver-flag=--enable-slimming-paint-v175',
         ],
       },
       'WebKit Linux root_layer_scrolls Dummy Builder': {
@@ -1389,7 +1388,7 @@
       },
       'WebKit Linux slimming_paint_v2 Dummy Builder': {
         'args': [
-          '--additional-driver-flag=--enable-slimming-paint-v2',
+          '--additional-driver-flag=--enable-blink-features=CompositeAfterPaint',
         ],
       },
       # chromium.linux
diff --git a/third_party/blink/public/mojom/worker/README.md b/third_party/blink/public/mojom/worker/README.md
new file mode 100644
index 0000000..3a2db47
--- /dev/null
+++ b/third_party/blink/public/mojom/worker/README.md
@@ -0,0 +1 @@
+Public mojom files that are referenced both from browser-side and renderer-side for [Web Workers](https://html.spec.whatwg.org/multipage/workers.html#workers).
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
index df184c0..25b3bf1 100644
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -74,7 +74,7 @@
   BLINK_PLATFORM_EXPORT static void EnableOriginTrials(bool);
   BLINK_PLATFORM_EXPORT static bool IsOriginTrialsEnabled();
 
-  BLINK_PLATFORM_EXPORT static bool IsSlimmingPaintV2Enabled();
+  BLINK_PLATFORM_EXPORT static bool IsCompositeAfterPaintEnabled();
 
   BLINK_PLATFORM_EXPORT static void EnableAccelerated2dCanvas(bool);
   BLINK_PLATFORM_EXPORT static void EnableAccessibilityObjectModel(bool);
diff --git a/third_party/blink/renderer/bindings/core/v8/binding_security.cc b/third_party/blink/renderer/bindings/core/v8/binding_security.cc
index 1247b37..b720ebd 100644
--- a/third_party/blink/renderer/bindings/core/v8/binding_security.cc
+++ b/third_party/blink/renderer/bindings/core/v8/binding_security.cc
@@ -144,10 +144,10 @@
 DOMWindow* FindWindow(v8::Isolate* isolate,
                       const WrapperTypeInfo* type,
                       v8::Local<v8::Object> holder) {
-  if (V8Window::wrapper_type_info.Equals(type))
+  if (V8Window::GetWrapperTypeInfo()->Equals(type))
     return V8Window::ToImpl(holder);
 
-  if (V8Location::wrapper_type_info.Equals(type))
+  if (V8Location::GetWrapperTypeInfo()->Equals(type))
     return V8Location::ToImpl(holder)->DomWindow();
 
   // This function can handle only those types listed above.
@@ -388,7 +388,7 @@
   // https://html.spec.whatwg.org/multipage/browsers.html#security-location,
   // cross-origin script access to a few properties of Location is allowed.
   // Location already implements the necessary security checks.
-  if (wrapper_type_info->Equals(&V8Location::wrapper_type_info))
+  if (wrapper_type_info->Equals(V8Location::GetWrapperTypeInfo()))
     return true;
 
   ExceptionState exception_state(accessing_context->GetIsolate(),
diff --git a/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc b/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc
index 29e05ce9..1724ee5 100644
--- a/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc
+++ b/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc
@@ -57,7 +57,7 @@
       wrapper, ToV8(channel->port2(), wrapper, isolate));
 
   V8SetReturnValue(info, V8DOMWrapper::AssociateObjectWithWrapper(
-                             isolate, channel, &wrapper_type_info, wrapper));
+                             isolate, channel, GetWrapperTypeInfo(), wrapper));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/custom/v8_readable_stream_custom.cc b/third_party/blink/renderer/bindings/core/v8/custom/v8_readable_stream_custom.cc
index 829ca7a3..492091a5 100644
--- a/third_party/blink/renderer/bindings/core/v8/custom/v8_readable_stream_custom.cc
+++ b/third_party/blink/renderer/bindings/core/v8/custom/v8_readable_stream_custom.cc
@@ -33,7 +33,7 @@
   auto* impl = MakeGarbageCollected<ReadableStream>();
   v8::Local<v8::Object> wrapper = info.Holder();
   wrapper = impl->AssociateWithWrapper(
-      info.GetIsolate(), &V8ReadableStream::wrapper_type_info, wrapper);
+      info.GetIsolate(), V8ReadableStream::GetWrapperTypeInfo(), wrapper);
 
   if (num_args >= 1) {
     underlying_source =
diff --git a/third_party/blink/renderer/bindings/core/v8/custom/v8_writable_stream_custom.cc b/third_party/blink/renderer/bindings/core/v8/custom/v8_writable_stream_custom.cc
index bdc358a..9538e7a 100644
--- a/third_party/blink/renderer/bindings/core/v8/custom/v8_writable_stream_custom.cc
+++ b/third_party/blink/renderer/bindings/core/v8/custom/v8_writable_stream_custom.cc
@@ -33,7 +33,7 @@
   auto* impl = MakeGarbageCollected<WritableStream>();
   v8::Local<v8::Object> wrapper = info.Holder();
   wrapper = impl->AssociateWithWrapper(
-      info.GetIsolate(), &V8WritableStream::wrapper_type_info, wrapper);
+      info.GetIsolate(), V8WritableStream::GetWrapperTypeInfo(), wrapper);
 
   if (num_args >= 1) {
     underlying_sink =
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
index 7d54a41..8e52ecc 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
@@ -202,7 +202,7 @@
 bool V8ScriptValueSerializer::WriteDOMObject(ScriptWrappable* wrappable,
                                              ExceptionState& exception_state) {
   const WrapperTypeInfo* wrapper_type_info = wrappable->GetWrapperTypeInfo();
-  if (wrapper_type_info == &V8Blob::wrapper_type_info) {
+  if (wrapper_type_info == V8Blob::GetWrapperTypeInfo()) {
     Blob* blob = wrappable->ToImpl<Blob>();
     serialized_script_value_->BlobDataHandles().Set(blob->Uuid(),
                                                     blob->GetBlobDataHandle());
@@ -221,11 +221,11 @@
     }
     return true;
   }
-  if (wrapper_type_info == &V8File::wrapper_type_info) {
+  if (wrapper_type_info == V8File::GetWrapperTypeInfo()) {
     WriteTag(blob_info_array_ ? kFileIndexTag : kFileTag);
     return WriteFile(wrappable->ToImpl<File>(), exception_state);
   }
-  if (wrapper_type_info == &V8FileList::wrapper_type_info) {
+  if (wrapper_type_info == V8FileList::GetWrapperTypeInfo()) {
     // This does not presently deduplicate a File object and its entry in a
     // FileList, which is non-standard behavior.
     FileList* file_list = wrappable->ToImpl<FileList>();
@@ -238,7 +238,7 @@
     }
     return true;
   }
-  if (wrapper_type_info == &V8ImageBitmap::wrapper_type_info) {
+  if (wrapper_type_info == V8ImageBitmap::GetWrapperTypeInfo()) {
     ImageBitmap* image_bitmap = wrappable->ToImpl<ImageBitmap>();
     if (image_bitmap->IsNeutered()) {
       exception_state.ThrowDOMException(
@@ -279,7 +279,7 @@
     WriteRawBytes(pixels->Data(), pixels->length());
     return true;
   }
-  if (wrapper_type_info == &V8ImageData::wrapper_type_info) {
+  if (wrapper_type_info == V8ImageData::GetWrapperTypeInfo()) {
     ImageData* image_data = wrappable->ToImpl<ImageData>();
     WriteTag(kImageDataTag);
     SerializedColorParams color_params(image_data->GetCanvasColorParams(),
@@ -298,7 +298,7 @@
     WriteRawBytes(pixel_buffer->Data(), pixel_buffer_length);
     return true;
   }
-  if (wrapper_type_info == &V8DOMPoint::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMPoint::GetWrapperTypeInfo()) {
     DOMPoint* point = wrappable->ToImpl<DOMPoint>();
     WriteTag(kDOMPointTag);
     WriteDouble(point->x());
@@ -307,7 +307,7 @@
     WriteDouble(point->w());
     return true;
   }
-  if (wrapper_type_info == &V8DOMPointReadOnly::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMPointReadOnly::GetWrapperTypeInfo()) {
     DOMPointReadOnly* point = wrappable->ToImpl<DOMPointReadOnly>();
     WriteTag(kDOMPointReadOnlyTag);
     WriteDouble(point->x());
@@ -316,7 +316,7 @@
     WriteDouble(point->w());
     return true;
   }
-  if (wrapper_type_info == &V8DOMRect::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMRect::GetWrapperTypeInfo()) {
     DOMRect* rect = wrappable->ToImpl<DOMRect>();
     WriteTag(kDOMRectTag);
     WriteDouble(rect->x());
@@ -325,7 +325,7 @@
     WriteDouble(rect->height());
     return true;
   }
-  if (wrapper_type_info == &V8DOMRectReadOnly::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMRectReadOnly::GetWrapperTypeInfo()) {
     DOMRectReadOnly* rect = wrappable->ToImpl<DOMRectReadOnly>();
     WriteTag(kDOMRectReadOnlyTag);
     WriteDouble(rect->x());
@@ -334,7 +334,7 @@
     WriteDouble(rect->height());
     return true;
   }
-  if (wrapper_type_info == &V8DOMQuad::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMQuad::GetWrapperTypeInfo()) {
     DOMQuad* quad = wrappable->ToImpl<DOMQuad>();
     WriteTag(kDOMQuadTag);
     for (const DOMPoint* point :
@@ -346,7 +346,7 @@
     }
     return true;
   }
-  if (wrapper_type_info == &V8DOMMatrix::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMMatrix::GetWrapperTypeInfo()) {
     DOMMatrix* matrix = wrappable->ToImpl<DOMMatrix>();
     if (matrix->is2D()) {
       WriteTag(kDOMMatrix2DTag);
@@ -377,7 +377,7 @@
     }
     return true;
   }
-  if (wrapper_type_info == &V8DOMMatrixReadOnly::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMMatrixReadOnly::GetWrapperTypeInfo()) {
     DOMMatrixReadOnly* matrix = wrappable->ToImpl<DOMMatrixReadOnly>();
     if (matrix->is2D()) {
       WriteTag(kDOMMatrix2DReadOnlyTag);
@@ -408,7 +408,7 @@
     }
     return true;
   }
-  if (wrapper_type_info == &V8MessagePort::wrapper_type_info) {
+  if (wrapper_type_info == V8MessagePort::GetWrapperTypeInfo()) {
     MessagePort* message_port = wrappable->ToImpl<MessagePort>();
     size_t index = kNotFound;
     if (transferables_)
@@ -424,7 +424,7 @@
     WriteUint32(static_cast<uint32_t>(index));
     return true;
   }
-  if (wrapper_type_info == &V8MojoHandle::wrapper_type_info &&
+  if (wrapper_type_info == V8MojoHandle::GetWrapperTypeInfo() &&
       RuntimeEnabledFeatures::MojoJSEnabled()) {
     MojoHandle* mojo_handle = wrappable->ToImpl<MojoHandle>();
     size_t index = kNotFound;
@@ -444,7 +444,7 @@
     WriteUint32(static_cast<uint32_t>(index));
     return true;
   }
-  if (wrapper_type_info == &V8OffscreenCanvas::wrapper_type_info) {
+  if (wrapper_type_info == V8OffscreenCanvas::GetWrapperTypeInfo()) {
     OffscreenCanvas* canvas = wrappable->ToImpl<OffscreenCanvas>();
     size_t index = kNotFound;
     if (transferables_)
@@ -477,7 +477,7 @@
     WriteUint32(canvas->SinkId());
     return true;
   }
-  if (wrapper_type_info == &V8ReadableStream::wrapper_type_info &&
+  if (wrapper_type_info == V8ReadableStream::GetWrapperTypeInfo() &&
       RuntimeEnabledFeatures::TransferableStreamsEnabled()) {
     ReadableStream* stream = wrappable->ToImpl<ReadableStream>();
     size_t index = kNotFound;
@@ -501,7 +501,7 @@
     WriteUint32(static_cast<uint32_t>(index));
     return true;
   }
-  if (wrapper_type_info == &V8WritableStream::wrapper_type_info &&
+  if (wrapper_type_info == V8WritableStream::GetWrapperTypeInfo() &&
       RuntimeEnabledFeatures::TransferableStreamsEnabled()) {
     WritableStream* stream = wrappable->ToImpl<WritableStream>();
     size_t index = kNotFound;
@@ -530,7 +530,7 @@
         static_cast<uint32_t>(index + transferables_->readable_streams.size()));
     return true;
   }
-  if (wrapper_type_info == &V8TransformStream::wrapper_type_info &&
+  if (wrapper_type_info == V8TransformStream::GetWrapperTypeInfo() &&
       RuntimeEnabledFeatures::TransferableStreamsEnabled()) {
     TransformStream* stream = wrappable->ToImpl<TransformStream>();
     size_t index = kNotFound;
diff --git a/third_party/blink/renderer/bindings/core/v8/v0_custom_element_constructor_builder.cc b/third_party/blink/renderer/bindings/core/v8/v0_custom_element_constructor_builder.cc
index 6b9272e1..2c848e5 100644
--- a/third_party/blink/renderer/bindings/core/v8/v0_custom_element_constructor_builder.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v0_custom_element_constructor_builder.cc
@@ -91,7 +91,7 @@
     prototype_ = v8::Object::New(script_state_->GetIsolate());
     v8::Local<v8::Object> base_prototype =
         script_state_->PerContextData()->PrototypeForType(
-            &V8HTMLElement::wrapper_type_info);
+            V8HTMLElement::GetWrapperTypeInfo());
     if (!base_prototype.IsEmpty()) {
       bool set_prototype;
       if (!prototype_->SetPrototype(script_state_->GetContext(), base_prototype)
@@ -103,7 +103,7 @@
   }
 
   AtomicString namespace_uri = html_names::xhtmlNamespaceURI;
-  if (HasValidPrototypeChainFor(&V8SVGElement::wrapper_type_info))
+  if (HasValidPrototypeChainFor(V8SVGElement::GetWrapperTypeInfo()))
     namespace_uri = svg_names::kNamespaceURI;
 
   DCHECK(!try_catch.HasCaught());
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.cc b/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.cc
index 8060fde..31129d4 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.cc
@@ -660,11 +660,11 @@
     return nullptr;
 
   const WrapperTypeInfo* wrapper_type_info = ToWrapperTypeInfo(global_proxy);
-  if (wrapper_type_info->Equals(&V8Window::wrapper_type_info))
+  if (wrapper_type_info->Equals(V8Window::GetWrapperTypeInfo()))
     return V8Window::ToImpl(global_proxy)->GetExecutionContext();
-  if (wrapper_type_info->IsSubclass(&V8WorkerGlobalScope::wrapper_type_info))
+  if (wrapper_type_info->IsSubclass(V8WorkerGlobalScope::GetWrapperTypeInfo()))
     return V8WorkerGlobalScope::ToImpl(global_proxy)->GetExecutionContext();
-  if (wrapper_type_info->IsSubclass(&V8WorkletGlobalScope::wrapper_type_info))
+  if (wrapper_type_info->IsSubclass(V8WorkletGlobalScope::GetWrapperTypeInfo()))
     return V8WorkletGlobalScope::ToImpl(global_proxy)->GetExecutionContext();
 
   NOTREACHED();
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.cc b/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.cc
index 6db6b62..94ac2acb 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.cc
@@ -47,7 +47,7 @@
                                          const DOMWrapperWorld& world,
                                          v8::Local<v8::Context> context,
                                          const WrapperTypeInfo* type) {
-  CHECK(V8HTMLDocument::wrapper_type_info.Equals(type));
+  CHECK(V8HTMLDocument::GetWrapperTypeInfo()->Equals(type));
   v8::Context::Scope scope(context);
 
   v8::Local<v8::Function> interface_object =
@@ -71,15 +71,15 @@
   InstallRuntimeEnabledFeaturesOnTemplateFunction install_function;
 };
 SnapshotInterface g_snapshot_interfaces[] = {
-    {&V8Window::wrapper_type_info,
+    {V8Window::GetWrapperTypeInfo(),
      V8Window::InstallRuntimeEnabledFeaturesOnTemplate},
-    {&V8HTMLDocument::wrapper_type_info,
+    {V8HTMLDocument::GetWrapperTypeInfo(),
      V8HTMLDocument::InstallRuntimeEnabledFeaturesOnTemplate},
-    {&V8EventTarget::wrapper_type_info,
+    {V8EventTarget::GetWrapperTypeInfo(),
      V8EventTarget::InstallRuntimeEnabledFeaturesOnTemplate},
-    {&V8Node::wrapper_type_info,
+    {V8Node::GetWrapperTypeInfo(),
      V8Node::InstallRuntimeEnabledFeaturesOnTemplate},
-    {&V8Document::wrapper_type_info,
+    {V8Document::GetWrapperTypeInfo(),
      V8Document::InstallRuntimeEnabledFeaturesOnTemplate},
 };
 constexpr size_t kSnapshotInterfaceSize = base::size(g_snapshot_interfaces);
@@ -98,13 +98,13 @@
       NOTREACHED();
       break;
     case InternalFieldType::kNodeType:
-      return &V8Node::wrapper_type_info;
+      return V8Node::GetWrapperTypeInfo();
     case InternalFieldType::kDocumentType:
-      return &V8Document::wrapper_type_info;
+      return V8Document::GetWrapperTypeInfo();
     case InternalFieldType::kHTMLDocumentType:
-      return &V8HTMLDocument::wrapper_type_info;
+      return V8HTMLDocument::GetWrapperTypeInfo();
     case InternalFieldType::kHTMLDocumentObject:
-      return &V8HTMLDocument::wrapper_type_info;
+      return V8HTMLDocument::GetWrapperTypeInfo();
   }
   NOTREACHED();
   return nullptr;
@@ -175,7 +175,7 @@
   {
     v8::Local<v8::Object> window_wrapper =
         global_proxy->GetPrototype().As<v8::Object>();
-    const WrapperTypeInfo* type = &V8Window::wrapper_type_info;
+    const WrapperTypeInfo* type = V8Window::GetWrapperTypeInfo();
     v8::Local<v8::Function> interface = data->ConstructorForType(type);
     v8::Local<v8::Object> prototype = interface->Get(context, prototype_str)
                                           .ToLocalChecked()
@@ -188,7 +188,7 @@
     InstallOriginTrialFeatures(type, script_state, prototype, interface);
   }
   {
-    const WrapperTypeInfo* type = &V8EventTarget::wrapper_type_info;
+    const WrapperTypeInfo* type = V8EventTarget::GetWrapperTypeInfo();
     v8::Local<v8::Function> interface = data->ConstructorForType(type);
     v8::Local<v8::Object> prototype = interface->Get(context, prototype_str)
                                           .ToLocalChecked()
@@ -212,7 +212,7 @@
     CHECK(document->ContainsWrapper());
     v8::Local<v8::Object> document_wrapper =
         ToV8(document, global_proxy, isolate).As<v8::Object>();
-    const WrapperTypeInfo* type = &V8HTMLDocument::wrapper_type_info;
+    const WrapperTypeInfo* type = V8HTMLDocument::GetWrapperTypeInfo();
     v8::Local<v8::Function> interface = data->ConstructorForType(type);
     v8::Local<v8::Object> prototype = interface->Get(context, prototype_str)
                                           .ToLocalChecked()
@@ -225,7 +225,7 @@
     InstallOriginTrialFeatures(type, script_state, prototype, interface);
   }
   {
-    const WrapperTypeInfo* type = &V8Document::wrapper_type_info;
+    const WrapperTypeInfo* type = V8Document::GetWrapperTypeInfo();
     v8::Local<v8::Function> interface = data->ConstructorForType(type);
     v8::Local<v8::Object> prototype = interface->Get(context, prototype_str)
                                           .ToLocalChecked()
@@ -238,7 +238,7 @@
     InstallOriginTrialFeatures(type, script_state, prototype, interface);
   }
   {
-    const WrapperTypeInfo* type = &V8Node::wrapper_type_info;
+    const WrapperTypeInfo* type = V8Node::GetWrapperTypeInfo();
     v8::Local<v8::Function> interface = data->ConstructorForType(type);
     v8::Local<v8::Object> prototype = interface->Get(context, prototype_str)
                                           .ToLocalChecked()
@@ -264,12 +264,13 @@
   // Update the install functions for V8Window and V8Document to work for their
   // partial interfaces.
   SnapshotInterface& snapshot_window = g_snapshot_interfaces[0];
-  DCHECK(V8Window::wrapper_type_info.Equals(snapshot_window.wrapper_type_info));
+  DCHECK(V8Window::GetWrapperTypeInfo()->Equals(
+      snapshot_window.wrapper_type_info));
   snapshot_window.install_function =
       V8Window::install_runtime_enabled_features_on_template_function_;
 
   SnapshotInterface& snapshot_document = g_snapshot_interfaces[4];
-  DCHECK(V8Document::wrapper_type_info.Equals(
+  DCHECK(V8Document::GetWrapperTypeInfo()->Equals(
       snapshot_document.wrapper_type_info));
   snapshot_document.install_function =
       V8Document::install_runtime_enabled_features_on_template_function_;
@@ -324,17 +325,17 @@
   InternalFieldType field_type = InternalFieldType::kNone;
   const WrapperTypeInfo* wrapper_type = ToWrapperTypeInfo(object);
   if (kV8DOMWrapperObjectIndex == index) {
-    if (blink::V8HTMLDocument::wrapper_type_info.Equals(wrapper_type)) {
+    if (blink::V8HTMLDocument::GetWrapperTypeInfo()->Equals(wrapper_type)) {
       field_type = InternalFieldType::kHTMLDocumentObject;
     }
     DCHECK_LE(kV8DefaultWrapperInternalFieldCount,
               object->InternalFieldCount());
   } else if (kV8DOMWrapperTypeIndex == index) {
-    if (blink::V8HTMLDocument::wrapper_type_info.Equals(wrapper_type)) {
+    if (blink::V8HTMLDocument::GetWrapperTypeInfo()->Equals(wrapper_type)) {
       field_type = InternalFieldType::kHTMLDocumentType;
-    } else if (blink::V8Document::wrapper_type_info.Equals(wrapper_type)) {
+    } else if (blink::V8Document::GetWrapperTypeInfo()->Equals(wrapper_type)) {
       field_type = InternalFieldType::kDocumentType;
-    } else if (blink::V8Node::wrapper_type_info.Equals(wrapper_type)) {
+    } else if (blink::V8Node::GetWrapperTypeInfo()->Equals(wrapper_type)) {
       field_type = InternalFieldType::kNodeType;
     }
     DCHECK_LE(kV8PrototypeInternalFieldcount, object->InternalFieldCount());
@@ -467,7 +468,7 @@
         wrapper_type_info->DomTemplate(isolate, world);
     CHECK(!interface_template.IsEmpty());
     interface_templates[i] = interface_template;
-    if (V8Window::wrapper_type_info.Equals(wrapper_type_info)) {
+    if (V8Window::GetWrapperTypeInfo()->Equals(wrapper_type_info)) {
       window_template = interface_template;
     }
   }
@@ -490,10 +491,10 @@
   if (world.IsMainWorld()) {
     v8::Context::Scope scope(context);
     v8::Local<v8::Object> document_wrapper = CreatePlainWrapper(
-        isolate, world, context, &V8HTMLDocument::wrapper_type_info);
+        isolate, world, context, V8HTMLDocument::GetWrapperTypeInfo());
     int indices[] = {kV8DOMWrapperObjectIndex, kV8DOMWrapperTypeIndex};
     void* values[] = {nullptr, const_cast<WrapperTypeInfo*>(
-                                   &V8HTMLDocument::wrapper_type_info)};
+                                   V8HTMLDocument::GetWrapperTypeInfo())};
     document_wrapper->SetAlignedPointerInInternalFields(base::size(indices),
                                                         indices, values);
 
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc b/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc
index aa16640..1a0d6564 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc
@@ -74,7 +74,7 @@
     // Autonomous custom element
     // 4.1. If the active function object is not HTMLElement, then throw a
     // TypeError
-    if (!V8HTMLElement::wrapper_type_info.Equals(&wrapper_type_info)) {
+    if (!V8HTMLElement::GetWrapperTypeInfo()->Equals(&wrapper_type_info)) {
       V8ThrowException::ThrowTypeError(isolate,
                                        "Illegal constructor: autonomous custom "
                                        "elements must extend HTMLElement");
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
index 0050eb0..41a4e10 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
@@ -198,7 +198,7 @@
   if (V8DOMWrapper::IsWrapper(isolate, data)) {
     v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(data);
     const WrapperTypeInfo* type = ToWrapperTypeInfo(obj);
-    if (V8DOMException::wrapper_type_info.IsSubclass(type)) {
+    if (V8DOMException::GetWrapperTypeInfo()->IsSubclass(type)) {
       DOMException* exception = V8DOMException::ToImpl(obj);
       if (exception && !exception->MessageForConsole().IsEmpty())
         return exception->ToStringForConsole();
diff --git a/third_party/blink/renderer/bindings/modules/v8/custom/v8_extendable_message_event_custom.cc b/third_party/blink/renderer/bindings/modules/v8/custom/v8_extendable_message_event_custom.cc
index 70ffc789..ca6940f 100644
--- a/third_party/blink/renderer/bindings/modules/v8/custom/v8_extendable_message_event_custom.cc
+++ b/third_party/blink/renderer/bindings/modules/v8/custom/v8_extendable_message_event_custom.cc
@@ -43,7 +43,7 @@
       ExtendableMessageEvent::Create(type, event_init_dict);
   v8::Local<v8::Object> wrapper = info.Holder();
   wrapper = impl->AssociateWithWrapper(
-      isolate, &V8ExtendableMessageEvent::wrapper_type_info, wrapper);
+      isolate, V8ExtendableMessageEvent::GetWrapperTypeInfo(), wrapper);
 
   // TODO(bashi): Workaround for http://crbug.com/529941. We need to store
   // |data| as a private value to avoid cyclic references.
diff --git a/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules.cc b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules.cc
index 0e3011d..58f2d68 100644
--- a/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules.cc
+++ b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules.cc
@@ -31,11 +31,11 @@
     return false;
 
   const WrapperTypeInfo* wrapper_type_info = wrappable->GetWrapperTypeInfo();
-  if (wrapper_type_info == &V8CryptoKey::wrapper_type_info) {
+  if (wrapper_type_info == V8CryptoKey::GetWrapperTypeInfo()) {
     return WriteCryptoKey(wrappable->ToImpl<CryptoKey>()->Key(),
                           exception_state);
   }
-  if (wrapper_type_info == &V8DOMFileSystem::wrapper_type_info) {
+  if (wrapper_type_info == V8DOMFileSystem::GetWrapperTypeInfo()) {
     DOMFileSystem* fs = wrappable->ToImpl<DOMFileSystem>();
     if (!fs->Clonable()) {
       exception_state.ThrowDOMException(
@@ -50,7 +50,7 @@
     WriteUTF8String(fs->RootURL().GetString());
     return true;
   }
-  if (wrapper_type_info == &V8RTCCertificate::wrapper_type_info) {
+  if (wrapper_type_info == V8RTCCertificate::GetWrapperTypeInfo()) {
     RTCCertificate* certificate = wrappable->ToImpl<RTCCertificate>();
     rtc::RTCCertificatePEM pem = certificate->Certificate()->ToPEM();
     WriteTag(kRTCCertificateTag);
@@ -58,7 +58,7 @@
     WriteUTF8String(pem.certificate().c_str());
     return true;
   }
-  if (wrapper_type_info == &V8DetectedBarcode::wrapper_type_info) {
+  if (wrapper_type_info == V8DetectedBarcode::GetWrapperTypeInfo()) {
     DetectedBarcode* detected_barcode = wrappable->ToImpl<DetectedBarcode>();
     WriteTag(kDetectedBarcodeTag);
     WriteUTF8String(detected_barcode->rawValue());
@@ -76,7 +76,7 @@
     }
     return true;
   }
-  if (wrapper_type_info == &V8DetectedFace::wrapper_type_info) {
+  if (wrapper_type_info == V8DetectedFace::GetWrapperTypeInfo()) {
     DetectedFace* detected_face = wrappable->ToImpl<DetectedFace>();
     WriteTag(kDetectedFaceTag);
     DOMRectReadOnly* bounding_box = detected_face->boundingBox();
@@ -97,7 +97,7 @@
     }
     return true;
   }
-  if (wrapper_type_info == &V8DetectedText::wrapper_type_info) {
+  if (wrapper_type_info == V8DetectedText::GetWrapperTypeInfo()) {
     DetectedText* detected_text = wrappable->ToImpl<DetectedText>();
     WriteTag(kDetectedTextTag);
     WriteUTF8String(detected_text->rawValue());
diff --git a/third_party/blink/renderer/bindings/templates/attributes.cc.tmpl b/third_party/blink/renderer/bindings/templates/attributes.cc.tmpl
index 3f3d94d..1d37cc0 100644
--- a/third_party/blink/renderer/bindings/templates/attributes.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/attributes.cc.tmpl
@@ -296,7 +296,7 @@
   {% if attribute.is_named_constructor %}
   V8{{attribute.constructor_type}}::NamedConstructorAttributeGetter(property, info);
   {% else %}
-  V8ConstructorAttributeGetter(property, info, &V8{{attribute.constructor_type}}::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8{{attribute.constructor_type}}::GetWrapperTypeInfo());
   {% endif %}
 }
 {% endmacro %}
diff --git a/third_party/blink/renderer/bindings/templates/callback_interface.cc.tmpl b/third_party/blink/renderer/bindings/templates/callback_interface.cc.tmpl
index 527221b..9915e883 100644
--- a/third_party/blink/renderer/bindings/templates/callback_interface.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/callback_interface.cc.tmpl
@@ -20,7 +20,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo {{v8_class}}::wrapper_type_info = {
+const WrapperTypeInfo {{snake_case_v8_class}}_wrapper_type_info = {
     gin::kEmbedderBlink,
     {{v8_class}}::DomTemplate,
     nullptr,
@@ -42,7 +42,7 @@
   // Initialize the interface object's template.
   V8DOMConfiguration::InitializeDOMInterfaceTemplate(
       isolate, interface_template,
-      {{v8_class}}::wrapper_type_info.interface_name,
+      {{v8_class}}::GetWrapperTypeInfo()->interface_name,
       v8::Local<v8::FunctionTemplate>(),
       kV8DefaultWrapperInternalFieldCount);
   interface_template->SetLength(0);
@@ -59,7 +59,7 @@
   return V8DOMConfiguration::DomClassTemplate(
       isolate,
       world,
-      const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      const_cast<WrapperTypeInfo*>(GetWrapperTypeInfo()),
       Install{{v8_class}}Template);
 }
 {% endif %}{# is_legacy_callback_interface #}
diff --git a/third_party/blink/renderer/bindings/templates/callback_interface.h.tmpl b/third_party/blink/renderer/bindings/templates/callback_interface.h.tmpl
index 4763cb1..80fea06d 100644
--- a/third_party/blink/renderer/bindings/templates/callback_interface.h.tmpl
+++ b/third_party/blink/renderer/bindings/templates/callback_interface.h.tmpl
@@ -14,12 +14,19 @@
 class {{forward_declaration}};
 {% endfor %}
 
+{% if is_legacy_callback_interface %}
+{{exported}}extern const WrapperTypeInfo {{snake_case_v8_class}}_wrapper_type_info;
+{% endif %}
+
 class {{exported}}{{v8_class}} final : public CallbackInterfaceBase {
  public:
 {% if is_legacy_callback_interface %}
   // Support of "legacy callback interface"
   static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
-  static const WrapperTypeInfo wrapper_type_info;
+  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &{{snake_case_v8_class}}_wrapper_type_info;
+  }
+
   // Constants
 {% for constant in constants %}
   static constexpr {{constant.cpp_type}} {{constant.name}} = {{constant.value}};
diff --git a/third_party/blink/renderer/bindings/templates/external_reference_table.cc.tmpl b/third_party/blink/renderer/bindings/templates/external_reference_table.cc.tmpl
index dcd1bee..4f44253 100644
--- a/third_party/blink/renderer/bindings/templates/external_reference_table.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/external_reference_table.cc.tmpl
@@ -75,7 +75,7 @@
     {%   endif %}
     {%   if interface.has_security_check %}
     reinterpret_cast<intptr_t>({{v8_class}}::SecurityCheck),
-    reinterpret_cast<intptr_t>(&{{v8_class}}::wrapper_type_info),
+    reinterpret_cast<intptr_t>({{v8_class}}::GetWrapperTypeInfo()),
     {%  endif %}
     {# Other properties #}
     {%   if interface.has_constructor_callback %}
diff --git a/third_party/blink/renderer/bindings/templates/interface.cc.tmpl b/third_party/blink/renderer/bindings/templates/interface.cc.tmpl
index 06dc821..e3e1dd2 100644
--- a/third_party/blink/renderer/bindings/templates/interface.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/interface.cc.tmpl
@@ -787,7 +787,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo {{v8_class}}Constructor::wrapper_type_info = {
+const WrapperTypeInfo {{snake_case_v8_class}}_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     {{v8_class}}Constructor::DomTemplate,
     {{install_conditional_features_func or 'nullptr'}},
@@ -831,7 +831,7 @@
   }
 
   v8::Local<v8::Function> named_constructor =
-      per_context_data->ConstructorForType(&{{v8_class}}Constructor::wrapper_type_info);
+      per_context_data->ConstructorForType({{v8_class}}Constructor::GetWrapperTypeInfo());
 
   // Set the prototype of named constructors to the regular constructor.
   auto private_property =
@@ -842,7 +842,7 @@
   if (!private_property.GetOrUndefined(named_constructor).ToLocal(&private_value) ||
       private_value->IsUndefined()) {
     v8::Local<v8::Function> interface =
-        per_context_data->ConstructorForType(&{{v8_class}}::wrapper_type_info);
+        per_context_data->ConstructorForType({{v8_class}}::GetWrapperTypeInfo());
     v8::Local<v8::Value> interfacePrototype =
         interface->Get(current_context, V8AtomicString(info.GetIsolate(), "prototype"))
         .ToLocalChecked();
@@ -933,7 +933,7 @@
   {{v8_class}}::ConstructorCustom(info);
   {% elif has_html_constructor %}
   V8HTMLConstructor::HtmlConstructor(
-      info, {{v8_class}}::wrapper_type_info, HTMLElementType::k{{interface_name}});
+      info, *{{v8_class}}::GetWrapperTypeInfo(), HTMLElementType::k{{interface_name}});
   {% else %}
   {{internal_namespace}}::Constructor(info);
   {% endif %}
@@ -1051,7 +1051,7 @@
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   {% set install_template_function = '%s::install_%s_template_function_' % (v8_class, snake_case_v8_class) if has_partial_interface else 'Install%sTemplate' % v8_class %}
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>({{v8_class}}::GetWrapperTypeInfo()),
       {{install_template_function}});
 }
 
@@ -1097,13 +1097,13 @@
 {% if not is_array_buffer_or_view %}
 
 bool {{v8_class}}::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance({{v8_class}}::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> {{v8_class}}::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      {{v8_class}}::GetWrapperTypeInfo(), v8_value);
 }
 
 {% endif %}
@@ -1277,7 +1277,7 @@
   {% endif %}
 
   if (install_conditional_features_function) {
-    {{v8_class}}::wrapper_type_info.install_conditional_features_function =
+    {{v8_class}}::GetWrapperTypeInfo()->install_conditional_features_function =
         install_conditional_features_function;
   }
 }
diff --git a/third_party/blink/renderer/bindings/templates/interface.h.tmpl b/third_party/blink/renderer/bindings/templates/interface.h.tmpl
index 24011454..c124e53 100644
--- a/third_party/blink/renderer/bindings/templates/interface.h.tmpl
+++ b/third_party/blink/renderer/bindings/templates/interface.h.tmpl
@@ -14,15 +14,27 @@
 class ScriptState;
 {% endif %}
 {% if named_constructor %}
+
+extern const WrapperTypeInfo {{snake_case_v8_class}}_constructor_wrapper_type_info;
+
 class {{v8_class}}Constructor {
   STATIC_ONLY({{v8_class}}Constructor);
  public:
   static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
   static void NamedConstructorAttributeGetter(v8::Local<v8::Name> property_name, const v8::PropertyCallbackInfo<v8::Value>& info);
-  static const WrapperTypeInfo wrapper_type_info;
+  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &{{snake_case_v8_class}}_constructor_wrapper_type_info;
+  }
 };
 
 {% endif %}
+
+{% if has_partial_interface %}
+{{exported}}extern WrapperTypeInfo {{snake_case_v8_class}}_wrapper_type_info;
+{% else %}
+{{exported}}extern const WrapperTypeInfo {{snake_case_v8_class}}_wrapper_type_info;
+{% endif %}
+
 class {{v8_class}} {
   STATIC_ONLY({{v8_class}});
  public:
@@ -40,11 +52,15 @@
   }
   {% endif %}
   {{exported}}static {{cpp_class}}* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
+
   {% if has_partial_interface %}
-  {{exported}}static WrapperTypeInfo wrapper_type_info;
+  {{exported}}static constexpr WrapperTypeInfo* GetWrapperTypeInfo() {
   {% else %}
-  {{exported}}static const WrapperTypeInfo wrapper_type_info;
+  {{exported}}static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
   {% endif %}
+    return &{{snake_case_v8_class}}_wrapper_type_info;
+  }
+
   {% for method in methods %}
   {% if method.is_custom %}
   static void {{method.camel_case_name}}MethodCustom(const v8::FunctionCallbackInfo<v8::Value>&);
diff --git a/third_party/blink/renderer/bindings/templates/interface_base.cc.tmpl b/third_party/blink/renderer/bindings/templates/interface_base.cc.tmpl
index 1f41c62..e49940ba 100644
--- a/third_party/blink/renderer/bindings/templates/interface_base.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/interface_base.cc.tmpl
@@ -9,7 +9,7 @@
 
 namespace blink {
 {% set dom_template = '%s::DomTemplate' % v8_class if not is_array_buffer_or_view else 'nullptr' %}
-{% set parent_wrapper_type_info = '&V8%s::wrapper_type_info' % parent_interface
+{% set parent_wrapper_type_info = 'V8%s::GetWrapperTypeInfo()' % parent_interface
                                   if parent_interface else 'nullptr' %}
 {% set active_scriptwrappable_inheritance =
     'kInheritFromActiveScriptWrappable'
@@ -24,7 +24,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-{{wrapper_type_info_const}}WrapperTypeInfo {{v8_class}}::wrapper_type_info = {
+{{wrapper_type_info_const}}WrapperTypeInfo {{snake_case_v8_class}}_wrapper_type_info = {
     gin::kEmbedderBlink,
     {{dom_template}},
     {{install_conditional_features_func or 'nullptr'}},
@@ -42,7 +42,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in {{cpp_class}}.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& {{cpp_class}}::wrapper_type_info_ = {{v8_class}}::wrapper_type_info;
+const WrapperTypeInfo& {{cpp_class}}::wrapper_type_info_ = {{snake_case_v8_class}}_wrapper_type_info;
 {% endif %}
 
 {% if active_scriptwrappable %}
@@ -292,7 +292,7 @@
 
   BindingSecurity::FailedAccessCheckFor(
       info.GetIsolate(),
-      &{{v8_class}}::wrapper_type_info,
+      {{v8_class}}::GetWrapperTypeInfo(),
       info.Holder());
   {% endif %}
 }
@@ -318,7 +318,7 @@
 
   BindingSecurity::FailedAccessCheckFor(
       info.GetIsolate(),
-      &{{v8_class}}::wrapper_type_info,
+      {{v8_class}}::GetWrapperTypeInfo(),
       info.Holder());
 }
 {% endif %}
@@ -428,7 +428,7 @@
          'V8%s::DomTemplate(isolate, world)' % parent_interface
          if parent_interface else
          'v8::Local<v8::FunctionTemplate>()' %}
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, {{v8_class}}::wrapper_type_info.interface_name, {{parent_interface_template}}, {{v8_class}}::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, {{v8_class}}::GetWrapperTypeInfo()->interface_name, {{parent_interface_template}}, {{v8_class}}::kInternalFieldCount);
   {% if constructors or has_custom_constructor or has_html_constructor %}
   interface_template->SetCallHandler({{internal_namespace}}::ConstructorCallback);
   interface_template->SetLength({{interface_length}});
@@ -497,7 +497,7 @@
           nullptr,
           {{cross_origin_named_enumerator}}),
       v8::IndexedPropertyHandlerConfiguration({{cross_origin_indexed_getter}}),
-      v8::External::New(isolate, const_cast<WrapperTypeInfo*>(&{{v8_class}}::wrapper_type_info)));
+      v8::External::New(isolate, const_cast<WrapperTypeInfo*>({{v8_class}}::GetWrapperTypeInfo())));
   {% endif %}
 
   {% if (indexed_property_getter or named_property_getter) and not is_partial %}
@@ -793,7 +793,7 @@
 #error "We don't expect a runtime enabled interface {{v8_class_or_partial}} to have InstallRuntimeEnabledFeatures()."
   {% endif %}
 
-  v8::Local<v8::FunctionTemplate> interface_template = {{v8_class}}::wrapper_type_info.DomTemplate(isolate, world);
+  v8::Local<v8::FunctionTemplate> interface_template = {{v8_class}}::GetWrapperTypeInfo()->DomTemplate(isolate, world);
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
 
@@ -865,7 +865,7 @@
     v8::Local<v8::Function> interface) {
   {% if feature.attributes or feature.methods %}
   v8::Local<v8::FunctionTemplate> interface_template =
-      {{v8_class}}::wrapper_type_info.DomTemplate(isolate, world);
+      {{v8_class}}::GetWrapperTypeInfo()->DomTemplate(isolate, world);
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
   {% endif %}
@@ -923,9 +923,9 @@
     ScriptState* script_state, v8::Local<v8::Object> instance) {
   V8PerContextData* per_context_data = script_state->PerContextData();
   v8::Local<v8::Object> prototype = per_context_data->PrototypeForType(
-      &{{v8_class}}::wrapper_type_info);
+      {{v8_class}}::GetWrapperTypeInfo());
   v8::Local<v8::Function> interface = per_context_data->ConstructorForType(
-      &{{v8_class}}::wrapper_type_info);
+      {{v8_class}}::GetWrapperTypeInfo());
   ALLOW_UNUSED_LOCAL(interface);
   Install{{feature.name}}(script_state->GetIsolate(), script_state->World(), instance, prototype, interface);
 }
diff --git a/third_party/blink/renderer/bindings/templates/methods.cc.tmpl b/third_party/blink/renderer/bindings/templates/methods.cc.tmpl
index f524655..0ad3aed0 100644
--- a/third_party/blink/renderer/bindings/templates/methods.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/methods.cc.tmpl
@@ -535,7 +535,7 @@
   V8PerIsolateData* data = V8PerIsolateData::From(info.GetIsolate());
   const DOMWrapperWorld& world = DOMWrapperWorld::World(info.GetIsolate()->GetCurrentContext());
   v8::Local<v8::FunctionTemplate> interface_template =
-      data->FindInterfaceTemplate(world, &{{v8_class}}::wrapper_type_info);
+      data->FindInterfaceTemplate(world, {{v8_class}}::GetWrapperTypeInfo());
   v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), interface_template);
 
   v8::Local<v8::FunctionTemplate> method_template =
@@ -618,7 +618,7 @@
                                        if constructor.is_named_constructor else
                                        '') %}
 v8::Local<v8::Object> wrapper = info.Holder();
-wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &{{constructor_class}}::wrapper_type_info, wrapper);
+wrapper = impl->AssociateWithWrapper(info.GetIsolate(), {{constructor_class}}::GetWrapperTypeInfo(), wrapper);
 V8SetReturnValue(info, wrapper);
 {% endmacro %}
 
diff --git a/third_party/blink/renderer/bindings/templates/origin_trial_features_for_core.cc.tmpl b/third_party/blink/renderer/bindings/templates/origin_trial_features_for_core.cc.tmpl
index 8646c398..cb37e80 100644
--- a/third_party/blink/renderer/bindings/templates/origin_trial_features_for_core.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/origin_trial_features_for_core.cc.tmpl
@@ -31,7 +31,7 @@
   const DOMWrapperWorld& world = script_state->World();
   // TODO(iclelland): Unify ContextFeatureSettings with the rest of the
   // conditional features.
-  if (wrapper_type_info == &V8Window::wrapper_type_info) {
+  if (wrapper_type_info == V8Window::GetWrapperTypeInfo()) {
     auto* settings = ContextFeatureSettings::From(
         execution_context,
         ContextFeatureSettings::CreationMode::kDontCreateIfNotExists);
@@ -45,7 +45,7 @@
   // TODO(iclelland): Extract this common code out of OriginTrialFeaturesForCore
   // and OriginTrialFeaturesForModules into a block.
   {% for interface in installers_by_interface %}
-  if (wrapper_type_info == &{{interface.v8_class}}::wrapper_type_info) {
+  if (wrapper_type_info == {{interface.v8_class}}::GetWrapperTypeInfo()) {
     {% if interface.is_global %}
     v8::Local<v8::Object> instance_object =
         script_state->GetContext()->Global();
@@ -81,7 +81,7 @@
         v8::Local<v8::Object>(), v8::Local<v8::Function>());
     {% else %}
     if (context_data->GetExistingConstructorAndPrototypeForType(
-            &{{installer.v8_class}}::wrapper_type_info, &prototype_object, &interface_object)) {
+            {{installer.v8_class}}::GetWrapperTypeInfo(), &prototype_object, &interface_object)) {
       {{installer.v8_class_or_partial}}::{{installer.install_method}}(
           isolate, world, v8::Local<v8::Object>(), prototype_object, interface_object);
     }
diff --git a/third_party/blink/renderer/bindings/templates/origin_trial_features_for_modules.cc.tmpl b/third_party/blink/renderer/bindings/templates/origin_trial_features_for_modules.cc.tmpl
index 8ad8c35..dc8b78a 100644
--- a/third_party/blink/renderer/bindings/templates/origin_trial_features_for_modules.cc.tmpl
+++ b/third_party/blink/renderer/bindings/templates/origin_trial_features_for_modules.cc.tmpl
@@ -34,7 +34,7 @@
   // TODO(iclelland): Extract this common code out of OriginTrialFeaturesForCore
   // and OriginTrialFeaturesForModules into a block.
   {% for interface in installers_by_interface %}
-  if (wrapper_type_info == &{{interface.v8_class}}::wrapper_type_info) {
+  if (wrapper_type_info == {{interface.v8_class}}::GetWrapperTypeInfo()) {
     {% if interface.is_global %}
     v8::Local<v8::Object> instance_object =
         script_state->GetContext()->Global();
@@ -73,7 +73,7 @@
         v8::Local<v8::Object>(), v8::Local<v8::Function>());
     {% else %}
     if (context_data->GetExistingConstructorAndPrototypeForType(
-            &{{installer.v8_class}}::wrapper_type_info, &prototype_object, &interface_object)) {
+            {{installer.v8_class}}::GetWrapperTypeInfo(), &prototype_object, &interface_object)) {
       {{installer.v8_class_or_partial}}::{{installer.install_method}}(
           isolate, world, v8::Local<v8::Object>(), prototype_object, interface_object);
     }
diff --git a/third_party/blink/renderer/bindings/tests/results/core/origin_trial_features_for_core.cc b/third_party/blink/renderer/bindings/tests/results/core/origin_trial_features_for_core.cc
index 4916892..377daa6 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/origin_trial_features_for_core.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/origin_trial_features_for_core.cc
@@ -44,7 +44,7 @@
   const DOMWrapperWorld& world = script_state->World();
   // TODO(iclelland): Unify ContextFeatureSettings with the rest of the
   // conditional features.
-  if (wrapper_type_info == &V8Window::wrapper_type_info) {
+  if (wrapper_type_info == V8Window::GetWrapperTypeInfo()) {
     auto* settings = ContextFeatureSettings::From(
         execution_context,
         ContextFeatureSettings::CreationMode::kDontCreateIfNotExists);
@@ -57,7 +57,7 @@
   }
   // TODO(iclelland): Extract this common code out of OriginTrialFeaturesForCore
   // and OriginTrialFeaturesForModules into a block.
-  if (wrapper_type_info == &V8TestObject::wrapper_type_info) {
+  if (wrapper_type_info == V8TestObject::GetWrapperTypeInfo()) {
     if (origin_trials::FeatureNameEnabled(execution_context)) {
       V8TestObject::InstallFeatureName(
           isolate, world, v8::Local<v8::Object>(), prototype_object, interface_object);
@@ -78,7 +78,7 @@
   V8PerContextData* context_data = script_state->PerContextData();
   if (feature == origin_trials::kFeatureNameTrialName) {
     if (context_data->GetExistingConstructorAndPrototypeForType(
-            &V8TestObject::wrapper_type_info, &prototype_object, &interface_object)) {
+            V8TestObject::GetWrapperTypeInfo(), &prototype_object, &interface_object)) {
       V8TestObject::InstallFeatureName(
           isolate, world, v8::Local<v8::Object>(), prototype_object, interface_object);
     }
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.cc
index 60632e0..984b5ab 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.cc
@@ -31,7 +31,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8ArrayBuffer::wrapper_type_info = {
+const WrapperTypeInfo v8_array_buffer_wrapper_type_info = {
     gin::kEmbedderBlink,
     nullptr,
     nullptr,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestArrayBuffer.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestArrayBuffer::wrapper_type_info_ = V8ArrayBuffer::wrapper_type_info;
+const WrapperTypeInfo& TestArrayBuffer::wrapper_type_info_ = v8_array_buffer_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.h b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.h
index 87232f8..1efc6be 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer.h
@@ -24,12 +24,18 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_array_buffer_wrapper_type_info;
+
 class V8ArrayBuffer {
   STATIC_ONLY(V8ArrayBuffer);
  public:
   CORE_EXPORT static TestArrayBuffer* ToImpl(v8::Local<v8::Object> object);
   CORE_EXPORT static TestArrayBuffer* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_array_buffer_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.cc
index 3c7d948..908abaf 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.cc
@@ -44,7 +44,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8ArrayBufferView::wrapper_type_info = {
+const WrapperTypeInfo v8_array_buffer_view_wrapper_type_info = {
     gin::kEmbedderBlink,
     nullptr,
     nullptr,
@@ -61,7 +61,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestArrayBufferView.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestArrayBufferView::wrapper_type_info_ = V8ArrayBufferView::wrapper_type_info;
+const WrapperTypeInfo& TestArrayBufferView::wrapper_type_info_ = v8_array_buffer_view_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.h b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.h
index a6daf4e6..1678409e 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_array_buffer_view.h
@@ -24,12 +24,18 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_array_buffer_view_wrapper_type_info;
+
 class V8ArrayBufferView {
   STATIC_ONLY(V8ArrayBufferView);
  public:
   CORE_EXPORT static TestArrayBufferView* ToImpl(v8::Local<v8::Object> object);
   CORE_EXPORT static TestArrayBufferView* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_array_buffer_view_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.cc
index a98c40b..bbf42fb 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.cc
@@ -31,12 +31,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8DataView::wrapper_type_info = {
+const WrapperTypeInfo v8_data_view_wrapper_type_info = {
     gin::kEmbedderBlink,
     nullptr,
     nullptr,
     "DataView",
-    &V8ArrayBufferView::wrapper_type_info,
+    V8ArrayBufferView::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestDataView.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestDataView::wrapper_type_info_ = V8DataView::wrapper_type_info;
+const WrapperTypeInfo& TestDataView::wrapper_type_info_ = v8_data_view_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.h b/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.h
index c10e49a..e4f65840 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_data_view.h
@@ -27,12 +27,18 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_data_view_wrapper_type_info;
+
 class V8DataView {
   STATIC_ONLY(V8DataView);
  public:
   CORE_EXPORT static TestDataView* ToImpl(v8::Local<v8::Object> object);
   CORE_EXPORT static TestDataView* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_data_view_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.cc
index bbd0df9f..ecdc18f 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.cc
@@ -31,7 +31,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8SVGTestInterface::wrapper_type_info = {
+const WrapperTypeInfo v8_svg_test_interface_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8SVGTestInterface::DomTemplate,
     nullptr,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in SVGTestInterface.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& SVGTestInterface::wrapper_type_info_ = V8SVGTestInterface::wrapper_type_info;
+const WrapperTypeInfo& SVGTestInterface::wrapper_type_info_ = v8_svg_test_interface_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -119,7 +119,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8SVGTestInterface::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8SVGTestInterface::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8SVGTestInterface::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8SVGTestInterface::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -158,18 +158,18 @@
 v8::Local<v8::FunctionTemplate> V8SVGTestInterface::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8SVGTestInterface::GetWrapperTypeInfo()),
       InstallV8SVGTestInterfaceTemplate);
 }
 
 bool V8SVGTestInterface::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8SVGTestInterface::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8SVGTestInterface::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8SVGTestInterface::GetWrapperTypeInfo(), v8_value);
 }
 
 SVGTestInterface* V8SVGTestInterface::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.h b/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.h
index accbfba..7befda9 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_svg_test_interface_wrapper_type_info;
+
 class V8SVGTestInterface {
   STATIC_ONLY(V8SVGTestInterface);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<SVGTestInterface>();
   }
   CORE_EXPORT static SVGTestInterface* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_svg_test_interface_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.cc
index 46a41da..3d3dad8 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.cc
@@ -30,7 +30,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestAttributes::wrapper_type_info = {
+const WrapperTypeInfo v8_test_attributes_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestAttributes::DomTemplate,
     nullptr,
@@ -47,7 +47,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestAttributes.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestAttributes::wrapper_type_info_ = V8TestAttributes::wrapper_type_info;
+const WrapperTypeInfo& TestAttributes::wrapper_type_info_ = v8_test_attributes_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -219,7 +219,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestAttributes::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestAttributes::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestAttributes::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestAttributes::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -258,18 +258,18 @@
 v8::Local<v8::FunctionTemplate> V8TestAttributes::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestAttributes::GetWrapperTypeInfo()),
       InstallV8TestAttributesTemplate);
 }
 
 bool V8TestAttributes::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestAttributes::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestAttributes::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestAttributes::GetWrapperTypeInfo(), v8_value);
 }
 
 TestAttributes* V8TestAttributes::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.h
index ade15ab..86b4ccdf 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_attributes.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_attributes_wrapper_type_info;
+
 class V8TestAttributes {
   STATIC_ONLY(V8TestAttributes);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestAttributes>();
   }
   CORE_EXPORT static TestAttributes* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_attributes_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.cc
index 2e45448..b52a3c7 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.cc
@@ -33,7 +33,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestCallbackFunctions::wrapper_type_info = {
+const WrapperTypeInfo v8_test_callback_functions_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestCallbackFunctions::DomTemplate,
     nullptr,
@@ -50,7 +50,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestCallbackFunctions.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestCallbackFunctions::wrapper_type_info_ = V8TestCallbackFunctions::wrapper_type_info;
+const WrapperTypeInfo& TestCallbackFunctions::wrapper_type_info_ = v8_test_callback_functions_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -275,7 +275,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestCallbackFunctions::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestCallbackFunctions::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestCallbackFunctions::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestCallbackFunctions::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -317,18 +317,18 @@
 v8::Local<v8::FunctionTemplate> V8TestCallbackFunctions::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestCallbackFunctions::GetWrapperTypeInfo()),
       InstallV8TestCallbackFunctionsTemplate);
 }
 
 bool V8TestCallbackFunctions::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestCallbackFunctions::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestCallbackFunctions::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestCallbackFunctions::GetWrapperTypeInfo(), v8_value);
 }
 
 TestCallbackFunctions* V8TestCallbackFunctions::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.h
index 29f7205b..0d089889 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_callback_functions_wrapper_type_info;
+
 class V8TestCallbackFunctions {
   STATIC_ONLY(V8TestCallbackFunctions);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestCallbackFunctions>();
   }
   CORE_EXPORT static TestCallbackFunctions* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_callback_functions_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.cc
index 7edd7b1..c62971b 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.cc
@@ -32,7 +32,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestConstants::wrapper_type_info = {
+const WrapperTypeInfo v8_test_constants_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestConstants::DomTemplate,
     nullptr,
@@ -49,7 +49,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestConstants.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestConstants::wrapper_type_info_ = V8TestConstants::wrapper_type_info;
+const WrapperTypeInfo& TestConstants::wrapper_type_info_ = v8_test_constants_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -87,7 +87,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestConstants::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestConstants::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestConstants::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestConstants::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -215,9 +215,9 @@
     ScriptState* script_state, v8::Local<v8::Object> instance) {
   V8PerContextData* per_context_data = script_state->PerContextData();
   v8::Local<v8::Object> prototype = per_context_data->PrototypeForType(
-      &V8TestConstants::wrapper_type_info);
+      V8TestConstants::GetWrapperTypeInfo());
   v8::Local<v8::Function> interface = per_context_data->ConstructorForType(
-      &V8TestConstants::wrapper_type_info);
+      V8TestConstants::GetWrapperTypeInfo());
   ALLOW_UNUSED_LOCAL(interface);
   InstallFeatureName1(script_state->GetIsolate(), script_state->World(), instance, prototype, interface);
 }
@@ -246,9 +246,9 @@
     ScriptState* script_state, v8::Local<v8::Object> instance) {
   V8PerContextData* per_context_data = script_state->PerContextData();
   v8::Local<v8::Object> prototype = per_context_data->PrototypeForType(
-      &V8TestConstants::wrapper_type_info);
+      V8TestConstants::GetWrapperTypeInfo());
   v8::Local<v8::Function> interface = per_context_data->ConstructorForType(
-      &V8TestConstants::wrapper_type_info);
+      V8TestConstants::GetWrapperTypeInfo());
   ALLOW_UNUSED_LOCAL(interface);
   InstallFeatureName2(script_state->GetIsolate(), script_state->World(), instance, prototype, interface);
 }
@@ -260,18 +260,18 @@
 v8::Local<v8::FunctionTemplate> V8TestConstants::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestConstants::GetWrapperTypeInfo()),
       InstallV8TestConstantsTemplate);
 }
 
 bool V8TestConstants::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestConstants::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestConstants::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestConstants::GetWrapperTypeInfo(), v8_value);
 }
 
 TestConstants* V8TestConstants::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.h
index 2ed12f85..b05cb0a 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_constants.h
@@ -25,6 +25,9 @@
 namespace blink {
 
 class ScriptState;
+
+CORE_EXPORT extern const WrapperTypeInfo v8_test_constants_wrapper_type_info;
+
 class V8TestConstants {
   STATIC_ONLY(V8TestConstants);
  public:
@@ -35,7 +38,11 @@
     return ToScriptWrappable(object)->ToImpl<TestConstants>();
   }
   CORE_EXPORT static TestConstants* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_constants_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   static void InstallFeatureName1(v8::Isolate*, const DOMWrapperWorld&, v8::Local<v8::Object> instance, v8::Local<v8::Object> prototype, v8::Local<v8::Function> interface);
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.cc
index 6acdb74..668a766 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.cc
@@ -34,7 +34,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestIntegerIndexed::wrapper_type_info = {
+const WrapperTypeInfo v8_test_integer_indexed_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestIntegerIndexed::DomTemplate,
     nullptr,
@@ -51,7 +51,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestIntegerIndexed.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestIntegerIndexed::wrapper_type_info_ = V8TestIntegerIndexed::wrapper_type_info;
+const WrapperTypeInfo& TestIntegerIndexed::wrapper_type_info_ = v8_test_integer_indexed_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -347,7 +347,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestIntegerIndexed::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestIntegerIndexed::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestIntegerIndexed::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestIntegerIndexed::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -413,18 +413,18 @@
 v8::Local<v8::FunctionTemplate> V8TestIntegerIndexed::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestIntegerIndexed::GetWrapperTypeInfo()),
       InstallV8TestIntegerIndexedTemplate);
 }
 
 bool V8TestIntegerIndexed::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestIntegerIndexed::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestIntegerIndexed::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestIntegerIndexed::GetWrapperTypeInfo(), v8_value);
 }
 
 TestIntegerIndexed* V8TestIntegerIndexed::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.h
index b80d7d1..8718545 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_integer_indexed_wrapper_type_info;
+
 class V8TestIntegerIndexed {
   STATIC_ONLY(V8TestIntegerIndexed);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestIntegerIndexed>();
   }
   CORE_EXPORT static TestIntegerIndexed* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_integer_indexed_wrapper_type_info;
+  }
+
   static void IndexedPropertyGetterCustom(uint32_t, const v8::PropertyCallbackInfo<v8::Value>&);
   static void IndexedPropertySetterCustom(uint32_t, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<v8::Value>&);
   static void IndexedPropertyDeleterCustom(uint32_t, const v8::PropertyCallbackInfo<v8::Boolean>&);
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.cc
index 582ccfe..7622c041 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.cc
@@ -31,7 +31,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestIntegerIndexedGlobal::wrapper_type_info = {
+const WrapperTypeInfo v8_test_integer_indexed_global_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestIntegerIndexedGlobal::DomTemplate,
     nullptr,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestIntegerIndexedGlobal.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestIntegerIndexedGlobal::wrapper_type_info_ = V8TestIntegerIndexedGlobal::wrapper_type_info;
+const WrapperTypeInfo& TestIntegerIndexedGlobal::wrapper_type_info_ = v8_test_integer_indexed_global_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -266,7 +266,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestIntegerIndexedGlobal::wrapper_type_info.interface_name, V8TestIntegerIndexedGlobal::DomTemplateForNamedPropertiesObject(isolate, world), V8TestIntegerIndexedGlobal::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestIntegerIndexedGlobal::GetWrapperTypeInfo()->interface_name, V8TestIntegerIndexedGlobal::DomTemplateForNamedPropertiesObject(isolate, world), V8TestIntegerIndexedGlobal::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -329,7 +329,7 @@
 v8::Local<v8::FunctionTemplate> V8TestIntegerIndexedGlobal::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestIntegerIndexedGlobal::GetWrapperTypeInfo()),
       InstallV8TestIntegerIndexedGlobalTemplate);
 }
 
@@ -361,13 +361,13 @@
 }
 
 bool V8TestIntegerIndexedGlobal::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestIntegerIndexedGlobal::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestIntegerIndexedGlobal::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestIntegerIndexedGlobal::GetWrapperTypeInfo(), v8_value);
 }
 
 TestIntegerIndexedGlobal* V8TestIntegerIndexedGlobal::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.h
index 0fc006c..466282a 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_integer_indexed_global_wrapper_type_info;
+
 class V8TestIntegerIndexedGlobal {
   STATIC_ONLY(V8TestIntegerIndexedGlobal);
  public:
@@ -35,7 +37,11 @@
     return ToScriptWrappable(object)->ToImpl<TestIntegerIndexedGlobal>();
   }
   CORE_EXPORT static TestIntegerIndexedGlobal* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_integer_indexed_global_wrapper_type_info;
+  }
+
   static void IndexedPropertyGetterCustom(uint32_t, const v8::PropertyCallbackInfo<v8::Value>&);
   static void IndexedPropertySetterCustom(uint32_t, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<v8::Value>&);
   static void IndexedPropertyDeleterCustom(uint32_t, const v8::PropertyCallbackInfo<v8::Boolean>&);
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.cc
index 5deaaa7..c4b8ddf 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.cc
@@ -48,12 +48,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-WrapperTypeInfo V8TestInterface::wrapper_type_info = {
+WrapperTypeInfo v8_test_interface_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterface::DomTemplate,
     V8TestInterface::InstallConditionalFeatures,
     "TestInterface",
-    &V8TestInterfaceEmpty::wrapper_type_info,
+    V8TestInterfaceEmpty::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kInheritFromActiveScriptWrappable,
@@ -65,7 +65,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceImplementation.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceImplementation::wrapper_type_info_ = V8TestInterface::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceImplementation::wrapper_type_info_ = v8_test_interface_wrapper_type_info;
 
 // [ActiveScriptWrappable]
 static_assert(
@@ -2627,21 +2627,21 @@
     v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) {
   RUNTIME_CALL_TIMER_SCOPE_DISABLED_BY_DEFAULT(info.GetIsolate(), "Blink_TestInterfaceImplementation_testInterfaceConstructorAttribute_ConstructorGetterCallback");
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterface::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterface::GetWrapperTypeInfo());
 }
 
 void V8TestInterface::TestInterfaceConstructorGetterCallback(
     v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) {
   RUNTIME_CALL_TIMER_SCOPE_DISABLED_BY_DEFAULT(info.GetIsolate(), "Blink_TestInterfaceImplementation_TestInterface_ConstructorGetterCallback");
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterface::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterface::GetWrapperTypeInfo());
 }
 
 void V8TestInterface::TestInterface2ConstructorGetterCallback(
     v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) {
   RUNTIME_CALL_TIMER_SCOPE_DISABLED_BY_DEFAULT(info.GetIsolate(), "Blink_TestInterfaceImplementation_TestInterface2_ConstructorGetterCallback");
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterface2::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterface2::GetWrapperTypeInfo());
 }
 
 void V8TestInterface::DoubleAttributeAttributeGetterCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
@@ -3979,7 +3979,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface::wrapper_type_info.interface_name, V8TestInterfaceEmpty::DomTemplate(isolate, world), V8TestInterface::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface::GetWrapperTypeInfo()->interface_name, V8TestInterfaceEmpty::DomTemplate(isolate, world), V8TestInterface::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -4193,18 +4193,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterface::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterface::GetWrapperTypeInfo()),
       V8TestInterface::install_v8_test_interface_template_function_);
 }
 
 bool V8TestInterface::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterface::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterface::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterface::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceImplementation* V8TestInterface::ToImplWithTypeCheck(
@@ -4678,7 +4678,7 @@
       install_runtime_enabled_features_on_template_function;
 
   if (install_conditional_features_function) {
-    V8TestInterface::wrapper_type_info.install_conditional_features_function =
+    V8TestInterface::GetWrapperTypeInfo()->install_conditional_features_function =
         install_conditional_features_function;
   }
 }
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.h
index 4532baeb..3fee62c 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.h
@@ -27,6 +27,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern WrapperTypeInfo v8_test_interface_wrapper_type_info;
+
 class V8TestInterface {
   STATIC_ONLY(V8TestInterface);
  public:
@@ -37,7 +39,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceImplementation>();
   }
   CORE_EXPORT static TestInterfaceImplementation* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_wrapper_type_info;
+  }
+
   static void ImplementsCustomVoidMethodMethodCustom(const v8::FunctionCallbackInfo<v8::Value>&);
   static void LegacyCallCustom(const v8::FunctionCallbackInfo<v8::Value>&);
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
index 2540749..22dfb2768 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
@@ -35,7 +35,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-WrapperTypeInfo V8TestInterface2::wrapper_type_info = {
+WrapperTypeInfo v8_test_interface_2_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterface2::DomTemplate,
     nullptr,
@@ -52,7 +52,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterface2.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterface2::wrapper_type_info_ = V8TestInterface2::wrapper_type_info;
+const WrapperTypeInfo& TestInterface2::wrapper_type_info_ = v8_test_interface_2_wrapper_type_info;
 
 // [ActiveScriptWrappable]
 static_assert(
@@ -337,7 +337,7 @@
 
   TestInterface2* impl = TestInterface2::Create();
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterface2::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterface2::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -746,7 +746,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface2::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterface2::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface2::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterface2::kInternalFieldCount);
   interface_template->SetCallHandler(test_interface_2_v8_internal::ConstructorCallback);
   interface_template->SetLength(0);
 
@@ -828,18 +828,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterface2::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterface2::GetWrapperTypeInfo()),
       V8TestInterface2::install_v8_test_interface_2_template_function_);
 }
 
 bool V8TestInterface2::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterface2::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterface2::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterface2::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterface2* V8TestInterface2::ToImplWithTypeCheck(
@@ -878,7 +878,7 @@
       install_runtime_enabled_features_on_template_function;
 
   if (install_conditional_features_function) {
-    V8TestInterface2::wrapper_type_info.install_conditional_features_function =
+    V8TestInterface2::GetWrapperTypeInfo()->install_conditional_features_function =
         install_conditional_features_function;
   }
 }
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.h
index 4a38a9c..a2ec0d1 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern WrapperTypeInfo v8_test_interface_2_wrapper_type_info;
+
 class V8TestInterface2 {
   STATIC_ONLY(V8TestInterface2);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterface2>();
   }
   CORE_EXPORT static TestInterface2* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_2_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   CORE_EXPORT static void InstallConditionalFeatures(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.cc
index 9617600..b8666409 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.cc
@@ -31,7 +31,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterface3::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_3_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterface3::DomTemplate,
     nullptr,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterface3.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterface3::wrapper_type_info_ = V8TestInterface3::wrapper_type_info;
+const WrapperTypeInfo& TestInterface3::wrapper_type_info_ = v8_test_interface_3_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -265,7 +265,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface3::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterface3::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface3::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterface3::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -331,18 +331,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterface3::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterface3::GetWrapperTypeInfo()),
       InstallV8TestInterface3Template);
 }
 
 bool V8TestInterface3::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterface3::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterface3::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterface3::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterface3* V8TestInterface3::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.h
index 5195177..3f3c0b8c 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_3_wrapper_type_info;
+
 class V8TestInterface3 {
   STATIC_ONLY(V8TestInterface3);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterface3>();
   }
   CORE_EXPORT static TestInterface3* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_3_wrapper_type_info;
+  }
+
   static void IndexedPropertyGetterCustom(uint32_t, const v8::PropertyCallbackInfo<v8::Value>&);
   static void IndexedPropertySetterCustom(uint32_t, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<v8::Value>&);
   static void IndexedPropertyDeleterCustom(uint32_t, const v8::PropertyCallbackInfo<v8::Boolean>&);
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.cc
index 14cbef9..1f69fb6 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.cc
@@ -33,7 +33,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceCheckSecurity::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_check_security_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceCheckSecurity::DomTemplate,
     V8TestInterfaceCheckSecurity::InstallConditionalFeatures,
@@ -50,7 +50,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceCheckSecurity.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceCheckSecurity::wrapper_type_info_ = V8TestInterfaceCheckSecurity::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceCheckSecurity::wrapper_type_info_ = v8_test_interface_check_security_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -194,7 +194,7 @@
   V8PerIsolateData* data = V8PerIsolateData::From(info.GetIsolate());
   const DOMWrapperWorld& world = DOMWrapperWorld::World(info.GetIsolate()->GetCurrentContext());
   v8::Local<v8::FunctionTemplate> interface_template =
-      data->FindInterfaceTemplate(world, &V8TestInterfaceCheckSecurity::wrapper_type_info);
+      data->FindInterfaceTemplate(world, V8TestInterfaceCheckSecurity::GetWrapperTypeInfo());
   v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), interface_template);
 
   v8::Local<v8::FunctionTemplate> method_template =
@@ -237,7 +237,7 @@
   V8PerIsolateData* data = V8PerIsolateData::From(info.GetIsolate());
   const DOMWrapperWorld& world = DOMWrapperWorld::World(info.GetIsolate()->GetCurrentContext());
   v8::Local<v8::FunctionTemplate> interface_template =
-      data->FindInterfaceTemplate(world, &V8TestInterfaceCheckSecurity::wrapper_type_info);
+      data->FindInterfaceTemplate(world, V8TestInterfaceCheckSecurity::GetWrapperTypeInfo());
   v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), interface_template);
 
   v8::Local<v8::FunctionTemplate> method_template =
@@ -280,7 +280,7 @@
   V8PerIsolateData* data = V8PerIsolateData::From(info.GetIsolate());
   const DOMWrapperWorld& world = DOMWrapperWorld::World(info.GetIsolate()->GetCurrentContext());
   v8::Local<v8::FunctionTemplate> interface_template =
-      data->FindInterfaceTemplate(world, &V8TestInterfaceCheckSecurity::wrapper_type_info);
+      data->FindInterfaceTemplate(world, V8TestInterfaceCheckSecurity::GetWrapperTypeInfo());
   v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), interface_template);
 
   v8::Local<v8::FunctionTemplate> method_template =
@@ -323,7 +323,7 @@
   V8PerIsolateData* data = V8PerIsolateData::From(info.GetIsolate());
   const DOMWrapperWorld& world = DOMWrapperWorld::World(info.GetIsolate()->GetCurrentContext());
   v8::Local<v8::FunctionTemplate> interface_template =
-      data->FindInterfaceTemplate(world, &V8TestInterfaceCheckSecurity::wrapper_type_info);
+      data->FindInterfaceTemplate(world, V8TestInterfaceCheckSecurity::GetWrapperTypeInfo());
   v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), interface_template);
 
   v8::Local<v8::FunctionTemplate> method_template =
@@ -461,7 +461,7 @@
   V8PerIsolateData* data = V8PerIsolateData::From(info.GetIsolate());
   const DOMWrapperWorld& world = DOMWrapperWorld::World(info.GetIsolate()->GetCurrentContext());
   v8::Local<v8::FunctionTemplate> interface_template =
-      data->FindInterfaceTemplate(world, &V8TestInterfaceCheckSecurity::wrapper_type_info);
+      data->FindInterfaceTemplate(world, V8TestInterfaceCheckSecurity::GetWrapperTypeInfo());
   v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), interface_template);
 
   v8::Local<v8::FunctionTemplate> method_template =
@@ -746,7 +746,7 @@
 
   BindingSecurity::FailedAccessCheckFor(
       info.GetIsolate(),
-      &V8TestInterfaceCheckSecurity::wrapper_type_info,
+      V8TestInterfaceCheckSecurity::GetWrapperTypeInfo(),
       info.Holder());
 }
 
@@ -766,7 +766,7 @@
 
   BindingSecurity::FailedAccessCheckFor(
       info.GetIsolate(),
-      &V8TestInterfaceCheckSecurity::wrapper_type_info,
+      V8TestInterfaceCheckSecurity::GetWrapperTypeInfo(),
       info.Holder());
 }
 
@@ -812,7 +812,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceCheckSecurity::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceCheckSecurity::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceCheckSecurity::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceCheckSecurity::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -848,7 +848,7 @@
           nullptr,
           V8TestInterfaceCheckSecurity::CrossOriginNamedEnumerator),
       v8::IndexedPropertyHandlerConfiguration(nullptr),
-      v8::External::New(isolate, const_cast<WrapperTypeInfo*>(&V8TestInterfaceCheckSecurity::wrapper_type_info)));
+      v8::External::New(isolate, const_cast<WrapperTypeInfo*>(V8TestInterfaceCheckSecurity::GetWrapperTypeInfo())));
 
   // Custom signature
   static const V8DOMConfiguration::AttributeConfiguration doNotCheckSecurityVoidMethodOriginSafeAttributeConfiguration[] = {
@@ -896,18 +896,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceCheckSecurity::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceCheckSecurity::GetWrapperTypeInfo()),
       InstallV8TestInterfaceCheckSecurityTemplate);
 }
 
 bool V8TestInterfaceCheckSecurity::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceCheckSecurity::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceCheckSecurity::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceCheckSecurity::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceCheckSecurity* V8TestInterfaceCheckSecurity::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.h
index 764a635..e14a98b 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_check_security_wrapper_type_info;
+
 class V8TestInterfaceCheckSecurity {
   STATIC_ONLY(V8TestInterfaceCheckSecurity);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceCheckSecurity>();
   }
   CORE_EXPORT static TestInterfaceCheckSecurity* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_check_security_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   CORE_EXPORT static void InstallConditionalFeatures(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.cc
index 2619d870..7fd987b8 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.cc
@@ -30,7 +30,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceConditionalSecureContext::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_conditional_secure_context_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceConditionalSecureContext::DomTemplate,
     V8TestInterfaceConditionalSecureContext::InstallConditionalFeatures,
@@ -47,7 +47,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceConditionalSecureContext.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceConditionalSecureContext::wrapper_type_info_ = V8TestInterfaceConditionalSecureContext::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceConditionalSecureContext::wrapper_type_info_ = v8_test_interface_conditional_secure_context_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -401,7 +401,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConditionalSecureContext::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConditionalSecureContext::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConditionalSecureContext::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConditionalSecureContext::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -437,18 +437,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceConditionalSecureContext::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceConditionalSecureContext::GetWrapperTypeInfo()),
       InstallV8TestInterfaceConditionalSecureContextTemplate);
 }
 
 bool V8TestInterfaceConditionalSecureContext::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceConditionalSecureContext::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceConditionalSecureContext::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceConditionalSecureContext::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceConditionalSecureContext* V8TestInterfaceConditionalSecureContext::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.h
index 775279f1..ec9774e3 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_conditional_secure_context_wrapper_type_info;
+
 class V8TestInterfaceConditionalSecureContext {
   STATIC_ONLY(V8TestInterfaceConditionalSecureContext);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceConditionalSecureContext>();
   }
   CORE_EXPORT static TestInterfaceConditionalSecureContext* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_conditional_secure_context_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   CORE_EXPORT static void InstallConditionalFeatures(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
index e6eafb715..2eb54fa7 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
@@ -36,7 +36,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceConstructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceConstructor::DomTemplate,
     nullptr,
@@ -53,7 +53,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceConstructor.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceConstructor::wrapper_type_info_ = V8TestInterfaceConstructor::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceConstructor::wrapper_type_info_ = v8_test_interface_constructor_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -86,7 +86,7 @@
     return;
   }
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -157,7 +157,7 @@
       return;
     }
     v8::Local<v8::Object> wrapper = info.Holder();
-    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapper_type_info, wrapper);
+    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor::GetWrapperTypeInfo(), wrapper);
     V8SetReturnValue(info, wrapper);
     return;
   }
@@ -188,7 +188,7 @@
     return;
   }
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -221,7 +221,7 @@
       return;
     }
     v8::Local<v8::Object> wrapper = info.Holder();
-    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapper_type_info, wrapper);
+    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor::GetWrapperTypeInfo(), wrapper);
     V8SetReturnValue(info, wrapper);
     return;
   }
@@ -238,7 +238,7 @@
     return;
   }
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -273,7 +273,7 @@
     return;
   }
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -366,7 +366,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceConstructorConstructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_constructor_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceConstructorConstructor::DomTemplate,
     nullptr,
@@ -424,7 +424,7 @@
       return;
     }
     v8::Local<v8::Object> wrapper = info.Holder();
-    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructorConstructor::wrapper_type_info, wrapper);
+    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructorConstructor::GetWrapperTypeInfo(), wrapper);
     V8SetReturnValue(info, wrapper);
     return;
   }
@@ -441,7 +441,7 @@
     return;
   }
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructorConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructorConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -474,7 +474,7 @@
   }
 
   v8::Local<v8::Function> named_constructor =
-      per_context_data->ConstructorForType(&V8TestInterfaceConstructorConstructor::wrapper_type_info);
+      per_context_data->ConstructorForType(V8TestInterfaceConstructorConstructor::GetWrapperTypeInfo());
 
   // Set the prototype of named constructors to the regular constructor.
   auto private_property =
@@ -485,7 +485,7 @@
   if (!private_property.GetOrUndefined(named_constructor).ToLocal(&private_value) ||
       private_value->IsUndefined()) {
     v8::Local<v8::Function> interface =
-        per_context_data->ConstructorForType(&V8TestInterfaceConstructor::wrapper_type_info);
+        per_context_data->ConstructorForType(V8TestInterfaceConstructor::GetWrapperTypeInfo());
     v8::Local<v8::Value> interfacePrototype =
         interface->Get(current_context, V8AtomicString(info.GetIsolate(), "prototype"))
         .ToLocalChecked();
@@ -505,7 +505,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor::kInternalFieldCount);
   interface_template->SetCallHandler(test_interface_constructor_v8_internal::ConstructorCallback);
   interface_template->SetLength(0);
 
@@ -543,18 +543,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceConstructor::GetWrapperTypeInfo()),
       InstallV8TestInterfaceConstructorTemplate);
 }
 
 bool V8TestInterfaceConstructor::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceConstructor::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceConstructor* V8TestInterfaceConstructor::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h
index 56e8cca..979ebe5 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h
@@ -25,14 +25,20 @@
 
 namespace blink {
 
+extern const WrapperTypeInfo v8_test_interface_constructor_constructor_wrapper_type_info;
+
 class V8TestInterfaceConstructorConstructor {
   STATIC_ONLY(V8TestInterfaceConstructorConstructor);
  public:
   static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
   static void NamedConstructorAttributeGetter(v8::Local<v8::Name> property_name, const v8::PropertyCallbackInfo<v8::Value>& info);
-  static const WrapperTypeInfo wrapper_type_info;
+  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_constructor_constructor_wrapper_type_info;
+  }
 };
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_constructor_wrapper_type_info;
+
 class V8TestInterfaceConstructor {
   STATIC_ONLY(V8TestInterfaceConstructor);
  public:
@@ -43,7 +49,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceConstructor>();
   }
   CORE_EXPORT static TestInterfaceConstructor* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_constructor_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.cc
index b7a24cd..24acebc 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.cc
@@ -31,7 +31,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceConstructor2::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_constructor_2_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceConstructor2::DomTemplate,
     nullptr,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceConstructor2.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceConstructor2::wrapper_type_info_ = V8TestInterfaceConstructor2::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceConstructor2::wrapper_type_info_ = v8_test_interface_constructor_2_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -75,7 +75,7 @@
 
   TestInterfaceConstructor2* impl = TestInterfaceConstructor2::Create(string_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor2::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor2::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -95,7 +95,7 @@
 
   TestInterfaceConstructor2* impl = TestInterfaceConstructor2::Create(dictionary_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor2::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor2::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -111,7 +111,7 @@
 
   TestInterfaceConstructor2* impl = TestInterfaceConstructor2::Create(string_sequence_sequence_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor2::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor2::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -164,7 +164,7 @@
   if (UNLIKELY(num_args_passed <= 5)) {
     TestInterfaceConstructor2* impl = TestInterfaceConstructor2::Create(test_interface_empty_arg, long_arg, default_undefined_optional_string_arg, default_null_string_optional_string_arg, default_undefined_optional_dictionary_arg);
     v8::Local<v8::Object> wrapper = info.Holder();
-    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor2::wrapper_type_info, wrapper);
+    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor2::GetWrapperTypeInfo(), wrapper);
     V8SetReturnValue(info, wrapper);
     return;
   }
@@ -174,7 +174,7 @@
 
   TestInterfaceConstructor2* impl = TestInterfaceConstructor2::Create(test_interface_empty_arg, long_arg, default_undefined_optional_string_arg, default_null_string_optional_string_arg, default_undefined_optional_dictionary_arg, optional_string_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor2::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor2::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -265,7 +265,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor2::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor2::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor2::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor2::kInternalFieldCount);
   interface_template->SetCallHandler(test_interface_constructor_2_v8_internal::ConstructorCallback);
   interface_template->SetLength(1);
 
@@ -303,18 +303,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor2::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceConstructor2::GetWrapperTypeInfo()),
       InstallV8TestInterfaceConstructor2Template);
 }
 
 bool V8TestInterfaceConstructor2::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceConstructor2::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceConstructor2::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceConstructor2::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceConstructor2* V8TestInterfaceConstructor2::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.h
index 353c7c9..f0ce1af 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_constructor_2_wrapper_type_info;
+
 class V8TestInterfaceConstructor2 {
   STATIC_ONLY(V8TestInterfaceConstructor2);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceConstructor2>();
   }
   CORE_EXPORT static TestInterfaceConstructor2* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_constructor_2_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.cc
index 60f105b..c21ba3e 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.cc
@@ -29,7 +29,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceConstructor3::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_constructor_3_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceConstructor3::DomTemplate,
     nullptr,
@@ -46,7 +46,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceConstructor3.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceConstructor3::wrapper_type_info_ = V8TestInterfaceConstructor3::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceConstructor3::wrapper_type_info_ = v8_test_interface_constructor_3_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -78,7 +78,7 @@
 
   TestInterfaceConstructor3* impl = TestInterfaceConstructor3::Create(string_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor3::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor3::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -107,7 +107,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor3::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor3::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor3::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor3::kInternalFieldCount);
   interface_template->SetCallHandler(test_interface_constructor_3_v8_internal::ConstructorCallback);
   interface_template->SetLength(1);
 
@@ -145,18 +145,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor3::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceConstructor3::GetWrapperTypeInfo()),
       InstallV8TestInterfaceConstructor3Template);
 }
 
 bool V8TestInterfaceConstructor3::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceConstructor3::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceConstructor3::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceConstructor3::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceConstructor3* V8TestInterfaceConstructor3::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.h
index 455d91b..478ab1f 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_constructor_3_wrapper_type_info;
+
 class V8TestInterfaceConstructor3 {
   STATIC_ONLY(V8TestInterfaceConstructor3);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceConstructor3>();
   }
   CORE_EXPORT static TestInterfaceConstructor3* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_constructor_3_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
index 4980eea0..b8e22a3b 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
@@ -30,7 +30,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceConstructor4::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_constructor_4_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceConstructor4::DomTemplate,
     nullptr,
@@ -47,7 +47,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceConstructor4.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceConstructor4::wrapper_type_info_ = V8TestInterfaceConstructor4::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceConstructor4::wrapper_type_info_ = v8_test_interface_constructor_4_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -76,7 +76,7 @@
 
   TestInterfaceConstructor4* impl = TestInterfaceConstructor4::Create(test_interface_4_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor4::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor4::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -92,7 +92,7 @@
 
   TestInterfaceConstructor4* impl = TestInterfaceConstructor4::Create(usv_string_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor4::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructor4::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -141,7 +141,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor4::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor4::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceConstructor4::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor4::kInternalFieldCount);
   interface_template->SetCallHandler(test_interface_constructor_4_v8_internal::ConstructorCallback);
   interface_template->SetLength(1);
 
@@ -179,18 +179,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor4::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceConstructor4::GetWrapperTypeInfo()),
       InstallV8TestInterfaceConstructor4Template);
 }
 
 bool V8TestInterfaceConstructor4::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceConstructor4::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceConstructor4::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceConstructor4::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceConstructor4* V8TestInterfaceConstructor4::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h
index 6af1460..2cb11fcc 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_constructor_4_wrapper_type_info;
+
 class V8TestInterfaceConstructor4 {
   STATIC_ONLY(V8TestInterfaceConstructor4);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceConstructor4>();
   }
   CORE_EXPORT static TestInterfaceConstructor4* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_constructor_4_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.cc
index 2785d15..67da084 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.cc
@@ -27,7 +27,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceCustomConstructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_custom_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceCustomConstructor::DomTemplate,
     nullptr,
@@ -44,7 +44,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceCustomConstructor.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceCustomConstructor::wrapper_type_info_ = V8TestInterfaceCustomConstructor::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceCustomConstructor::wrapper_type_info_ = v8_test_interface_custom_constructor_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -86,7 +86,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceCustomConstructor::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceCustomConstructor::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceCustomConstructor::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceCustomConstructor::kInternalFieldCount);
   interface_template->SetCallHandler(test_interface_custom_constructor_v8_internal::ConstructorCallback);
   interface_template->SetLength(0);
 
@@ -124,18 +124,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceCustomConstructor::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceCustomConstructor::GetWrapperTypeInfo()),
       InstallV8TestInterfaceCustomConstructorTemplate);
 }
 
 bool V8TestInterfaceCustomConstructor::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceCustomConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceCustomConstructor::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceCustomConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceCustomConstructor* V8TestInterfaceCustomConstructor::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.h
index c860469..3b133dd 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_custom_constructor_wrapper_type_info;
+
 class V8TestInterfaceCustomConstructor {
   STATIC_ONLY(V8TestInterfaceCustomConstructor);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceCustomConstructor>();
   }
   CORE_EXPORT static TestInterfaceCustomConstructor* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_custom_constructor_wrapper_type_info;
+  }
+
   static void ConstructorCustom(const v8::FunctionCallbackInfo<v8::Value>&);
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.cc
index 4244d95..c9420eb 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.cc
@@ -32,12 +32,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceDocument::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_document_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceDocument::DomTemplate,
     nullptr,
     "TestInterfaceDocument",
-    &V8Document::wrapper_type_info,
+    V8Document::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kNodeClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -49,7 +49,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceDocument.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceDocument::wrapper_type_info_ = V8TestInterfaceDocument::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceDocument::wrapper_type_info_ = v8_test_interface_document_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -130,7 +130,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceDocument::wrapper_type_info.interface_name, V8Document::DomTemplate(isolate, world), V8TestInterfaceDocument::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceDocument::GetWrapperTypeInfo()->interface_name, V8Document::DomTemplate(isolate, world), V8TestInterfaceDocument::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -169,18 +169,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceDocument::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceDocument::GetWrapperTypeInfo()),
       InstallV8TestInterfaceDocumentTemplate);
 }
 
 bool V8TestInterfaceDocument::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceDocument::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceDocument::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceDocument::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceDocument* V8TestInterfaceDocument::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.h
index 280457be..f5e599f 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.h
@@ -26,6 +26,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_document_wrapper_type_info;
+
 class V8TestInterfaceDocument {
   STATIC_ONLY(V8TestInterfaceDocument);
  public:
@@ -36,7 +38,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceDocument>();
   }
   CORE_EXPORT static TestInterfaceDocument* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_document_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.cc
index 6ec0059..ed6edc91 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.cc
@@ -26,7 +26,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceEmpty::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_empty_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceEmpty::DomTemplate,
     nullptr,
@@ -43,7 +43,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceEmpty.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceEmpty::wrapper_type_info_ = V8TestInterfaceEmpty::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceEmpty::wrapper_type_info_ = v8_test_interface_empty_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -67,7 +67,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceEmpty::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceEmpty::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceEmpty::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceEmpty::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -103,18 +103,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceEmpty::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceEmpty::GetWrapperTypeInfo()),
       InstallV8TestInterfaceEmptyTemplate);
 }
 
 bool V8TestInterfaceEmpty::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceEmpty::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceEmpty::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceEmpty::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceEmpty* V8TestInterfaceEmpty::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.h
index c4f2074..b985c59 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_empty.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_empty_wrapper_type_info;
+
 class V8TestInterfaceEmpty {
   STATIC_ONLY(V8TestInterfaceEmpty);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceEmpty>();
   }
   CORE_EXPORT static TestInterfaceEmpty* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_empty_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc
index ef764d5..d4393e0 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc
@@ -31,12 +31,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceEventInitConstructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_event_init_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceEventInitConstructor::DomTemplate,
     nullptr,
     "TestInterfaceEventInitConstructor",
-    &V8Event::wrapper_type_info,
+    V8Event::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceEventInitConstructor.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceEventInitConstructor::wrapper_type_info_ = V8TestInterfaceEventInitConstructor::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceEventInitConstructor::wrapper_type_info_ = v8_test_interface_event_init_constructor_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -107,7 +107,7 @@
 
   TestInterfaceEventInitConstructor* impl = TestInterfaceEventInitConstructor::Create(type, test_interface_event_init);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceEventInitConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceEventInitConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -153,7 +153,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceEventInitConstructor::wrapper_type_info.interface_name, V8Event::DomTemplate(isolate, world), V8TestInterfaceEventInitConstructor::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceEventInitConstructor::GetWrapperTypeInfo()->interface_name, V8Event::DomTemplate(isolate, world), V8TestInterfaceEventInitConstructor::kInternalFieldCount);
   interface_template->SetCallHandler(test_interface_event_init_constructor_v8_internal::ConstructorCallback);
   interface_template->SetLength(2);
 
@@ -194,18 +194,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceEventInitConstructor::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceEventInitConstructor::GetWrapperTypeInfo()),
       InstallV8TestInterfaceEventInitConstructorTemplate);
 }
 
 bool V8TestInterfaceEventInitConstructor::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceEventInitConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceEventInitConstructor::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceEventInitConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceEventInitConstructor* V8TestInterfaceEventInitConstructor::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.h
index e6f0f53..423e642 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.h
@@ -25,6 +25,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_event_init_constructor_wrapper_type_info;
+
 class V8TestInterfaceEventInitConstructor {
   STATIC_ONLY(V8TestInterfaceEventInitConstructor);
  public:
@@ -35,7 +37,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceEventInitConstructor>();
   }
   CORE_EXPORT static TestInterfaceEventInitConstructor* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_event_init_constructor_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.cc
index 767fd6e8..8e90e03 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.cc
@@ -30,12 +30,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceEventTarget::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_event_target_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceEventTarget::DomTemplate,
     nullptr,
     "TestInterfaceEventTarget",
-    &V8EventTarget::wrapper_type_info,
+    V8EventTarget::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -47,7 +47,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceEventTarget.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceEventTarget::wrapper_type_info_ = V8TestInterfaceEventTarget::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceEventTarget::wrapper_type_info_ = v8_test_interface_event_target_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -72,7 +72,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceEventTargetConstructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_event_target_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceEventTargetConstructor::DomTemplate,
     nullptr,
@@ -103,7 +103,7 @@
       info.NewTarget().As<v8::Object>()->CreationContext()));
   TestInterfaceEventTarget* impl = TestInterfaceEventTarget::CreateForJSConstructor(document);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceEventTargetConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceEventTargetConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -136,7 +136,7 @@
   }
 
   v8::Local<v8::Function> named_constructor =
-      per_context_data->ConstructorForType(&V8TestInterfaceEventTargetConstructor::wrapper_type_info);
+      per_context_data->ConstructorForType(V8TestInterfaceEventTargetConstructor::GetWrapperTypeInfo());
 
   // Set the prototype of named constructors to the regular constructor.
   auto private_property =
@@ -147,7 +147,7 @@
   if (!private_property.GetOrUndefined(named_constructor).ToLocal(&private_value) ||
       private_value->IsUndefined()) {
     v8::Local<v8::Function> interface =
-        per_context_data->ConstructorForType(&V8TestInterfaceEventTarget::wrapper_type_info);
+        per_context_data->ConstructorForType(V8TestInterfaceEventTarget::GetWrapperTypeInfo());
     v8::Local<v8::Value> interfacePrototype =
         interface->Get(current_context, V8AtomicString(info.GetIsolate(), "prototype"))
         .ToLocalChecked();
@@ -167,7 +167,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceEventTarget::wrapper_type_info.interface_name, V8EventTarget::DomTemplate(isolate, world), V8TestInterfaceEventTarget::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceEventTarget::GetWrapperTypeInfo()->interface_name, V8EventTarget::DomTemplate(isolate, world), V8TestInterfaceEventTarget::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -203,18 +203,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceEventTarget::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceEventTarget::GetWrapperTypeInfo()),
       InstallV8TestInterfaceEventTargetTemplate);
 }
 
 bool V8TestInterfaceEventTarget::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceEventTarget::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceEventTarget::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceEventTarget::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceEventTarget* V8TestInterfaceEventTarget::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.h
index 2799a5c0..dfdb823 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.h
@@ -25,14 +25,20 @@
 
 namespace blink {
 
+extern const WrapperTypeInfo v8_test_interface_event_target_constructor_wrapper_type_info;
+
 class V8TestInterfaceEventTargetConstructor {
   STATIC_ONLY(V8TestInterfaceEventTargetConstructor);
  public:
   static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
   static void NamedConstructorAttributeGetter(v8::Local<v8::Name> property_name, const v8::PropertyCallbackInfo<v8::Value>& info);
-  static const WrapperTypeInfo wrapper_type_info;
+  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_event_target_constructor_wrapper_type_info;
+  }
 };
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_event_target_wrapper_type_info;
+
 class V8TestInterfaceEventTarget {
   STATIC_ONLY(V8TestInterfaceEventTarget);
  public:
@@ -43,7 +49,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceEventTarget>();
   }
   CORE_EXPORT static TestInterfaceEventTarget* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_event_target_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc
index d9c2e99..e104dca 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc
@@ -33,7 +33,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceNamedConstructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_named_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceNamedConstructor::DomTemplate,
     nullptr,
@@ -50,7 +50,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceNamedConstructor.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceNamedConstructor::wrapper_type_info_ = V8TestInterfaceNamedConstructor::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceNamedConstructor::wrapper_type_info_ = v8_test_interface_named_constructor_wrapper_type_info;
 
 // [ActiveScriptWrappable]
 static_assert(
@@ -95,7 +95,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceNamedConstructorConstructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_named_constructor_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceNamedConstructorConstructor::DomTemplate,
     nullptr,
@@ -172,7 +172,7 @@
       return;
     }
     v8::Local<v8::Object> wrapper = info.Holder();
-    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceNamedConstructorConstructor::wrapper_type_info, wrapper);
+    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceNamedConstructorConstructor::GetWrapperTypeInfo(), wrapper);
     V8SetReturnValue(info, wrapper);
     return;
   }
@@ -187,7 +187,7 @@
     return;
   }
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceNamedConstructorConstructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceNamedConstructorConstructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -220,7 +220,7 @@
   }
 
   v8::Local<v8::Function> named_constructor =
-      per_context_data->ConstructorForType(&V8TestInterfaceNamedConstructorConstructor::wrapper_type_info);
+      per_context_data->ConstructorForType(V8TestInterfaceNamedConstructorConstructor::GetWrapperTypeInfo());
 
   // Set the prototype of named constructors to the regular constructor.
   auto private_property =
@@ -231,7 +231,7 @@
   if (!private_property.GetOrUndefined(named_constructor).ToLocal(&private_value) ||
       private_value->IsUndefined()) {
     v8::Local<v8::Function> interface =
-        per_context_data->ConstructorForType(&V8TestInterfaceNamedConstructor::wrapper_type_info);
+        per_context_data->ConstructorForType(V8TestInterfaceNamedConstructor::GetWrapperTypeInfo());
     v8::Local<v8::Value> interfacePrototype =
         interface->Get(current_context, V8AtomicString(info.GetIsolate(), "prototype"))
         .ToLocalChecked();
@@ -251,7 +251,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceNamedConstructor::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceNamedConstructor::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceNamedConstructor::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceNamedConstructor::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -290,18 +290,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceNamedConstructor::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceNamedConstructor::GetWrapperTypeInfo()),
       InstallV8TestInterfaceNamedConstructorTemplate);
 }
 
 bool V8TestInterfaceNamedConstructor::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceNamedConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceNamedConstructor::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceNamedConstructor::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceNamedConstructor* V8TestInterfaceNamedConstructor::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.h
index a05dade..f01641f 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.h
@@ -24,14 +24,20 @@
 
 namespace blink {
 
+extern const WrapperTypeInfo v8_test_interface_named_constructor_constructor_wrapper_type_info;
+
 class V8TestInterfaceNamedConstructorConstructor {
   STATIC_ONLY(V8TestInterfaceNamedConstructorConstructor);
  public:
   static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
   static void NamedConstructorAttributeGetter(v8::Local<v8::Name> property_name, const v8::PropertyCallbackInfo<v8::Value>& info);
-  static const WrapperTypeInfo wrapper_type_info;
+  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_named_constructor_constructor_wrapper_type_info;
+  }
 };
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_named_constructor_wrapper_type_info;
+
 class V8TestInterfaceNamedConstructor {
   STATIC_ONLY(V8TestInterfaceNamedConstructor);
  public:
@@ -42,7 +48,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceNamedConstructor>();
   }
   CORE_EXPORT static TestInterfaceNamedConstructor* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_named_constructor_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.cc
index a794a44d..2d4fb61 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.cc
@@ -31,7 +31,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceNamedConstructor2::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_named_constructor_2_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceNamedConstructor2::DomTemplate,
     nullptr,
@@ -48,7 +48,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceNamedConstructor2.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceNamedConstructor2::wrapper_type_info_ = V8TestInterfaceNamedConstructor2::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceNamedConstructor2::wrapper_type_info_ = v8_test_interface_named_constructor_2_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -73,7 +73,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceNamedConstructor2Constructor::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_named_constructor_2_constructor_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceNamedConstructor2Constructor::DomTemplate,
     nullptr,
@@ -112,7 +112,7 @@
 
   TestInterfaceNamedConstructor2* impl = TestInterfaceNamedConstructor2::CreateForJSConstructor(string_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestInterfaceNamedConstructor2Constructor::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceNamedConstructor2Constructor::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -145,7 +145,7 @@
   }
 
   v8::Local<v8::Function> named_constructor =
-      per_context_data->ConstructorForType(&V8TestInterfaceNamedConstructor2Constructor::wrapper_type_info);
+      per_context_data->ConstructorForType(V8TestInterfaceNamedConstructor2Constructor::GetWrapperTypeInfo());
 
   // Set the prototype of named constructors to the regular constructor.
   auto private_property =
@@ -156,7 +156,7 @@
   if (!private_property.GetOrUndefined(named_constructor).ToLocal(&private_value) ||
       private_value->IsUndefined()) {
     v8::Local<v8::Function> interface =
-        per_context_data->ConstructorForType(&V8TestInterfaceNamedConstructor2::wrapper_type_info);
+        per_context_data->ConstructorForType(V8TestInterfaceNamedConstructor2::GetWrapperTypeInfo());
     v8::Local<v8::Value> interfacePrototype =
         interface->Get(current_context, V8AtomicString(info.GetIsolate(), "prototype"))
         .ToLocalChecked();
@@ -176,7 +176,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceNamedConstructor2::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceNamedConstructor2::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceNamedConstructor2::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceNamedConstructor2::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -212,18 +212,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceNamedConstructor2::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceNamedConstructor2::GetWrapperTypeInfo()),
       InstallV8TestInterfaceNamedConstructor2Template);
 }
 
 bool V8TestInterfaceNamedConstructor2::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceNamedConstructor2::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceNamedConstructor2::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceNamedConstructor2::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceNamedConstructor2* V8TestInterfaceNamedConstructor2::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.h
index 16030ff..6850c43 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.h
@@ -24,14 +24,20 @@
 
 namespace blink {
 
+extern const WrapperTypeInfo v8_test_interface_named_constructor_2_constructor_wrapper_type_info;
+
 class V8TestInterfaceNamedConstructor2Constructor {
   STATIC_ONLY(V8TestInterfaceNamedConstructor2Constructor);
  public:
   static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
   static void NamedConstructorAttributeGetter(v8::Local<v8::Name> property_name, const v8::PropertyCallbackInfo<v8::Value>& info);
-  static const WrapperTypeInfo wrapper_type_info;
+  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_named_constructor_2_constructor_wrapper_type_info;
+  }
 };
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_named_constructor_2_wrapper_type_info;
+
 class V8TestInterfaceNamedConstructor2 {
   STATIC_ONLY(V8TestInterfaceNamedConstructor2);
  public:
@@ -42,7 +48,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceNamedConstructor2>();
   }
   CORE_EXPORT static TestInterfaceNamedConstructor2* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_named_constructor_2_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.cc
index 4ccbefc..8a259ead 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.cc
@@ -33,12 +33,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceNode::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_node_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceNode::DomTemplate,
     nullptr,
     "TestInterfaceNode",
-    &V8Node::wrapper_type_info,
+    V8Node::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kNodeClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -50,7 +50,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceNode.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceNode::wrapper_type_info_ = V8TestInterfaceNode::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceNode::wrapper_type_info_ = v8_test_interface_node_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -437,7 +437,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceNode::wrapper_type_info.interface_name, V8Node::DomTemplate(isolate, world), V8TestInterfaceNode::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceNode::GetWrapperTypeInfo()->interface_name, V8Node::DomTemplate(isolate, world), V8TestInterfaceNode::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -479,18 +479,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceNode::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceNode::GetWrapperTypeInfo()),
       InstallV8TestInterfaceNodeTemplate);
 }
 
 bool V8TestInterfaceNode::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceNode::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceNode::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceNode::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceNode* V8TestInterfaceNode::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.h
index 5a6fc15cd..9cced93 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.h
@@ -25,6 +25,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_node_wrapper_type_info;
+
 class V8TestInterfaceNode {
   STATIC_ONLY(V8TestInterfaceNode);
  public:
@@ -35,7 +37,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceNode>();
   }
   CORE_EXPORT static TestInterfaceNode* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_node_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.cc
index 8f86be74..fdfc0729 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.cc
@@ -30,7 +30,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceOriginTrialEnabled::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_origin_trial_enabled_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceOriginTrialEnabled::DomTemplate,
     nullptr,
@@ -47,7 +47,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceOriginTrialEnabled.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceOriginTrialEnabled::wrapper_type_info_ = V8TestInterfaceOriginTrialEnabled::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceOriginTrialEnabled::wrapper_type_info_ = v8_test_interface_origin_trial_enabled_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -306,7 +306,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceOriginTrialEnabled::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceOriginTrialEnabled::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceOriginTrialEnabled::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceOriginTrialEnabled::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -370,18 +370,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceOriginTrialEnabled::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceOriginTrialEnabled::GetWrapperTypeInfo()),
       InstallV8TestInterfaceOriginTrialEnabledTemplate);
 }
 
 bool V8TestInterfaceOriginTrialEnabled::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceOriginTrialEnabled::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceOriginTrialEnabled::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceOriginTrialEnabled::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceOriginTrialEnabled* V8TestInterfaceOriginTrialEnabled::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.h
index 2a2be3c..a79d308 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_origin_trial_enabled_wrapper_type_info;
+
 class V8TestInterfaceOriginTrialEnabled {
   STATIC_ONLY(V8TestInterfaceOriginTrialEnabled);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceOriginTrialEnabled>();
   }
   CORE_EXPORT static TestInterfaceOriginTrialEnabled* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_origin_trial_enabled_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.cc
index 8dd7fc9..27cf0ef 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.cc
@@ -30,7 +30,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceSecureContext::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_secure_context_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterfaceSecureContext::DomTemplate,
     V8TestInterfaceSecureContext::InstallConditionalFeatures,
@@ -47,7 +47,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfaceSecureContext.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterfaceSecureContext::wrapper_type_info_ = V8TestInterfaceSecureContext::wrapper_type_info;
+const WrapperTypeInfo& TestInterfaceSecureContext::wrapper_type_info_ = v8_test_interface_secure_context_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -401,7 +401,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceSecureContext::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceSecureContext::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterfaceSecureContext::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceSecureContext::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -437,18 +437,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterfaceSecureContext::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterfaceSecureContext::GetWrapperTypeInfo()),
       InstallV8TestInterfaceSecureContextTemplate);
 }
 
 bool V8TestInterfaceSecureContext::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterfaceSecureContext::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterfaceSecureContext::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterfaceSecureContext::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterfaceSecureContext* V8TestInterfaceSecureContext::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.h
index 11017dc..351bf60 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_secure_context_wrapper_type_info;
+
 class V8TestInterfaceSecureContext {
   STATIC_ONLY(V8TestInterfaceSecureContext);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterfaceSecureContext>();
   }
   CORE_EXPORT static TestInterfaceSecureContext* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_secure_context_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   CORE_EXPORT static void InstallConditionalFeatures(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.cc
index 530ab3fd..954b5f45 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.cc
@@ -30,7 +30,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestLegacyCallbackInterface::wrapper_type_info = {
+const WrapperTypeInfo _wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestLegacyCallbackInterface::DomTemplate,
     nullptr,
@@ -51,7 +51,7 @@
   // Initialize the interface object's template.
   V8DOMConfiguration::InitializeDOMInterfaceTemplate(
       isolate, interface_template,
-      V8TestLegacyCallbackInterface::wrapper_type_info.interface_name,
+      V8TestLegacyCallbackInterface::GetWrapperTypeInfo()->interface_name,
       v8::Local<v8::FunctionTemplate>(),
       kV8DefaultWrapperInternalFieldCount);
   interface_template->SetLength(0);
@@ -75,7 +75,7 @@
   return V8DOMConfiguration::DomClassTemplate(
       isolate,
       world,
-      const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      const_cast<WrapperTypeInfo*>(GetWrapperTypeInfo()),
       InstallV8TestLegacyCallbackInterfaceTemplate);
 }
 
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.h
index 823ca2d..09a3e3c 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.h
@@ -20,11 +20,16 @@
 
 class Node;
 
+CORE_EXPORT extern const WrapperTypeInfo _wrapper_type_info;
+
 class CORE_EXPORT V8TestLegacyCallbackInterface final : public CallbackInterfaceBase {
  public:
   // Support of "legacy callback interface"
   static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
-  static const WrapperTypeInfo wrapper_type_info;
+  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &_wrapper_type_info;
+  }
+
   // Constants
   static constexpr uint16_t CONST_VALUE_USHORT_42 = 42;
 
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc
index 981f59e..c70ca21 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc
@@ -30,12 +30,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestNode::wrapper_type_info = {
+const WrapperTypeInfo v8_test_node_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestNode::DomTemplate,
     nullptr,
     "TestNode",
-    &V8Node::wrapper_type_info,
+    V8Node::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kNodeClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -47,7 +47,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestNode.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestNode::wrapper_type_info_ = V8TestNode::wrapper_type_info;
+const WrapperTypeInfo& TestNode::wrapper_type_info_ = v8_test_node_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -179,7 +179,7 @@
 
   TestNode* impl = TestNode::Create();
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestNode::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestNode::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -275,7 +275,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestNode::wrapper_type_info.interface_name, V8Node::DomTemplate(isolate, world), V8TestNode::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestNode::GetWrapperTypeInfo()->interface_name, V8Node::DomTemplate(isolate, world), V8TestNode::kInternalFieldCount);
   interface_template->SetCallHandler(test_node_v8_internal::ConstructorCallback);
   interface_template->SetLength(0);
 
@@ -316,18 +316,18 @@
 v8::Local<v8::FunctionTemplate> V8TestNode::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestNode::GetWrapperTypeInfo()),
       InstallV8TestNodeTemplate);
 }
 
 bool V8TestNode::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestNode::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestNode::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestNode::GetWrapperTypeInfo(), v8_value);
 }
 
 TestNode* V8TestNode::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.h
index bc28bc8..f8976dd 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.h
@@ -25,6 +25,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_node_wrapper_type_info;
+
 class V8TestNode {
   STATIC_ONLY(V8TestNode);
  public:
@@ -35,7 +37,11 @@
     return ToScriptWrappable(object)->ToImpl<TestNode>();
   }
   CORE_EXPORT static TestNode* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_node_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.cc
index 187dbec34..ab8da69 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.cc
@@ -83,7 +83,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestObject::wrapper_type_info = {
+const WrapperTypeInfo v8_test_object_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestObject::DomTemplate,
     V8TestObject::InstallConditionalFeatures,
@@ -100,7 +100,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestObject.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestObject::wrapper_type_info_ = V8TestObject::wrapper_type_info;
+const WrapperTypeInfo& TestObject::wrapper_type_info_ = v8_test_object_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -10530,7 +10530,7 @@
     v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) {
   RUNTIME_CALL_TIMER_SCOPE_DISABLED_BY_DEFAULT(info.GetIsolate(), "Blink_TestObject_testInterfaceEmptyConstructorAttribute_ConstructorGetterCallback");
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterfaceEmpty::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterfaceEmpty::GetWrapperTypeInfo());
 }
 
 void V8TestObject::TestInterfaceEmptyConstructorAttributeConstructorGetterCallback(
@@ -10539,7 +10539,7 @@
 
   Deprecation::CountDeprecation(CurrentExecutionContext(info.GetIsolate()), WebFeature::kdeprecatedTestInterfaceEmptyConstructorAttribute);
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterfaceEmpty::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterfaceEmpty::GetWrapperTypeInfo());
 }
 
 void V8TestObject::MeasureAsFeatureNameTestInterfaceEmptyConstructorAttributeConstructorGetterCallback(
@@ -10548,7 +10548,7 @@
 
   UseCounter::Count(CurrentExecutionContext(info.GetIsolate()), WebFeature::kFeatureName);
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterfaceEmpty::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterfaceEmpty::GetWrapperTypeInfo());
 }
 
 void V8TestObject::CustomObjectAttributeAttributeGetterCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
@@ -13643,7 +13643,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestObject::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestObject::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestObject::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestObject::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -13811,7 +13811,7 @@
     v8::Local<v8::Object> prototype,
     v8::Local<v8::Function> interface) {
   v8::Local<v8::FunctionTemplate> interface_template =
-      V8TestObject::wrapper_type_info.DomTemplate(isolate, world);
+      V8TestObject::GetWrapperTypeInfo()->DomTemplate(isolate, world);
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
   static constexpr V8DOMConfiguration::AccessorConfiguration
@@ -13855,9 +13855,9 @@
     ScriptState* script_state, v8::Local<v8::Object> instance) {
   V8PerContextData* per_context_data = script_state->PerContextData();
   v8::Local<v8::Object> prototype = per_context_data->PrototypeForType(
-      &V8TestObject::wrapper_type_info);
+      V8TestObject::GetWrapperTypeInfo());
   v8::Local<v8::Function> interface = per_context_data->ConstructorForType(
-      &V8TestObject::wrapper_type_info);
+      V8TestObject::GetWrapperTypeInfo());
   ALLOW_UNUSED_LOCAL(interface);
   InstallFeatureName(script_state->GetIsolate(), script_state->World(), instance, prototype, interface);
 }
@@ -13869,18 +13869,18 @@
 v8::Local<v8::FunctionTemplate> V8TestObject::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestObject::GetWrapperTypeInfo()),
       InstallV8TestObjectTemplate);
 }
 
 bool V8TestObject::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestObject::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestObject::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestObject::GetWrapperTypeInfo(), v8_value);
 }
 
 TestObject* V8TestObject::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.h
index 8f086264..c4c5caf3 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.h
@@ -38,6 +38,9 @@
 namespace blink {
 
 class ScriptState;
+
+CORE_EXPORT extern const WrapperTypeInfo v8_test_object_wrapper_type_info;
+
 class V8TestObject {
   STATIC_ONLY(V8TestObject);
  public:
@@ -48,7 +51,11 @@
     return ToScriptWrappable(object)->ToImpl<TestObject>();
   }
   CORE_EXPORT static TestObject* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_object_wrapper_type_info;
+  }
+
   static void CustomVoidMethodMethodCustom(const v8::FunctionCallbackInfo<v8::Value>&);
   static void CustomCallPrologueVoidMethodMethodPrologueCustom(const v8::FunctionCallbackInfo<v8::Value>&, TestObject*);
   static void CustomCallEpilogueVoidMethodMethodEpilogueCustom(const v8::FunctionCallbackInfo<v8::Value>&, TestObject*);
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.cc
index 5432f4e..c847495 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.cc
@@ -35,7 +35,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestSpecialOperations::wrapper_type_info = {
+const WrapperTypeInfo v8_test_special_operations_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestSpecialOperations::DomTemplate,
     nullptr,
@@ -52,7 +52,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestSpecialOperations.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestSpecialOperations::wrapper_type_info_ = V8TestSpecialOperations::wrapper_type_info;
+const WrapperTypeInfo& TestSpecialOperations::wrapper_type_info_ = v8_test_special_operations_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -263,7 +263,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestSpecialOperations::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestSpecialOperations::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestSpecialOperations::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestSpecialOperations::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -317,18 +317,18 @@
 v8::Local<v8::FunctionTemplate> V8TestSpecialOperations::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestSpecialOperations::GetWrapperTypeInfo()),
       InstallV8TestSpecialOperationsTemplate);
 }
 
 bool V8TestSpecialOperations::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestSpecialOperations::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestSpecialOperations::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestSpecialOperations::GetWrapperTypeInfo(), v8_value);
 }
 
 TestSpecialOperations* V8TestSpecialOperations::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.h
index beb5fe9..1823b39 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.h
@@ -25,6 +25,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_special_operations_wrapper_type_info;
+
 class V8TestSpecialOperations {
   STATIC_ONLY(V8TestSpecialOperations);
  public:
@@ -35,7 +37,11 @@
     return ToScriptWrappable(object)->ToImpl<TestSpecialOperations>();
   }
   CORE_EXPORT static TestSpecialOperations* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_special_operations_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.cc
index edfce9c..e31e102 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.cc
@@ -28,7 +28,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestSpecialOperationsNotEnumerable::wrapper_type_info = {
+const WrapperTypeInfo v8_test_special_operations_not_enumerable_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestSpecialOperationsNotEnumerable::DomTemplate,
     nullptr,
@@ -45,7 +45,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestSpecialOperationsNotEnumerable.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestSpecialOperationsNotEnumerable::wrapper_type_info_ = V8TestSpecialOperationsNotEnumerable::wrapper_type_info;
+const WrapperTypeInfo& TestSpecialOperationsNotEnumerable::wrapper_type_info_ = v8_test_special_operations_not_enumerable_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -231,7 +231,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestSpecialOperationsNotEnumerable::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestSpecialOperationsNotEnumerable::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestSpecialOperationsNotEnumerable::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestSpecialOperationsNotEnumerable::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -282,18 +282,18 @@
 v8::Local<v8::FunctionTemplate> V8TestSpecialOperationsNotEnumerable::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestSpecialOperationsNotEnumerable::GetWrapperTypeInfo()),
       InstallV8TestSpecialOperationsNotEnumerableTemplate);
 }
 
 bool V8TestSpecialOperationsNotEnumerable::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestSpecialOperationsNotEnumerable::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestSpecialOperationsNotEnumerable::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestSpecialOperationsNotEnumerable::GetWrapperTypeInfo(), v8_value);
 }
 
 TestSpecialOperationsNotEnumerable* V8TestSpecialOperationsNotEnumerable::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.h
index 70c6faf..8972c86 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations_not_enumerable.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_special_operations_not_enumerable_wrapper_type_info;
+
 class V8TestSpecialOperationsNotEnumerable {
   STATIC_ONLY(V8TestSpecialOperationsNotEnumerable);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestSpecialOperationsNotEnumerable>();
   }
   CORE_EXPORT static TestSpecialOperationsNotEnumerable* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_special_operations_not_enumerable_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
index d801636d..3b0548a 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
@@ -42,7 +42,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestTypedefs::wrapper_type_info = {
+const WrapperTypeInfo v8_test_typedefs_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestTypedefs::DomTemplate,
     nullptr,
@@ -59,7 +59,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestTypedefs.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestTypedefs::wrapper_type_info_ = V8TestTypedefs::wrapper_type_info;
+const WrapperTypeInfo& TestTypedefs::wrapper_type_info_ = v8_test_typedefs_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -398,7 +398,7 @@
 
   TestTypedefs* impl = TestTypedefs::Create(string_arg);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestTypedefs::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestTypedefs::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -456,7 +456,7 @@
     v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) {
   RUNTIME_CALL_TIMER_SCOPE_DISABLED_BY_DEFAULT(info.GetIsolate(), "Blink_TestTypedefs_tAttribute_ConstructorGetterCallback");
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterface::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterface::GetWrapperTypeInfo());
 }
 
 void V8TestTypedefs::DOMStringOrDoubleOrNullAttributeAttributeGetterCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
@@ -592,7 +592,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestTypedefs::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestTypedefs::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestTypedefs::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestTypedefs::kInternalFieldCount);
   interface_template->SetCallHandler(test_typedefs_v8_internal::ConstructorCallback);
   interface_template->SetLength(1);
 
@@ -639,18 +639,18 @@
 v8::Local<v8::FunctionTemplate> V8TestTypedefs::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestTypedefs::GetWrapperTypeInfo()),
       InstallV8TestTypedefsTemplate);
 }
 
 bool V8TestTypedefs::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestTypedefs::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestTypedefs::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestTypedefs::GetWrapperTypeInfo(), v8_value);
 }
 
 TestTypedefs* V8TestTypedefs::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.h
index 79bb6e7..ba3dff3 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.h
@@ -29,6 +29,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_typedefs_wrapper_type_info;
+
 class V8TestTypedefs {
   STATIC_ONLY(V8TestTypedefs);
  public:
@@ -39,7 +41,11 @@
     return ToScriptWrappable(object)->ToImpl<TestTypedefs>();
   }
   CORE_EXPORT static TestTypedefs* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_typedefs_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.cc
index 8803a6e..39a9413 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.cc
@@ -29,7 +29,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestVariadicConstructorArguments::wrapper_type_info = {
+const WrapperTypeInfo v8_test_variadic_constructor_arguments_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestVariadicConstructorArguments::DomTemplate,
     nullptr,
@@ -46,7 +46,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestVariadicConstructorArguments.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestVariadicConstructorArguments::wrapper_type_info_ = V8TestVariadicConstructorArguments::wrapper_type_info;
+const WrapperTypeInfo& TestVariadicConstructorArguments::wrapper_type_info_ = v8_test_variadic_constructor_arguments_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -75,7 +75,7 @@
 
   TestVariadicConstructorArguments* impl = TestVariadicConstructorArguments::Create(args);
   v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), &V8TestVariadicConstructorArguments::wrapper_type_info, wrapper);
+  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestVariadicConstructorArguments::GetWrapperTypeInfo(), wrapper);
   V8SetReturnValue(info, wrapper);
 }
 
@@ -104,7 +104,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestVariadicConstructorArguments::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestVariadicConstructorArguments::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestVariadicConstructorArguments::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestVariadicConstructorArguments::kInternalFieldCount);
   interface_template->SetCallHandler(test_variadic_constructor_arguments_v8_internal::ConstructorCallback);
   interface_template->SetLength(0);
 
@@ -142,18 +142,18 @@
 v8::Local<v8::FunctionTemplate> V8TestVariadicConstructorArguments::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestVariadicConstructorArguments::GetWrapperTypeInfo()),
       InstallV8TestVariadicConstructorArgumentsTemplate);
 }
 
 bool V8TestVariadicConstructorArguments::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestVariadicConstructorArguments::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestVariadicConstructorArguments::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestVariadicConstructorArguments::GetWrapperTypeInfo(), v8_value);
 }
 
 TestVariadicConstructorArguments* V8TestVariadicConstructorArguments::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.h
index 47e1fa8..2548c86 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_test_variadic_constructor_arguments_wrapper_type_info;
+
 class V8TestVariadicConstructorArguments {
   STATIC_ONLY(V8TestVariadicConstructorArguments);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestVariadicConstructorArguments>();
   }
   CORE_EXPORT static TestVariadicConstructorArguments* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_variadic_constructor_arguments_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.cc
index 8c3d26a..d1a1b1eff 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.cc
@@ -28,12 +28,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8Uint8ClampedArray::wrapper_type_info = {
+const WrapperTypeInfo v8_uint8_clamped_array_wrapper_type_info = {
     gin::kEmbedderBlink,
     nullptr,
     nullptr,
     "Uint8ClampedArray",
-    &V8ArrayBufferView::wrapper_type_info,
+    V8ArrayBufferView::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.h b/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.h
index 6baae7d..3c6140fd 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_uint8_clamped_array.h
@@ -27,12 +27,18 @@
 
 namespace blink {
 
+CORE_EXPORT extern const WrapperTypeInfo v8_uint8_clamped_array_wrapper_type_info;
+
 class V8Uint8ClampedArray {
   STATIC_ONLY(V8Uint8ClampedArray);
  public:
   CORE_EXPORT static TestUint8ClampedArray* ToImpl(v8::Local<v8::Object> object);
   CORE_EXPORT static TestUint8ClampedArray* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  CORE_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  CORE_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_uint8_clamped_array_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.cc b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.cc
index 165cebb..c9cba77a 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.cc
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.cc
@@ -29,12 +29,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInheritedLegacyUnenumerableNamedProperties::wrapper_type_info = {
+const WrapperTypeInfo v8_test_inherited_legacy_unenumerable_named_properties_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInheritedLegacyUnenumerableNamedProperties::DomTemplate,
     nullptr,
     "TestInheritedLegacyUnenumerableNamedProperties",
-    &V8TestSpecialOperationsNotEnumerable::wrapper_type_info,
+    V8TestSpecialOperationsNotEnumerable::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -46,7 +46,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInheritedLegacyUnenumerableNamedProperties.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInheritedLegacyUnenumerableNamedProperties::wrapper_type_info_ = V8TestInheritedLegacyUnenumerableNamedProperties::wrapper_type_info;
+const WrapperTypeInfo& TestInheritedLegacyUnenumerableNamedProperties::wrapper_type_info_ = v8_test_inherited_legacy_unenumerable_named_properties_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -207,7 +207,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInheritedLegacyUnenumerableNamedProperties::wrapper_type_info.interface_name, V8TestSpecialOperationsNotEnumerable::DomTemplate(isolate, world), V8TestInheritedLegacyUnenumerableNamedProperties::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInheritedLegacyUnenumerableNamedProperties::GetWrapperTypeInfo()->interface_name, V8TestSpecialOperationsNotEnumerable::DomTemplate(isolate, world), V8TestInheritedLegacyUnenumerableNamedProperties::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -261,18 +261,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInheritedLegacyUnenumerableNamedProperties::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInheritedLegacyUnenumerableNamedProperties::GetWrapperTypeInfo()),
       InstallV8TestInheritedLegacyUnenumerableNamedPropertiesTemplate);
 }
 
 bool V8TestInheritedLegacyUnenumerableNamedProperties::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInheritedLegacyUnenumerableNamedProperties::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInheritedLegacyUnenumerableNamedProperties::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInheritedLegacyUnenumerableNamedProperties::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInheritedLegacyUnenumerableNamedProperties* V8TestInheritedLegacyUnenumerableNamedProperties::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.h b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.h
index 18057ff2d..b1f3598 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.h
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.h
@@ -25,6 +25,8 @@
 
 namespace blink {
 
+MODULES_EXPORT extern const WrapperTypeInfo v8_test_inherited_legacy_unenumerable_named_properties_wrapper_type_info;
+
 class V8TestInheritedLegacyUnenumerableNamedProperties {
   STATIC_ONLY(V8TestInheritedLegacyUnenumerableNamedProperties);
  public:
@@ -35,7 +37,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInheritedLegacyUnenumerableNamedProperties>();
   }
   MODULES_EXPORT static TestInheritedLegacyUnenumerableNamedProperties* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  MODULES_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  MODULES_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_inherited_legacy_unenumerable_named_properties_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.cc b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.cc
index 935fca9..70d1c28d 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.cc
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.cc
@@ -33,12 +33,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterface5::wrapper_type_info = {
+const WrapperTypeInfo v8_test_interface_5_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestInterface5::DomTemplate,
     V8TestInterface5::InstallConditionalFeatures,
     "TestInterface5",
-    &V8TestInterfaceEmpty::wrapper_type_info,
+    V8TestInterfaceEmpty::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kInheritFromActiveScriptWrappable,
@@ -50,7 +50,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterface5Implementation.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestInterface5Implementation::wrapper_type_info_ = V8TestInterface5::wrapper_type_info;
+const WrapperTypeInfo& TestInterface5Implementation::wrapper_type_info_ = v8_test_interface_5_wrapper_type_info;
 
 // [ActiveScriptWrappable]
 static_assert(
@@ -647,7 +647,7 @@
     v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) {
   RUNTIME_CALL_TIMER_SCOPE_DISABLED_BY_DEFAULT(info.GetIsolate(), "Blink_TestInterface5Implementation_testInterfaceConstructorAttribute_ConstructorGetterCallback");
 
-  V8ConstructorAttributeGetter(property, info, &V8TestInterface5::wrapper_type_info);
+  V8ConstructorAttributeGetter(property, info, V8TestInterface5::GetWrapperTypeInfo());
 }
 
 void V8TestInterface5::DoubleAttributeAttributeGetterCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
@@ -995,7 +995,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface5::wrapper_type_info.interface_name, V8TestInterfaceEmpty::DomTemplate(isolate, world), V8TestInterface5::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestInterface5::GetWrapperTypeInfo()->interface_name, V8TestInterfaceEmpty::DomTemplate(isolate, world), V8TestInterface5::kInternalFieldCount);
 
   if (!RuntimeEnabledFeatures::FeatureNameEnabled()) {
     return;
@@ -1083,18 +1083,18 @@
 v8::Local<v8::FunctionTemplate> V8TestInterface5::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestInterface5::GetWrapperTypeInfo()),
       InstallV8TestInterface5Template);
 }
 
 bool V8TestInterface5::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestInterface5::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestInterface5::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestInterface5::GetWrapperTypeInfo(), v8_value);
 }
 
 TestInterface5Implementation* V8TestInterface5::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.h b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.h
index 8b5c061..884c8f9b 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.h
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.h
@@ -27,6 +27,8 @@
 
 namespace blink {
 
+MODULES_EXPORT extern const WrapperTypeInfo v8_test_interface_5_wrapper_type_info;
+
 class V8TestInterface5 {
   STATIC_ONLY(V8TestInterface5);
  public:
@@ -37,7 +39,11 @@
     return ToScriptWrappable(object)->ToImpl<TestInterface5Implementation>();
   }
   MODULES_EXPORT static TestInterface5Implementation* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  MODULES_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  MODULES_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_interface_5_wrapper_type_info;
+  }
+
   static void LegacyCallCustom(const v8::FunctionCallbackInfo<v8::Value>&);
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_partial.cc b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_partial.cc
index 11d9252..f631680f 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_partial.cc
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_partial.cc
@@ -511,7 +511,7 @@
     v8::Local<v8::Object> prototype,
     v8::Local<v8::Function> interface) {
   v8::Local<v8::FunctionTemplate> interface_template =
-      V8TestInterface::wrapper_type_info.DomTemplate(isolate, world);
+      V8TestInterface::GetWrapperTypeInfo()->DomTemplate(isolate, world);
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
   ExecutionContext* execution_context = ToExecutionContext(isolate->GetCurrentContext());
@@ -568,9 +568,9 @@
     ScriptState* script_state, v8::Local<v8::Object> instance) {
   V8PerContextData* per_context_data = script_state->PerContextData();
   v8::Local<v8::Object> prototype = per_context_data->PrototypeForType(
-      &V8TestInterface::wrapper_type_info);
+      V8TestInterface::GetWrapperTypeInfo());
   v8::Local<v8::Function> interface = per_context_data->ConstructorForType(
-      &V8TestInterface::wrapper_type_info);
+      V8TestInterface::GetWrapperTypeInfo());
   ALLOW_UNUSED_LOCAL(interface);
   InstallOriginTrialPartialFeature(script_state->GetIsolate(), script_state->World(), instance, prototype, interface);
 }
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.cc b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.cc
index a71ff28..3cd1b59 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.cc
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.cc
@@ -28,7 +28,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestNotEnumerableNamedGetter::wrapper_type_info = {
+const WrapperTypeInfo v8_test_not_enumerable_named_getter_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestNotEnumerableNamedGetter::DomTemplate,
     nullptr,
@@ -45,7 +45,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestNotEnumerableNamedGetter.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestNotEnumerableNamedGetter::wrapper_type_info_ = V8TestNotEnumerableNamedGetter::wrapper_type_info;
+const WrapperTypeInfo& TestNotEnumerableNamedGetter::wrapper_type_info_ = v8_test_not_enumerable_named_getter_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -124,7 +124,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestNotEnumerableNamedGetter::wrapper_type_info.interface_name, v8::Local<v8::FunctionTemplate>(), V8TestNotEnumerableNamedGetter::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestNotEnumerableNamedGetter::GetWrapperTypeInfo()->interface_name, v8::Local<v8::FunctionTemplate>(), V8TestNotEnumerableNamedGetter::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -175,18 +175,18 @@
 v8::Local<v8::FunctionTemplate> V8TestNotEnumerableNamedGetter::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestNotEnumerableNamedGetter::GetWrapperTypeInfo()),
       InstallV8TestNotEnumerableNamedGetterTemplate);
 }
 
 bool V8TestNotEnumerableNamedGetter::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestNotEnumerableNamedGetter::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestNotEnumerableNamedGetter::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestNotEnumerableNamedGetter::GetWrapperTypeInfo(), v8_value);
 }
 
 TestNotEnumerableNamedGetter* V8TestNotEnumerableNamedGetter::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.h b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.h
index b63290ef..1d590c0 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.h
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_not_enumerable_named_getter.h
@@ -24,6 +24,8 @@
 
 namespace blink {
 
+MODULES_EXPORT extern const WrapperTypeInfo v8_test_not_enumerable_named_getter_wrapper_type_info;
+
 class V8TestNotEnumerableNamedGetter {
   STATIC_ONLY(V8TestNotEnumerableNamedGetter);
  public:
@@ -34,7 +36,11 @@
     return ToScriptWrappable(object)->ToImpl<TestNotEnumerableNamedGetter>();
   }
   MODULES_EXPORT static TestNotEnumerableNamedGetter* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  MODULES_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  MODULES_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_not_enumerable_named_getter_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.cc b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.cc
index eb442d3..a8ad53f 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.cc
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.cc
@@ -29,12 +29,12 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestSubObject::wrapper_type_info = {
+const WrapperTypeInfo v8_test_sub_object_wrapper_type_info = {
     gin::kEmbedderBlink,
     V8TestSubObject::DomTemplate,
     nullptr,
     "TestSubObject",
-    &V8TestObject::wrapper_type_info,
+    V8TestObject::GetWrapperTypeInfo(),
     WrapperTypeInfo::kWrapperTypeObjectPrototype,
     WrapperTypeInfo::kObjectClassId,
     WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
@@ -46,7 +46,7 @@
 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestSubObject.h.
 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in
 // platform/bindings/ScriptWrappable.h.
-const WrapperTypeInfo& TestSubObject::wrapper_type_info_ = V8TestSubObject::wrapper_type_info;
+const WrapperTypeInfo& TestSubObject::wrapper_type_info_ = v8_test_sub_object_wrapper_type_info;
 
 // not [ActiveScriptWrappable]
 static_assert(
@@ -159,7 +159,7 @@
     const DOMWrapperWorld& world,
     v8::Local<v8::FunctionTemplate> interface_template) {
   // Initialize the interface object's template.
-  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestSubObject::wrapper_type_info.interface_name, V8TestObject::DomTemplate(isolate, world), V8TestSubObject::kInternalFieldCount);
+  V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interface_template, V8TestSubObject::GetWrapperTypeInfo()->interface_name, V8TestObject::DomTemplate(isolate, world), V8TestSubObject::kInternalFieldCount);
 
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_template);
   ALLOW_UNUSED_LOCAL(signature);
@@ -198,18 +198,18 @@
 v8::Local<v8::FunctionTemplate> V8TestSubObject::DomTemplate(
     v8::Isolate* isolate, const DOMWrapperWorld& world) {
   return V8DOMConfiguration::DomClassTemplate(
-      isolate, world, const_cast<WrapperTypeInfo*>(&wrapper_type_info),
+      isolate, world, const_cast<WrapperTypeInfo*>(V8TestSubObject::GetWrapperTypeInfo()),
       InstallV8TestSubObjectTemplate);
 }
 
 bool V8TestSubObject::HasInstance(v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
-  return V8PerIsolateData::From(isolate)->HasInstance(&wrapper_type_info, v8_value);
+  return V8PerIsolateData::From(isolate)->HasInstance(V8TestSubObject::GetWrapperTypeInfo(), v8_value);
 }
 
 v8::Local<v8::Object> V8TestSubObject::FindInstanceInPrototypeChain(
     v8::Local<v8::Value> v8_value, v8::Isolate* isolate) {
   return V8PerIsolateData::From(isolate)->FindInstanceInPrototypeChain(
-      &wrapper_type_info, v8_value);
+      V8TestSubObject::GetWrapperTypeInfo(), v8_value);
 }
 
 TestSubObject* V8TestSubObject::ToImplWithTypeCheck(
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.h b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.h
index a18f10fe..a716aae 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.h
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.h
@@ -25,6 +25,8 @@
 
 namespace blink {
 
+MODULES_EXPORT extern const WrapperTypeInfo v8_test_sub_object_wrapper_type_info;
+
 class V8TestSubObject {
   STATIC_ONLY(V8TestSubObject);
  public:
@@ -35,7 +37,11 @@
     return ToScriptWrappable(object)->ToImpl<TestSubObject>();
   }
   MODULES_EXPORT static TestSubObject* ToImplWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>);
-  MODULES_EXPORT static const WrapperTypeInfo wrapper_type_info;
+
+  MODULES_EXPORT static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
+    return &v8_test_sub_object_wrapper_type_info;
+  }
+
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/build/scripts/core/css/templates/cssom_types.cc.tmpl b/third_party/blink/renderer/build/scripts/core/css/templates/cssom_types.cc.tmpl
index 4b7dc54b..7bea2c9 100644
--- a/third_party/blink/renderer/build/scripts/core/css/templates/cssom_types.cc.tmpl
+++ b/third_party/blink/renderer/build/scripts/core/css/templates/cssom_types.cc.tmpl
@@ -7,6 +7,7 @@
 
 #include "third_party/blink/renderer/core/css/cssom/cssom_types.h"
 
+#include "third_party/blink/renderer/core/css/css_property_name.h"
 #include "third_party/blink/renderer/core/css/cssom/css_keyword_value.h"
 #include "third_party/blink/renderer/core/css/cssom/css_numeric_value.h"
 #include "third_party/blink/renderer/core/css/cssom/css_style_value.h"
@@ -99,8 +100,8 @@
 
   if (id == CSSPropertyVariable && registration) {
     if (value.GetType() == CSSStyleValue::kUnknownType) {
-      return ToCSSUnsupportedStyleValue(value).GetCustomPropertyName() ==
-          custom_property_name;
+      return ToCSSUnsupportedStyleValue(value).IsValidFor(
+          CSSPropertyName(custom_property_name));
     }
     match = registration->Syntax().Match(value);
     return match != nullptr;
@@ -111,7 +112,7 @@
         id, ToCSSKeywordValue(value));
   }
   if (value.GetType() == CSSStyleValue::kUnknownType) {
-    return ToCSSUnsupportedStyleValue(value).GetProperty() == id;
+    return ToCSSUnsupportedStyleValue(value).IsValidFor(CSSPropertyName(id));
   }
   if (value.GetType() == CSSStyleValue::kUnparsedType) {
     return true;
diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn
index 4388fba..be888e7 100644
--- a/third_party/blink/renderer/core/BUILD.gn
+++ b/third_party/blink/renderer/core/BUILD.gn
@@ -1796,6 +1796,7 @@
     "css/threaded/filter_operation_resolver_threaded_test.cc",
     "css/threaded/font_object_threaded_test.cc",
     "css/threaded/text_renderer_threaded_test.cc",
+    "display_lock/display_lock_context_test.cc",
     "dom/attr_test.cc",
     "dom/document_statistics_collector_test.cc",
     "dom/document_test.cc",
diff --git a/third_party/blink/renderer/core/DEPS b/third_party/blink/renderer/core/DEPS
index a6c6801..fb8bd8e 100644
--- a/third_party/blink/renderer/core/DEPS
+++ b/third_party/blink/renderer/core/DEPS
@@ -88,4 +88,7 @@
     "find_task_controller.cc" : [
         "+third_party/blink/renderer/core/frame/web_local_frame_impl.h",
     ],
+    "display_lock_context_test.cc" : [
+        "+base/run_loop.h"
+    ],
 }
diff --git a/third_party/blink/renderer/core/css/css_property_name.cc b/third_party/blink/renderer/core/css/css_property_name.cc
index a268c67..6aa0bbc 100644
--- a/third_party/blink/renderer/core/css/css_property_name.cc
+++ b/third_party/blink/renderer/core/css/css_property_name.cc
@@ -21,6 +21,14 @@
 
 }  // namespace
 
+bool CSSPropertyName::operator==(const CSSPropertyName& other) const {
+  if (property_id_ != other.property_id_)
+    return false;
+  if (property_id_ != CSSPropertyVariable)
+    return true;
+  return custom_property_name_ == other.custom_property_name_;
+}
+
 AtomicString CSSPropertyName::ToAtomicString() const {
   if (IsCustomProperty())
     return custom_property_name_;
diff --git a/third_party/blink/renderer/core/css/css_property_name.h b/third_party/blink/renderer/core/css/css_property_name.h
index 517dd73..9a23041 100644
--- a/third_party/blink/renderer/core/css/css_property_name.h
+++ b/third_party/blink/renderer/core/css/css_property_name.h
@@ -28,6 +28,11 @@
     DCHECK(!custom_property_name.IsNull());
   }
 
+  bool operator==(const CSSPropertyName&) const;
+  bool operator!=(const CSSPropertyName& other) const {
+    return !(*this == other);
+  }
+
   CSSPropertyID Id() const { return property_id_; }
 
   bool IsCustomProperty() const { return property_id_ == CSSPropertyVariable; }
diff --git a/third_party/blink/renderer/core/css/css_property_name_test.cc b/third_party/blink/renderer/core/css/css_property_name_test.cc
index 7dd12ab..a2885e1 100644
--- a/third_party/blink/renderer/core/css/css_property_name_test.cc
+++ b/third_party/blink/renderer/core/css/css_property_name_test.cc
@@ -28,4 +28,13 @@
   EXPECT_EQ(AtomicString("--x"), name.ToAtomicString());
 }
 
+TEST(CSSPropertyNameTest, OperatorEquals) {
+  EXPECT_EQ(CSSPropertyName("--x"), CSSPropertyName("--x"));
+  EXPECT_EQ(CSSPropertyName(CSSPropertyColor),
+            CSSPropertyName(CSSPropertyColor));
+  EXPECT_NE(CSSPropertyName("--x"), CSSPropertyName("--y"));
+  EXPECT_NE(CSSPropertyName(CSSPropertyColor),
+            CSSPropertyName(CSSPropertyBackgroundColor));
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/cssom/css_unsupported_style_value.h b/third_party/blink/renderer/core/css/cssom/css_unsupported_style_value.h
index ce971b4..b206419 100644
--- a/third_party/blink/renderer/core/css/cssom/css_unsupported_style_value.h
+++ b/third_party/blink/renderer/core/css/cssom/css_unsupported_style_value.h
@@ -6,46 +6,51 @@
 #define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSSOM_CSS_UNSUPPORTED_STYLE_VALUE_H_
 
 #include "base/macros.h"
+#include "base/optional.h"
+#include "third_party/blink/renderer/core/css/css_property_name.h"
 #include "third_party/blink/renderer/core/css/cssom/css_style_value.h"
 
 namespace blink {
 
 // CSSUnsupportedStyleValue is the internal representation of a base
 // CSSStyleValue that is returned when we do not yet support a CSS Typed OM type
-// for a given CSS Value. It is tied to a specific CSS property and is only
-// considered valid for that property.
+// for a given CSS Value.
+//
+// It is either:
+//
+// * Tied to a specific CSS property, and therefore only valid for that
+//   property, or
+// * Tied to no CSS property at all, in which case it's not valid for any
+//   property.
+
 class CORE_EXPORT CSSUnsupportedStyleValue final : public CSSStyleValue {
  public:
-  static CSSUnsupportedStyleValue* Create(
-      CSSPropertyID property,
-      const AtomicString& custom_property_name,
-      const String& css_text) {
-    return MakeGarbageCollected<CSSUnsupportedStyleValue>(
-        property, custom_property_name, css_text);
+  static CSSUnsupportedStyleValue* Create(const CSSValue& value) {
+    return MakeGarbageCollected<CSSUnsupportedStyleValue>(value.CssText());
   }
-  static CSSUnsupportedStyleValue* Create(
-      CSSPropertyID property,
-      const AtomicString& custom_property_name,
-      const CSSValue& value) {
-    return MakeGarbageCollected<CSSUnsupportedStyleValue>(
-        property, custom_property_name, value.CssText());
+  static CSSUnsupportedStyleValue* Create(const CSSPropertyName& name,
+                                          const String& css_text) {
+    return MakeGarbageCollected<CSSUnsupportedStyleValue>(name, css_text);
+  }
+  static CSSUnsupportedStyleValue* Create(const CSSPropertyName& name,
+                                          const CSSValue& value) {
+    return MakeGarbageCollected<CSSUnsupportedStyleValue>(name,
+                                                          value.CssText());
   }
 
-  CSSUnsupportedStyleValue(CSSPropertyID property,
-                           const AtomicString& custom_property_name,
-                           const String& css_text)
-      : property_(property), custom_property_name_(custom_property_name) {
+  CSSUnsupportedStyleValue(const String& css_text) { SetCSSText(css_text); }
+  CSSUnsupportedStyleValue(const CSSPropertyName& name, const String& css_text)
+      : name_(name) {
     SetCSSText(css_text);
-    DCHECK_EQ(property == CSSPropertyVariable, !custom_property_name.IsNull());
   }
 
   StyleValueType GetType() const override {
     return StyleValueType::kUnknownType;
   }
-  CSSPropertyID GetProperty() const { return property_; }
-  const AtomicString& GetCustomPropertyName() const {
-    return custom_property_name_;
+  bool IsValidFor(const CSSPropertyName& name) const {
+    return name_ && *name_ == name;
   }
+
   const CSSValue* ToCSSValue() const override {
     NOTREACHED();
     return nullptr;
@@ -54,10 +59,7 @@
   String toString() const final { return CSSText(); }
 
  private:
-  const CSSPropertyID property_;
-  // Name is set when property_ is CSSPropertyVariable, otherwise it's
-  // g_null_atom.
-  AtomicString custom_property_name_;
+  base::Optional<CSSPropertyName> name_;
   DISALLOW_COPY_AND_ASSIGN(CSSUnsupportedStyleValue);
 };
 
diff --git a/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.cc b/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.cc
index 912b0c4..094400f 100644
--- a/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.cc
+++ b/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.cc
@@ -187,8 +187,8 @@
   const auto serialization = SerializationForShorthand(property);
   if (serialization.IsEmpty())
     return nullptr;
-  return CSSUnsupportedStyleValue::Create(property.PropertyID(), g_null_atom,
-                                          serialization);
+  return CSSUnsupportedStyleValue::Create(
+      CSSPropertyName(property.PropertyID()), serialization);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/cssom/style_value_factory.cc b/third_party/blink/renderer/core/css/cssom/style_value_factory.cc
index 29b7fd0..0ac70dd 100644
--- a/third_party/blink/renderer/core/css/cssom/style_value_factory.cc
+++ b/third_party/blink/renderer/core/css/cssom/style_value_factory.cc
@@ -7,6 +7,7 @@
 #include "third_party/blink/renderer/core/css/css_custom_property_declaration.h"
 #include "third_party/blink/renderer/core/css/css_identifier_value.h"
 #include "third_party/blink/renderer/core/css/css_image_value.h"
+#include "third_party/blink/renderer/core/css/css_property_name.h"
 #include "third_party/blink/renderer/core/css/css_value.h"
 #include "third_party/blink/renderer/core/css/css_value_pair.h"
 #include "third_party/blink/renderer/core/css/css_variable_reference_value.h"
@@ -31,6 +32,20 @@
 
 namespace {
 
+// Reify and return a CSSStyleValue, if |value| can be reified without the
+// context of a CSS property.
+CSSStyleValue* CreateStyleValueWithoutProperty(const CSSValue& value) {
+  if (value.IsCSSWideKeyword())
+    return CSSKeywordValue::FromCSSValue(value);
+  if (value.IsVariableReferenceValue())
+    return CSSUnparsedValue::FromCSSValue(ToCSSVariableReferenceValue(value));
+  if (value.IsCustomPropertyDeclaration()) {
+    return CSSUnparsedValue::FromCSSValue(
+        ToCSSCustomPropertyDeclaration(value));
+  }
+  return nullptr;
+}
+
 CSSStyleValue* CreateStyleValue(const CSSValue& value) {
   if (value.IsIdentifierValue() || value.IsCustomIdentValue())
     return CSSKeywordValue::FromCSSValue(value);
@@ -85,7 +100,8 @@
           ToCSSIdentifierValue(value).GetValueID() == CSSValueCurrentcolor) {
         return CSSKeywordValue::Create("currentcolor");
       }
-      return CSSUnsupportedStyleValue::Create(property_id, g_null_atom, value);
+      return CSSUnsupportedStyleValue::Create(CSSPropertyName(property_id),
+                                              value);
     case CSSPropertyContain: {
       if (value.IsIdentifierValue())
         return CreateStyleValue(value);
@@ -195,19 +211,15 @@
 
 CSSStyleValue* CreateStyleValueWithProperty(CSSPropertyID property_id,
                                             const CSSValue& value) {
-  // These cannot be overridden by individual properties.
-  if (value.IsCSSWideKeyword())
-    return CSSKeywordValue::FromCSSValue(value);
-  if (value.IsVariableReferenceValue())
-    return CSSUnparsedValue::FromCSSValue(ToCSSVariableReferenceValue(value));
-  if (value.IsCustomPropertyDeclaration()) {
-    return CSSUnparsedValue::FromCSSValue(
-        ToCSSCustomPropertyDeclaration(value));
-  }
+  DCHECK_NE(property_id, CSSPropertyInvalid);
+
+  if (CSSStyleValue* style_value = CreateStyleValueWithoutProperty(value))
+    return style_value;
 
   if (!CSSOMTypes::IsPropertySupported(property_id)) {
     DCHECK_NE(property_id, CSSPropertyVariable);
-    return CSSUnsupportedStyleValue::Create(property_id, g_null_atom, value);
+    return CSSUnsupportedStyleValue::Create(CSSPropertyName(property_id),
+                                            value);
   }
 
   CSSStyleValue* style_value =
@@ -223,8 +235,10 @@
     const CSSValue& value) {
   DCHECK_EQ(property_id == CSSPropertyVariable, !custom_property_name.IsNull());
   CSSStyleValueVector style_value_vector;
-  style_value_vector.push_back(CSSUnsupportedStyleValue::Create(
-      property_id, custom_property_name, value));
+  auto name = (property_id == CSSPropertyVariable)
+                  ? CSSPropertyName(custom_property_name)
+                  : CSSPropertyName(property_id);
+  style_value_vector.push_back(CSSUnsupportedStyleValue::Create(name, value));
   return style_value_vector;
 }
 
@@ -260,8 +274,8 @@
 
     // Shorthands are not yet supported.
     CSSStyleValueVector result;
-    result.push_back(
-        CSSUnsupportedStyleValue::Create(property_id, g_null_atom, css_text));
+    result.push_back(CSSUnsupportedStyleValue::Create(
+        CSSPropertyName(property_id), css_text));
     return result;
   }
 
@@ -299,8 +313,10 @@
   CSSStyleValue* style_value =
       CreateStyleValueWithProperty(property_id, css_value);
   if (!style_value) {
-    return CSSUnsupportedStyleValue::Create(property_id, custom_property_name,
-                                            css_value);
+    auto name = (property_id == CSSPropertyVariable)
+                    ? CSSPropertyName(custom_property_name)
+                    : CSSPropertyName(property_id);
+    return CSSUnsupportedStyleValue::Create(name, css_value);
   }
   return style_value;
 }
@@ -380,7 +396,14 @@
 
 CSSStyleValueVector StyleValueFactory::CssValueToStyleValueVector(
     const CSSValue& css_value) {
-  return CssValueToStyleValueVector(CSSPropertyInvalid, g_null_atom, css_value);
+  CSSStyleValueVector style_value_vector;
+
+  if (CSSStyleValue* value = CreateStyleValueWithoutProperty(css_value))
+    style_value_vector.push_back(value);
+  else
+    style_value_vector.push_back(CSSUnsupportedStyleValue::Create(css_value));
+
+  return style_value_vector;
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/cssom/style_value_factory.h b/third_party/blink/renderer/core/css/cssom/style_value_factory.h
index 094c463..87f70fb 100644
--- a/third_party/blink/renderer/core/css/cssom/style_value_factory.h
+++ b/third_party/blink/renderer/core/css/cssom/style_value_factory.h
@@ -43,7 +43,16 @@
       const PropertyRegistration*,
       const HeapVector<CSSStyleValueOrString>& values,
       const ExecutionContext&);
-  // If you don't have complex CSS properties, use this one.
+  // Reify a CSSStyleValue without the context of a CSS property. For most
+  // CSSValues, this will result in a CSSUnsupportedStyleValue. Note that the
+  // CSSUnsupportedStyleValue returned from this function (unlike regular
+  // CSSUnsupportedStyleValues) do not have an associated CSS property,
+  // which means that any attempt to StylePropertyMap.set/setAll such values
+  // will always fail. Therefore, this function should only be used in
+  // situations where declared and inline style objects [1] are not accessible,
+  // such as paint worklets.
+  //
+  // [1] https://www.w3.org/TR/css-typed-om-1/#declared-stylepropertymap-objects
   static CSSStyleValueVector CssValueToStyleValueVector(const CSSValue&);
 };
 
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.cc b/third_party/blink/renderer/core/display_lock/display_lock_context.cc
index 266b8f27..1a0c446 100644
--- a/third_party/blink/renderer/core/display_lock/display_lock_context.cc
+++ b/third_party/blink/renderer/core/display_lock/display_lock_context.cc
@@ -97,7 +97,9 @@
 
 DisplayLockContext::DisplayLockContext(Element* element,
                                        ExecutionContext* context)
-    : ContextLifecycleObserver(context), element_(element) {
+    : ContextLifecycleObserver(context),
+      element_(element),
+      weak_element_handle_(element) {
   SCOPED_LOGGER(__PRETTY_FUNCTION__);
 }
 
@@ -112,6 +114,7 @@
   visitor->Trace(callbacks_);
   visitor->Trace(resolver_);
   visitor->Trace(element_);
+  visitor->Trace(weak_element_handle_);
   ScriptWrappable::Trace(visitor);
   ActiveScriptWrappable::Trace(visitor);
   ContextLifecycleObserver::Trace(visitor);
@@ -119,6 +122,17 @@
 
 void DisplayLockContext::Dispose() {
   SCOPED_LOGGER(__PRETTY_FUNCTION__);
+  // Note that if we have a resolver_ at dispose time, then it's too late to
+  // reject the promise, since we are not allowed to create new strong
+  // references to objects already set for destruction (and rejecting would do
+  // this since the rejection has to be deferred). We need to detach instead.
+  // TODO(vmpstr): See if there is another earlier time we can detect that we're
+  // going to be disposed.
+  if (resolver_) {
+    resolver_->Detach();
+    resolver_ = nullptr;
+    state_ = kResolved;
+  }
   RejectAndCleanUp();
 }
 
@@ -130,7 +144,8 @@
 bool DisplayLockContext::HasPendingActivity() const {
   SCOPED_LOGGER(__PRETTY_FUNCTION__);
   // If we haven't resolved it, we should stick around.
-  return !IsResolved();
+  // Note that if the element we're locking is gone, then we can also be GCed.
+  return !IsResolved() && weak_element_handle_;
 }
 
 void DisplayLockContext::ScheduleCallback(V8DisplayLockCallback* callback) {
@@ -170,7 +185,7 @@
 }
 
 Element* DisplayLockContext::lockedElement() const {
-  return element_;
+  return GetElement();
 }
 
 void DisplayLockContext::ProcessQueue() {
@@ -214,10 +229,10 @@
   }
 
   if (callbacks_.IsEmpty() && state_ != kSuspended) {
-    if (element_->isConnected()) {
+    if (GetElement()->isConnected()) {
       StartCommit();
     } else {
-      state_ = kDisconnected;
+      MarkAsDisconnected();
     }
   }
 }
@@ -235,8 +250,10 @@
   // ancestor tree. Since we're now rejecting the promise and unlocking the
   // element, ensure that we can reach both style and layout subtrees if they
   // are dirty by propagating the bit.
-  MarkAncestorsForStyleRecalcIfNeeded();
-  MarkAncestorsForLayoutIfNeeded();
+  if (weak_element_handle_) {
+    MarkAncestorsForStyleRecalcIfNeeded();
+    MarkAncestorsForLayoutIfNeeded();
+  }
 }
 
 void DisplayLockContext::Resume() {
@@ -250,10 +267,10 @@
     // - Otherwise, we can start committing.
     if (!callbacks_.IsEmpty()) {
       state_ = kCallbacksPending;
-    } else if (element_->isConnected()) {
+    } else if (GetElement()->isConnected()) {
       StartCommit();
     } else {
-      state_ = kDisconnected;
+      MarkAsDisconnected();
     }
   }
   ScheduleTaskIfNeeded();
@@ -269,6 +286,7 @@
   DCHECK_EQ(state_, kSuspended);
   resolver_->Detach();
   resolver_ = nullptr;
+  element_ = nullptr;
 }
 
 void DisplayLockContext::ScheduleTaskIfNeeded() {
@@ -287,16 +305,19 @@
 
 void DisplayLockContext::NotifyConnectedMayHaveChanged() {
   SCOPED_LOGGER(__PRETTY_FUNCTION__);
-  if (element_->isConnected()) {
+  if (GetElement()->isConnected()) {
     if (state_ == kDisconnected)
       StartCommit();
+    // Now that we're connected, we can hold a strong reference. See comment on
+    // |element_| in the header.
+    element_ = weak_element_handle_;
     return;
   }
   // All other states should remain as they are. Specifically, if we're
   // acquiring the lock then we should finish doing so; if we're resolving, then
   // we should finish that as well.
   if (state_ == kCommitting)
-    state_ = kDisconnected;
+    MarkAsDisconnected();
 }
 
 bool DisplayLockContext::ShouldStyle() const {
@@ -310,7 +331,7 @@
     return;
 
   // We must have contain: content for display locking.
-  auto* style = element_->GetComputedStyle();
+  auto* style = GetElement()->GetComputedStyle();
   if (!style || !style->ContainsContent()) {
     RejectAndCleanUp();
     return;
@@ -354,7 +375,7 @@
 
   // Since we should be under containment, we should have a layer. If we don't,
   // then paint might not happen and we'll never resolve.
-  DCHECK(element_->GetLayoutObject()->HasLayer());
+  DCHECK(GetElement()->GetLayoutObject()->HasLayer());
   if (lifecycle_update_state_ <= kNeedsPrePaint)
     lifecycle_update_state_ = kNeedsPaint;
 }
@@ -391,7 +412,7 @@
   // "contain: content", it might not actually apply the containment (e.g. see
   // ShouldApplyContentContainment()). This confirms that containment should
   // apply.
-  auto* layout_object = element_->GetLayoutObject();
+  auto* layout_object = GetElement()->GetLayoutObject();
   if (!layout_object || !layout_object->ShouldApplyContentContainment())
     RejectAndCleanUp();
 }
@@ -416,20 +437,21 @@
     return;
 
   // Schedule an animation to perform the lifecycle phases.
-  element_->GetDocument().GetPage()->Animator().ScheduleVisualUpdate(
-      element_->GetDocument().GetFrame());
+  GetElement()->GetDocument().GetPage()->Animator().ScheduleVisualUpdate(
+      GetElement()->GetDocument().GetFrame());
 }
 
 bool DisplayLockContext::MarkAncestorsForStyleRecalcIfNeeded() {
-  if (element_->NeedsStyleRecalc() || element_->ChildNeedsStyleRecalc()) {
-    element_->MarkAncestorsWithChildNeedsStyleRecalc();
+  if (GetElement()->NeedsStyleRecalc() ||
+      GetElement()->ChildNeedsStyleRecalc()) {
+    GetElement()->MarkAncestorsWithChildNeedsStyleRecalc();
     return true;
   }
   return false;
 }
 
 bool DisplayLockContext::MarkAncestorsForLayoutIfNeeded() {
-  if (auto* layout_object = element_->GetLayoutObject()) {
+  if (auto* layout_object = GetElement()->GetLayoutObject()) {
     if (layout_object->NeedsLayout()) {
       layout_object->MarkContainerChainForLayout();
       return true;
@@ -438,4 +460,12 @@
   return false;
 }
 
+void DisplayLockContext::MarkAsDisconnected() {
+  SCOPED_LOGGER(__PRETTY_FUNCTION__);
+  state_ = kDisconnected;
+  // Let go of the strong reference to the element, allowing it to be GCed. See
+  // the comment on |element_| in the header.
+  element_ = nullptr;
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.h b/third_party/blink/renderer/core/display_lock/display_lock_context.h
index 64019e8..33ba17f 100644
--- a/third_party/blink/renderer/core/display_lock/display_lock_context.h
+++ b/third_party/blink/renderer/core/display_lock/display_lock_context.h
@@ -9,6 +9,7 @@
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+#include "third_party/blink/renderer/platform/wtf/compiler.h"
 
 namespace blink {
 
@@ -22,6 +23,7 @@
       public ContextLifecycleObserver {
   DEFINE_WRAPPERTYPEINFO();
   USING_GARBAGE_COLLECTED_MIXIN(DisplayLockContext);
+  USING_PRE_FINALIZER(DisplayLockContext, Dispose);
 
  public:
   // Conceptually the states are private, but made public for debugging /
@@ -100,6 +102,7 @@
   void DidAttachLayoutTree();
 
  private:
+  friend class DisplayLockContextTest;
   friend class DisplayLockSuspendedHandle;
 
   // Schedules a new callback. If this is the first callback to be scheduled,
@@ -138,9 +141,45 @@
   bool MarkAncestorsForStyleRecalcIfNeeded();
   bool MarkAncestorsForLayoutIfNeeded();
 
+  // Marks the display lock as being disconnected. Note that this removes the
+  // strong reference to the element in case the element is deleted. Once we're
+  // disconnected, there are will be no calls to the context until we reconnect,
+  // so we should allow for the element to get GCed meanwhile.
+  void MarkAsDisconnected();
+
+  // Returns the element asserting that it exists.
+  ALWAYS_INLINE Element* GetElement() const {
+    DCHECK(weak_element_handle_);
+    return weak_element_handle_;
+  }
+
   HeapVector<Member<V8DisplayLockCallback>> callbacks_;
   Member<ScriptPromiseResolver> resolver_;
+
+  // Note that we hold both a weak and a strong reference to the element. The
+  // strong reference is sometimes set to nullptr, meaning that we can GC it if
+  // nothing else is holding a strong reference. We use weak_element_handle_ to
+  // detect such a case so that we don't also keep the context alive needlessly.
+  //
+  // We need a strong reference, since the element can be accessed from script
+  // via this context. Specifically DisplayLockContext::lockedElement() returns
+  // the element to script. This means that callbacks pending in the context can
+  // actually append the element to the tree. This means a strong reference is
+  // needed to prevent GC from destroying the element.
+  //
+  // However, once we're in kDisconnected state, it means that we have no
+  // callbacks pending and we haven't been connected to the DOM tree. It's also
+  // possible that the script has lost the reference to the locked element. This
+  // means the element should be GCed, so we need to let go of the strong
+  // reference. If we don't, we can cause a leak of an element and a display
+  // lock context.
+  //
+  // In case the script did not lose the element handle and will connect it in
+  // the future, we do retain a weak handle. We also use the weak handle to
+  // check if the element was destroyed for the purposes of allowing this
+  // context to be GCed as well.
   Member<Element> element_;
+  WeakMember<Element> weak_element_handle_;
 
   bool process_queue_task_scheduled_ = false;
   unsigned suspended_count_ = 0;
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc b/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
new file mode 100644
index 0000000..ae458db
--- /dev/null
+++ b/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
@@ -0,0 +1,96 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/display_lock/display_lock_context.h"
+
+#include "base/run_loop.h"
+#include "third_party/blink/renderer/bindings/core/v8/script_function.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_display_lock_callback.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h"
+#include "third_party/blink/renderer/core/html_names.h"
+#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h"
+
+namespace blink {
+
+void RunPendingTasks() {
+  base::RunLoop run_loop;
+  Thread::Current()->GetTaskRunner()->PostTask(FROM_HERE,
+                                               run_loop.QuitWhenIdleClosure());
+  run_loop.Run();
+}
+
+class DisplayLockContextTest : public RenderingTest {
+ public:
+  void SetUp() override {
+    RenderingTest::SetUp();
+    features_backup_.emplace();
+    RuntimeEnabledFeatures::SetDisplayLockingEnabled(true);
+  }
+
+  void TearDown() override {
+    if (features_backup_) {
+      features_backup_->Restore();
+      features_backup_.reset();
+    }
+  }
+
+  DisplayLockContext::State ContextState(DisplayLockContext* context) const {
+    return context->state_;
+  }
+
+ private:
+  base::Optional<RuntimeEnabledFeatures::Backup> features_backup_;
+};
+
+class EmptyFunction : public ScriptFunction {
+ public:
+  static v8::Local<v8::Function> Create(ScriptState* script_state) {
+    auto* callback = MakeGarbageCollected<EmptyFunction>(script_state);
+    return callback->BindToV8Function();
+  }
+
+  EmptyFunction(ScriptState* script_state) : ScriptFunction(script_state) {}
+
+  ScriptValue Call(ScriptValue value) final { return value; }
+};
+
+TEST_F(DisplayLockContextTest, ContextCleanedUpWhenElementDestroyed) {
+  GetDocument().GetFrame()->GetSettings()->SetScriptEnabled(true);
+
+  WeakPersistent<Element> element =
+      GetDocument().CreateRawElement(html_names::kDivTag);
+
+  ScriptPromise script_promise;
+  {
+    auto* script_state = ToScriptStateForMainWorld(GetDocument().GetFrame());
+    ScriptState::Scope scope(script_state);
+    script_promise = element->acquireDisplayLock(
+        script_state,
+        V8DisplayLockCallback::Create(EmptyFunction::Create(script_state)));
+  }
+  WeakPersistent<DisplayLockContext> context = element->GetDisplayLockContext();
+  ASSERT_TRUE(context);
+
+  // Ensure we get to the disconnected state.
+  RunPendingTasks();
+  EXPECT_EQ(ContextState(context), DisplayLockContext::kDisconnected);
+
+  // This should be able to clean up the element.
+  ThreadState::Current()->CollectAllGarbage();
+  EXPECT_FALSE(element);
+
+  // Now that the element is gone, HasPendingActivity should return false for
+  // the context.
+  EXPECT_FALSE(context->HasPendingActivity());
+
+  // That means the following garbage collection should be able to clean up the
+  // context.
+  V8GCController::CollectAllGarbageForTesting(
+      v8::Isolate::GetCurrent(),
+      v8::EmbedderHeapTracer::EmbedderStackState::kEmpty);
+  ThreadState::Current()->CollectAllGarbage();
+  EXPECT_FALSE(context);
+}
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
index 00c33b6..6bf5cfe6 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
@@ -563,7 +563,7 @@
 }
 
 IntSize PaintLayerScrollableArea::MaximumScrollOffsetInt() const {
-  if (!GetLayoutBox()->HasOverflowClip())
+  if (!GetLayoutBox() || !GetLayoutBox()->HasOverflowClip())
     return ToIntSize(-ScrollOrigin());
 
   IntSize content_size = ContentsSize();
diff --git a/third_party/blink/renderer/core/testing/v8/web_core_test_support.cc b/third_party/blink/renderer/core/testing/v8/web_core_test_support.cc
index 71933f2..f8aca28 100644
--- a/third_party/blink/renderer/core/testing/v8/web_core_test_support.cc
+++ b/third_party/blink/renderer/core/testing/v8/web_core_test_support.cc
@@ -92,7 +92,7 @@
 
   ExecutionContext* execution_context = ExecutionContext::From(script_state);
 
-  if (type == &V8OriginTrialsTest::wrapper_type_info) {
+  if (type == V8OriginTrialsTest::GetWrapperTypeInfo()) {
     if (origin_trials::OriginTrialsSampleAPIEnabled(execution_context)) {
       V8OriginTrialsTest::InstallOriginTrialsSampleAPI(
           script_state->GetIsolate(), script_state->World(),
@@ -136,7 +136,7 @@
   if (feature == origin_trials::kOriginTrialsSampleAPITrialName) {
     if (script_state->PerContextData()
             ->GetExistingConstructorAndPrototypeForType(
-                &V8OriginTrialsTest::wrapper_type_info, &prototype_object,
+                V8OriginTrialsTest::GetWrapperTypeInfo(), &prototype_object,
                 &interface_object)) {
       V8OriginTrialsTest::InstallOriginTrialsSampleAPI(
           script_state->GetIsolate(), script_state->World(),
@@ -147,7 +147,7 @@
   if (feature == origin_trials::kOriginTrialsSampleAPIImpliedTrialName) {
     if (script_state->PerContextData()
             ->GetExistingConstructorAndPrototypeForType(
-                &V8OriginTrialsTest::wrapper_type_info, &prototype_object,
+                V8OriginTrialsTest::GetWrapperTypeInfo(), &prototype_object,
                 &interface_object)) {
       V8OriginTrialsTest::InstallOriginTrialsSampleAPIImplied(
           script_state->GetIsolate(), script_state->World(),
diff --git a/third_party/blink/renderer/core/timing/event_timing.cc b/third_party/blink/renderer/core/timing/event_timing.cc
index bd694a3..74ff458 100644
--- a/third_party/blink/renderer/core/timing/event_timing.cc
+++ b/third_party/blink/renderer/core/timing/event_timing.cc
@@ -37,9 +37,8 @@
   // dispatched.
   if ((performance_->ShouldBufferEventTiming() &&
        !performance_->IsEventTimingBufferFull()) ||
-      performance_->HasObserverFor(PerformanceEntry::kEvent)
-      || (performance_->HasObserverFor(PerformanceEntry::kFirstInput)
-         && !performance_->FirstInputDetected())) {
+      performance_->HasObserverFor(PerformanceEntry::kEvent) ||
+      !performance_->FirstInputDetected()) {
     processing_start_ = CurrentTimeTicks();
     finished_will_dispatch_event_ = true;
   }
diff --git a/third_party/blink/renderer/core/timing/window_performance.cc b/third_party/blink/renderer/core/timing/window_performance.cc
index 9004cc77..5bc95a808 100644
--- a/third_party/blink/renderer/core/timing/window_performance.cc
+++ b/third_party/blink/renderer/core/timing/window_performance.cc
@@ -340,7 +340,7 @@
                                             bool cancelable) {
   DCHECK(origin_trials::EventTimingEnabled(GetExecutionContext()));
 
-  DCHECK(!start_time.is_null());
+  // |start_time| could be null in some tests that inject input.
   DCHECK(!processing_start.is_null());
   DCHECK(!processing_end.is_null());
   DCHECK_GE(processing_end, processing_start);
@@ -374,7 +374,7 @@
   for (const auto& entry : event_timings_) {
     int duration_in_ms = std::ceil((end_time - entry->startTime()) / 8) * 8;
     entry->SetDuration(duration_in_ms);
-    if (!first_input_detected_) {
+    if (!first_input_timing_) {
       if (entry->name() == "pointerdown") {
         first_pointer_down_event_timing_ =
             PerformanceEventTiming::CreateFirstInputTiming(entry);
@@ -413,7 +413,6 @@
 void WindowPerformance::DispatchFirstInputTiming(
     PerformanceEventTiming* entry) {
   DCHECK(origin_trials::EventTimingEnabled(GetExecutionContext()));
-  first_input_detected_ = true;
 
   if (!entry)
     return;
@@ -424,8 +423,7 @@
   }
 
   DCHECK(!first_input_timing_);
-  if (ShouldBufferEventTiming())
-    first_input_timing_ = entry;
+  first_input_timing_ = entry;
 }
 
 void WindowPerformance::AddLayoutJankFraction(double jank_fraction) {
diff --git a/third_party/blink/renderer/core/timing/window_performance.h b/third_party/blink/renderer/core/timing/window_performance.h
index 086795e..bf3157d 100644
--- a/third_party/blink/renderer/core/timing/window_performance.h
+++ b/third_party/blink/renderer/core/timing/window_performance.h
@@ -71,7 +71,7 @@
 
   bool ShouldBufferEventTiming();
 
-  bool FirstInputDetected() const { return first_input_detected_; }
+  bool FirstInputDetected() const { return !!first_input_timing_; }
 
   // This method creates a PerformanceEventTiming and if needed creates a swap
   // promise to calculate the |duration| attribute when such promise is
@@ -119,10 +119,6 @@
   // dispatch has been completed but the swap promise used to determine
   // |duration| has not been resolved.
   HeapVector<Member<PerformanceEventTiming>> event_timings_;
-  // We use a bool separate from |first_input_timing_| because if the first
-  // input does not happen before onload then |first_input_timing_| will never
-  // be populated since it should not be accessible from the performance buffer.
-  bool first_input_detected_ = false;
   Member<PerformanceEventTiming> first_pointer_down_event_timing_;
   mutable Member<PerformanceNavigation> navigation_;
   mutable Member<PerformanceTiming> timing_;
diff --git a/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc b/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc
index 18cb71c..effb83ea 100644
--- a/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc
+++ b/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc
@@ -87,7 +87,7 @@
   const WrapperTypeInfo* wrapper_type_info =
       GetWrapperTypeInfoFromScriptValue(script_state, script_value);
   return wrapper_type_info &&
-         wrapper_type_info->Equals(&V8TrustedHTML::wrapper_type_info);
+         wrapper_type_info->Equals(V8TrustedHTML::GetWrapperTypeInfo());
 }
 
 bool TrustedTypePolicyFactory::isScript(ScriptState* script_state,
@@ -95,7 +95,7 @@
   const WrapperTypeInfo* wrapper_type_info =
       GetWrapperTypeInfoFromScriptValue(script_state, script_value);
   return wrapper_type_info &&
-         wrapper_type_info->Equals(&V8TrustedScript::wrapper_type_info);
+         wrapper_type_info->Equals(V8TrustedScript::GetWrapperTypeInfo());
 }
 
 bool TrustedTypePolicyFactory::isScriptURL(ScriptState* script_state,
@@ -103,7 +103,7 @@
   const WrapperTypeInfo* wrapper_type_info =
       GetWrapperTypeInfoFromScriptValue(script_state, script_value);
   return wrapper_type_info &&
-         wrapper_type_info->Equals(&V8TrustedScriptURL::wrapper_type_info);
+         wrapper_type_info->Equals(V8TrustedScriptURL::GetWrapperTypeInfo());
 }
 
 bool TrustedTypePolicyFactory::isURL(ScriptState* script_state,
@@ -111,7 +111,7 @@
   const WrapperTypeInfo* wrapper_type_info =
       GetWrapperTypeInfoFromScriptValue(script_state, script_value);
   return wrapper_type_info &&
-         wrapper_type_info->Equals(&V8TrustedURL::wrapper_type_info);
+         wrapper_type_info->Equals(V8TrustedURL::GetWrapperTypeInfo());
 }
 
 void TrustedTypePolicyFactory::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc b/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc
index db878ac..ffa5a83e 100644
--- a/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc
+++ b/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc
@@ -71,8 +71,8 @@
 template <typename WTFTypedArray, typename V8TypedArray>
 const WrapperTypeInfo*
 DOMTypedArray<WTFTypedArray, V8TypedArray>::GetWrapperTypeInfo() const {
-  return &DOMTypedArrayTraits<
-      DOMTypedArray<WTFTypedArray, V8TypedArray>>::Type::wrapper_type_info;
+  return DOMTypedArrayTraits<
+      DOMTypedArray<WTFTypedArray, V8TypedArray>>::Type::GetWrapperTypeInfo();
 }
 
 template class CORE_TEMPLATE_EXPORT
diff --git a/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc b/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc
index 3ddf19c..0a5fb57 100644
--- a/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc
+++ b/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc
@@ -232,7 +232,7 @@
         requests.push_back(std::move(request));
       }
     }
-    size_t requestSize = requests.size();
+    wtf_size_t requestSize = requests.size();
     if (!requestSize) {
       callback_->sendSuccess(Array<DataEntry>::create(), false);
       return;
diff --git a/third_party/blink/renderer/modules/indexeddb/indexed_db_blink_mojom_traits.cc b/third_party/blink/renderer/modules/indexeddb/indexed_db_blink_mojom_traits.cc
index 7848af7..cc0ffb1 100644
--- a/third_party/blink/renderer/modules/indexeddb/indexed_db_blink_mojom_traits.cc
+++ b/third_party/blink/renderer/modules/indexeddb/indexed_db_blink_mojom_traits.cc
@@ -36,7 +36,8 @@
   MapDataView<int64_t, blink::mojom::IDBObjectStoreMetadataDataView>
       object_stores;
   data.GetObjectStoresDataView(&object_stores);
-  out->object_stores.ReserveCapacityForSize(object_stores.size());
+  out->object_stores.ReserveCapacityForSize(
+      SafeCast<wtf_size_t>(object_stores.size()));
   for (size_t i = 0; i < object_stores.size(); ++i) {
     const int64_t key = object_stores.keys()[i];
     scoped_refptr<blink::IDBObjectStoreMetadata> object_store;
@@ -297,7 +298,7 @@
   value->max_index_id = data.max_index_id();
   MapDataView<int64_t, blink::mojom::IDBIndexMetadataDataView> indexes;
   data.GetIndexesDataView(&indexes);
-  value->indexes.ReserveCapacityForSize(indexes.size());
+  value->indexes.ReserveCapacityForSize(SafeCast<wtf_size_t>(indexes.size()));
   for (size_t i = 0; i < indexes.size(); ++i) {
     const int64_t key = indexes.keys()[i];
     scoped_refptr<blink::IDBIndexMetadata> index;
diff --git a/third_party/blink/renderer/modules/mediasource/media_source.cc b/third_party/blink/renderer/modules/mediasource/media_source.cc
index 3224fbd5..48620731 100644
--- a/third_party/blink/renderer/modules/mediasource/media_source.cc
+++ b/third_party/blink/renderer/modules/mediasource/media_source.cc
@@ -503,6 +503,8 @@
 
 void MediaSource::setDuration(double duration,
                               ExceptionState& exception_state) {
+  BLINK_MSLOG << __func__ << " this=" << this << " : duration=" << duration;
+
   // 2.1 https://www.w3.org/TR/media-source/#widl-MediaSource-duration
   // 1. If the value being set is negative or NaN then throw a TypeError
   // exception and abort these steps.
@@ -624,6 +626,8 @@
   DEFINE_STATIC_LOCAL(const AtomicString, network, ("network"));
   DEFINE_STATIC_LOCAL(const AtomicString, decode, ("decode"));
 
+  BLINK_MSLOG << __func__ << " this=" << this << " : error=" << error;
+
   // https://www.w3.org/TR/media-source/#dom-mediasource-endofstream
   // 1. If the readyState attribute is not in the "open" state then throw an
   //    InvalidStateError exception and abort these steps.
@@ -649,6 +653,9 @@
 void MediaSource::setLiveSeekableRange(double start,
                                        double end,
                                        ExceptionState& exception_state) {
+  BLINK_MSLOG << __func__ << " this=" << this << " : start=" << start
+              << ", end=" << end;
+
   // http://w3c.github.io/media-source/#widl-MediaSource-setLiveSeekableRange-void-double-start-double-end
   // 1. If the readyState attribute is not "open" then throw an
   //    InvalidStateError exception and abort these steps.
@@ -678,6 +685,8 @@
 }
 
 void MediaSource::clearLiveSeekableRange(ExceptionState& exception_state) {
+  BLINK_MSLOG << __func__ << " this=" << this;
+
   // http://w3c.github.io/media-source/#widl-MediaSource-clearLiveSeekableRange-void
   // 1. If the readyState attribute is not "open" then throw an
   //    InvalidStateError exception and abort these steps.
diff --git a/third_party/blink/renderer/modules/mediasource/source_buffer.cc b/third_party/blink/renderer/modules/mediasource/source_buffer.cc
index c265d33..9a42c14 100644
--- a/third_party/blink/renderer/modules/mediasource/source_buffer.cc
+++ b/third_party/blink/renderer/modules/mediasource/source_buffer.cc
@@ -171,7 +171,7 @@
 
 void SourceBuffer::setMode(const AtomicString& new_mode,
                            ExceptionState& exception_state) {
-  BLINK_SBLOG << __func__ << " this=" << this << " newMode=" << new_mode;
+  BLINK_SBLOG << __func__ << " this=" << this << " new_mode=" << new_mode;
   // Section 3.1 On setting mode attribute steps.
   // https://www.w3.org/TR/media-source/#dom-sourcebuffer-mode
   // 1. If this object has been removed from the sourceBuffers attribute of the
diff --git a/third_party/blink/renderer/modules/webaudio/audio_node.cc b/third_party/blink/renderer/modules/webaudio/audio_node.cc
index 81343ac7..b2e018d1 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_node.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_node.cc
@@ -46,6 +46,7 @@
       node_type_(kNodeTypeUnknown),
       node_(&node),
       context_(node.context()),
+      deferred_task_handler_(&context_->GetDeferredTaskHandler()),
       last_processing_time_(-1),
       last_non_silent_time_(0),
       connection_ref_count_(0),
@@ -101,11 +102,11 @@
 
 void AudioHandler::Dispose() {
   DCHECK(IsMainThread());
-  Context()->AssertGraphOwner();
+  deferred_task_handler_->AssertGraphOwner();
 
-  Context()->GetDeferredTaskHandler().RemoveChangedChannelCountMode(this);
-  Context()->GetDeferredTaskHandler().RemoveChangedChannelInterpretation(this);
-  Context()->GetDeferredTaskHandler().RemoveAutomaticPullNode(this);
+  deferred_task_handler_->RemoveChangedChannelCountMode(this);
+  deferred_task_handler_->RemoveChangedChannelInterpretation(this);
+  deferred_task_handler_->RemoveAutomaticPullNode(this);
   for (auto& output : outputs_)
     output->Dispose();
 }
@@ -360,7 +361,7 @@
 
 void AudioHandler::CheckNumberOfChannelsForInput(AudioNodeInput* input) {
   DCHECK(Context()->IsAudioThread());
-  Context()->AssertGraphOwner();
+  deferred_task_handler_->AssertGraphOwner();
 
   DCHECK(inputs_.Contains(input));
   if (!inputs_.Contains(input))
@@ -402,7 +403,7 @@
 
 void AudioHandler::EnableOutputsIfNecessary() {
   DCHECK(IsMainThread());
-  Context()->AssertGraphOwner();
+  deferred_task_handler_->AssertGraphOwner();
 
   // We're enabling outputs for this handler.  Remove this from the tail
   // processing list (if it's there) so that we don't inadvertently disable the
@@ -427,7 +428,7 @@
 void AudioHandler::DisableOutputsIfNecessary() {
   // This function calls other functions that require graph ownership,
   // so assert that this needs graph ownership too.
-  Context()->AssertGraphOwner();
+  deferred_task_handler_->AssertGraphOwner();
 
   // Disable outputs if appropriate. We do this if the number of connections is
   // 0 or 1. The case of 0 is from deref() where there are no connections left.
@@ -449,9 +450,8 @@
     // the outputs so that the tail for the node can be output.
     // Otherwise, we can disable the outputs right away.
     if (RequiresTailProcessing()) {
-      auto& deferred_task_handler = Context()->GetDeferredTaskHandler();
-      if (deferred_task_handler.AcceptsTailProcessing())
-        deferred_task_handler.AddTailProcessingHandler(this);
+      if (deferred_task_handler_->AcceptsTailProcessing())
+        deferred_task_handler_->AddTailProcessingHandler(this);
     } else {
       DisableOutputs();
     }
@@ -465,7 +465,7 @@
 }
 
 void AudioHandler::MakeConnection() {
-  Context()->AssertGraphOwner();
+  deferred_task_handler_->AssertGraphOwner();
   connection_ref_count_++;
 
 #if DEBUG_AUDIONODE_REFERENCES
@@ -507,7 +507,7 @@
 }
 
 void AudioHandler::BreakConnectionWithLock() {
-  Context()->AssertGraphOwner();
+  deferred_task_handler_->AssertGraphOwner();
   connection_ref_count_--;
 
 #if DEBUG_AUDIONODE_REFERENCES
diff --git a/third_party/blink/renderer/modules/webaudio/audio_node.h b/third_party/blink/renderer/modules/webaudio/audio_node.h
index a89174b..96d122b 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_node.h
+++ b/third_party/blink/renderer/modules/webaudio/audio_node.h
@@ -121,6 +121,10 @@
   virtual BaseAudioContext* Context() const;
   void ClearContext() { context_ = nullptr; }
 
+  DeferredTaskHandler& GetDeferredTaskHandler() const {
+    return *deferred_task_handler_;
+  }
+
   enum ChannelCountMode { kMax, kClampedMax, kExplicit };
 
   NodeType GetNodeType() const { return node_type_; }
@@ -275,6 +279,10 @@
   // See http://crbug.com/404527 for the detail.
   UntracedMember<BaseAudioContext> context_;
 
+  // Legal to access even when |context_| may be gone, such as during the
+  // destructor.
+  const scoped_refptr<DeferredTaskHandler> deferred_task_handler_;
+
   Vector<std::unique_ptr<AudioNodeInput>> inputs_;
   Vector<std::unique_ptr<AudioNodeOutput>> outputs_;
 
diff --git a/third_party/blink/renderer/modules/webaudio/audio_node_output.h b/third_party/blink/renderer/modules/webaudio/audio_node_output.h
index 4d478ac..2f136c2 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_node_output.h
+++ b/third_party/blink/renderer/modules/webaudio/audio_node_output.h
@@ -100,7 +100,7 @@
   // Can be called from any thread.
   AudioHandler& Handler() const { return handler_; }
   DeferredTaskHandler& GetDeferredTaskHandler() const {
-    return handler_.Context()->GetDeferredTaskHandler();
+    return handler_.GetDeferredTaskHandler();
   }
 
   // This reference is safe because the AudioHandler owns this AudioNodeOutput
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
index 2a3d1f02..6ae065e 100644
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -356,8 +356,8 @@
   RuntimeEnabledFeatures::SetScriptedSpeechSynthesisEnabled(enable);
 }
 
-bool WebRuntimeFeatures::IsSlimmingPaintV2Enabled() {
-  return RuntimeEnabledFeatures::SlimmingPaintV2Enabled();
+bool WebRuntimeFeatures::IsCompositeAfterPaintEnabled() {
+  return RuntimeEnabledFeatures::CompositeAfterPaintEnabled();
 }
 
 void WebRuntimeFeatures::EnableUserActivationV2(bool enable) {
diff --git a/third_party/blink/renderer/platform/graphics/logging_canvas.cc b/third_party/blink/renderer/platform/graphics/logging_canvas.cc
index 0b83019..b5eae59 100644
--- a/third_party/blink/renderer/platform/graphics/logging_canvas.cc
+++ b/third_party/blink/renderer/platform/graphics/logging_canvas.cc
@@ -414,15 +414,15 @@
   };
 }
 
-String TextEncodingName(SkPaint::TextEncoding encoding) {
+String TextEncodingName(SkTextEncoding encoding) {
   switch (encoding) {
-    case SkPaint::kUTF8_TextEncoding:
+    case kUTF8_SkTextEncoding:
       return "UTF-8";
-    case SkPaint::kUTF16_TextEncoding:
+    case kUTF16_SkTextEncoding:
       return "UTF-16";
-    case SkPaint::kUTF32_TextEncoding:
+    case kUTF32_SkTextEncoding:
       return "UTF-32";
-    case SkPaint::kGlyphID_TextEncoding:
+    case kGlyphID_SkTextEncoding:
       return "GlyphID";
     default:
       NOTREACHED();
@@ -520,17 +520,17 @@
 String StringForText(const void* text,
                      size_t byte_length,
                      const SkPaint& paint) {
-  SkPaint::TextEncoding encoding = paint.getTextEncoding();
+  SkTextEncoding encoding = paint.getTextEncoding();
   switch (encoding) {
-    case SkPaint::kUTF8_TextEncoding:
+    case kUTF8_SkTextEncoding:
       return WTF::TextEncoding("UTF-8").Decode(
           reinterpret_cast<const char*>(text), byte_length);
-    case SkPaint::kUTF16_TextEncoding:
+    case kUTF16_SkTextEncoding:
       return WTF::TextEncoding("UTF-16LE")
           .Decode(reinterpret_cast<const char*>(text), byte_length);
-    case SkPaint::kUTF32_TextEncoding:
+    case kUTF32_SkTextEncoding:
       return StringForUTF32LEText(text, byte_length);
-    case SkPaint::kGlyphID_TextEncoding: {
+    case kGlyphID_SkTextEncoding: {
       WTF::Vector<SkUnichar> data_vector(byte_length / 2);
       SkUnichar* text_data = data_vector.data();
       paint.glyphsToUnichars(static_cast<const uint16_t*>(text),
diff --git a/third_party/blink/renderer/platform/loader/cors/cors.cc b/third_party/blink/renderer/platform/loader/cors/cors.cc
index ceab3bb..25cee924 100644
--- a/third_party/blink/renderer/platform/loader/cors/cors.cc
+++ b/third_party/blink/renderer/platform/loader/cors/cors.cc
@@ -280,8 +280,10 @@
   base::Optional<url::Origin> origin_to_pass;
   if (origin)
     origin_to_pass = AsUrlOrigin(*origin);
+  // Blink-side loaders mutate origin instead of setting "tainted_origin" flag,
+  // so we are not using the flag.
   return network::cors::CalculateResponseTainting(
-      url, request_mode, origin_to_pass, cors_flag == CorsFlag::Set);
+      url, request_mode, origin_to_pass, cors_flag == CorsFlag::Set, false);
 }
 
 bool CalculateCredentialsFlag(
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 40695f6..5b3e26f0 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1206,6 +1206,7 @@
     },
     {
       name: "SlimmingPaintV2",
+      implied_by: ["CompositeAfterPaint"],
     },
     {
       name: "SmoothScrollJSIntervention",
diff --git a/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.cc b/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.cc
index 8e297487..d08a4aa 100644
--- a/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.cc
+++ b/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.cc
@@ -173,7 +173,7 @@
 bool SchedulerHelper::HasCPUTimingForEachTask() const {
   if (sequence_manager_) {
     return sequence_manager_->GetMetricRecordingSettings()
-        .records_cpu_time_for_each_task;
+        .records_cpu_time_for_all_tasks();
   }
   return false;
 }
diff --git a/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc b/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc
index cf19a89..455f3bea 100644
--- a/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc
+++ b/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc
@@ -24,12 +24,15 @@
   WarmupTracingCategories();
   // Workers might be short-lived, so placing warmup here.
   TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("worker.scheduler"));
+  auto settings = base::sequence_manager::SequenceManager::Settings{
+      .randomised_sampling_enabled = true};
   auto sequence_manager =
       message_pump
           ? base::sequence_manager::
                 CreateSequenceManagerOnCurrentThreadWithPump(
-                    base::MessageLoop::TYPE_DEFAULT, std::move(message_pump))
-          : base::sequence_manager::CreateSequenceManagerOnCurrentThread();
+                    std::move(message_pump), std::move(settings))
+          : base::sequence_manager::CreateSequenceManagerOnCurrentThread(
+                std::move(settings));
   std::unique_ptr<MainThreadSchedulerImpl> scheduler(
       new MainThreadSchedulerImpl(std::move(sequence_manager),
                                   initial_virtual_time));
diff --git a/third_party/blink/renderer/platform/scheduler/worker/compositor_thread.cc b/third_party/blink/renderer/platform/scheduler/worker/compositor_thread.cc
index 0236b1f..32d5f4f 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/compositor_thread.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/compositor_thread.cc
@@ -18,7 +18,9 @@
 std::unique_ptr<NonMainThreadSchedulerImpl>
 CompositorThread::CreateNonMainThreadScheduler() {
   return std::make_unique<CompositorThreadScheduler>(
-      base::sequence_manager::CreateSequenceManagerOnCurrentThread());
+      base::sequence_manager::CreateSequenceManagerOnCurrentThread(
+          base::sequence_manager::SequenceManager::Settings{
+              .randomised_sampling_enabled = true}));
 }
 
 }  // namespace scheduler
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_impl.cc
index f8d43f2c..10db0436 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_impl.cc
@@ -25,7 +25,10 @@
     WorkerSchedulerProxy* proxy) {
   return std::make_unique<WorkerThreadScheduler>(
       thread_type,
-      base::sequence_manager::CreateSequenceManagerOnCurrentThread(), proxy);
+      base::sequence_manager::CreateSequenceManagerOnCurrentThread(
+          base::sequence_manager::SequenceManager::Settings{
+              .randomised_sampling_enabled = true}),
+      proxy);
 }
 
 void NonMainThreadSchedulerImpl::Init() {
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc
index 62706fe7..7b115c7 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc
@@ -76,7 +76,9 @@
   std::unique_ptr<NonMainThreadSchedulerImpl> CreateNonMainThreadScheduler()
       override {
     auto scheduler = std::make_unique<WorkerThreadSchedulerForTest>(
-        base::sequence_manager::CreateSequenceManagerOnCurrentThread(),
+        base::sequence_manager::CreateSequenceManagerOnCurrentThread(
+            base::sequence_manager::SequenceManager::Settings{
+                .randomised_sampling_enabled = true}),
         worker_scheduler_proxy(), throtting_state_changed_);
     scheduler_ = scheduler.get();
     worker_scheduler_ = std::make_unique<scheduler::WorkerScheduler>(
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees
index 131024f..b26ef9c 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees
+++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=BlinkGenPropertyTrees
@@ -88,7 +88,7 @@
 Bug(none) virtual/scalefactor200withzoom/ [ Skip ]
 Bug(none) virtual/sharedarraybuffer/ [ Skip ]
 Bug(none) virtual/single-renderer-process/ [ Skip ]
-Bug(none) virtual/spv2/ [ Skip ]
+Bug(none) virtual/composite-after-paint/ [ Skip ]
 Bug(none) virtual/stable/ [ Skip ]
 Bug(none) virtual/sxg-with-network-service/ [ Skip ]
 Bug(none) virtual/sxg/ [ Skip ]
@@ -112,11 +112,7 @@
 Bug(none) compositing/overflow/composited-scroll-with-fractional-translation.html [ Pass ]
 Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/clip-escaping-reverse-order-should-not-crash.html [ Pass ]
 Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/composited-scroll-with-fractional-translation.html [ Pass ]
-
-# mask-with-added-filters.html should be newly-passing with BGPT but currently
-# has minor pixel differences and should be rebaselined.
-# crbug.com/865039 compositing/masks/mask-with-added-filters.html [ Pass ]
-Bug(none) compositing/masks/mask-with-added-filters.html [ Failure ]
+crbug.com/865039 compositing/masks/mask-with-added-filters.html [ Pass ]
 
 # Link highlights are no longer affected by ancestor effects.
 crbug.com/857501 compositing/gestures/gesture-tapHighlight-with-filter.html [ Pass ]
@@ -164,69 +160,3 @@
 crbug.com/882973 http/tests/devtools/layers/layer-tree-model.js [ Failure ]
 
 crbug.com/884239 virtual/threaded/animations/animationworklet/worklet-animation-local-time-undefined.html [ Failure ]
-
-# CSS clip with filter and opacity leads to a DCHECK
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-comparison-shown-node-count-preserved-when-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-event-listeners.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-statistics.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-orphan-nodes.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-comparison-show-all.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-search-by-id.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-containment-shown-node-count-preserved-when-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-expand-collapse.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-show-next.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-loader.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-comparison-expansion-preserved-when-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-comparison-show-next.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-expansion-preserved-when-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-weak-dominator.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-sorting-instances.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-sorting-fields.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-comparison-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-show-ranges.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-shown-node-count-preserved-when-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-retainers.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-containment-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-comparison-dom-groups-change.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-containment-show-next.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-containment-show-all.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-show-all.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-inspect-dom-wrapper.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-sorting.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/cpu-profiler-save-load.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-summary-search.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-location.js [ Crash ]
-crbug.com/906154 http/tests/devtools/profiler/heap-snapshot-containment-expansion-preserved-when-sorting.js [ Crash ]
-
-# These tests have failures that were introduced between enabling BGPT for the
-# first time and later disabling it. These are not real failures and can be
-# rebaselined.
-Bug(none) compositing/geometry/foreground-layer.html [ Failure ]
-Bug(none) compositing/iframes/become-composited-nested-iframes.html [ Failure ]
-Bug(none) compositing/iframes/invisible-nested-iframe-show.html [ Failure ]
-Bug(none) compositing/iframes/overlapped-nested-iframes.html [ Failure ]
-Bug(none) paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content.html [ Failure ]
-Bug(none) paint/invalidation/video-paint-invalidation.html [ Failure ]
-Bug(none) virtual/android/fullscreen/video-overlay-scroll.html [ Failure ]
-Bug(none) compositing/direct-image-compositing.html [ Failure ]
-Bug(none) compositing/geometry/layer-due-to-layer-children.html [ Failure ]
-Bug(none) compositing/lots-of-img-layers-with-opacity.html [ Failure ]
-Bug(none) compositing/lots-of-img-layers.html [ Failure ]
-Bug(none) compositing/masks/mask-with-removed-filters.html [ Failure ]
-Bug(none) compositing/overflow/border-radius-styles-with-composited-child.html [ Failure ]
-Bug(none) compositing/overflow/rotate-then-clip-z-order-interleave.html [ Failure ]
-Bug(none) compositing/overflow/tiled-mask.html [ Failure ]
-Bug(none) compositing/perpendicular-layer-sorting.html [ Failure ]
-Bug(none) compositing/perspective-interest-rect.html [ Failure ]
-Bug(none) css3/blending/background-blend-mode-overlapping-accelerated-elements.html [ Failure ]
-Bug(none) fast/borders/border-radius-mask-canvas.html [ Failure ]
-Bug(none) fast/borders/border-radius-mask-video.html [ Failure ]
-Bug(none) fast/clip/overflow-border-radius-composited-parent.html [ Failure ]
-Bug(none) fast/clip/overflow-border-radius-composited.html [ Failure ]
-Bug(none) transforms/3d/point-mapping/3d-point-mapping-2.html [ Failure ]
-Bug(none) transforms/3d/point-mapping/3d-point-mapping-deep.html [ Failure ]
-Bug(none) transforms/3d/point-mapping/3d-point-mapping-preserve-3d.html [ Failure ]
-Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child.html [ Failure ]
-Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/rotate-then-clip-z-order-interleave.html [ Failure ]
-Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/tiled-mask.html [ Failure ]
-Bug(none) paint/invalidation/scroll/overflow-scroll-composited-non-stacking-child.html [ Failure ]
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2 b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
similarity index 95%
rename from third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2
rename to third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
index 26a0f6e..2c73089ca 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-slimming-paint-v2
+++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
@@ -1,4 +1,4 @@
-# Expectations for slimming paint v2
+# Expectations for CompositeAfterPaint
 # See: https://docs.google.com/document/d/1QCM912Dr6u38DqyQqd7pxQxDy8FFOoWMMDq7uAXqKdA/view
 # We are focused on fast/, compositing/, and svg/ with all other directories skipped (for now).
 Bug(none) css3/ [ Skip ]
@@ -34,7 +34,7 @@
 crbug.com/841567 virtual/threaded/fast/scrolling [ Skip ]
 crbug.com/841567 virtual/fractional_scrolling_threaded/fast/scrolling [ Skip ]
 
-# Fail on SPv1, but succeed on SPv2
+# Fail before CompositeAfterPaint but pass with it.
 crbug.com/472330 fast/borders/border-image-outset-split-inline-vertical-lr.html [ Pass ]
 crbug.com/817175 compositing/overflow/clip-escaping-reverse-order-should-not-crash.html [ Pass ]
 crbug.com/736052 compositing/overflow/composited-scroll-with-fractional-translation.html [ Pass ]
@@ -409,9 +409,10 @@
 
 # Failures due to effect compositing decision
 
-# Failures due to SPv2 using SkBlendMode::kDstIn to implement masks.
-# Some rounding differences is expected but none of them should be apparent.
-# Text failures are also expected because of different layer structure.
+# Failures due to CompositeAfterPaint using SkBlendMode::kDstIn to implement
+# masks. Some rounding differences is expected but none of them should be
+# apparent. Text failures are also expected because of the different layer
+# structure.
 crbug.com/589265 compositing/masks/mask-layer-size.html [ Failure ]
 crbug.com/589265 fast/borders/border-radius-with-composited-child.html [ Failure ]
 crbug.com/589265 fast/clip/overflow-border-radius-composited-parent.html [ Failure ]
@@ -456,7 +457,7 @@
 Bug(none) fast/block/float/float-change-composited-scrolling.html [ Failure ]
 
 # Failures due to an extra layer caused by a scroll hit test layer. Most of
-# these should pass once compositing reasons are correct in SPV2.
+# these should pass once compositing reasons are correct in CompositeAfterPaint.
 crbug.com/738613 compositing/dont-composite-text-input-elements.html [ Failure ]
 crbug.com/738613 paint/invalidation/background/background-image-paint-invalidation.html [ Failure ]
 crbug.com/738613 paint/invalidation/compositing/text-color-change.html [ Failure ]
@@ -486,8 +487,6 @@
 crbug.com/738613 paint/invalidation/scroll/overflow-auto-in-overflow-auto-scrolled.html [ Failure ]
 crbug.com/738613 paint/invalidation/scroll/overflow-scroll-in-overflow-scroll-scrolled.html [ Failure ]
 
-# "flattenInheritedTransform" of FrameView scroll translation.
-
 # Unlike SPV1, there is no raster invalidation when a scrollbar layer disappears
 # because the scrollbar layer is completely composited. This will match the
 # SPV1 result once compositing reasons no longer cause the scrollbar to be
@@ -596,3 +595,21 @@
 Bug(none) compositing/overflow/grandchild-composited-with-border-radius-ancestor.html [ Failure ]
 Bug(none) paint/invalidation/float-offscreen.html [ Failure ]
 Bug(none) compositing/video/video-controls-squashing.html [ Failure ]
+
+# These tests just need to be rebaselined.
+Bug(none) compositing/masks/mask-with-added-filters.html [ Failure ]
+Bug(none) compositing/visibility/visibility-image-layers.html [ Failure ]
+Bug(none) virtual/threaded/compositing/visibility/visibility-image-layers.html [ Failure ]
+Bug(none) css3/blending/effect-background-blend-mode-stacking.html [ Failure ]
+Bug(none) css3/blending/mix-blend-mode-isolated-group-1.html [ Failure ]
+Bug(none) css3/blending/mix-blend-mode-isolated-group-2.html [ Failure ]
+Bug(none) css3/blending/mix-blend-mode-isolated-group-3.html [ Failure ]
+Bug(none) fast/backgrounds/size/contain-and-cover-zoomed.html [ Failure ]
+Bug(none) fast/borders/border-inner-bleed.html [ Failure ]
+Bug(none) fast/borders/inline-mask-overlay-image-outset-vertical-rl.html [ Failure ]
+Bug(none) fast/borders/inline-mask-overlay-image-outset.html [ Failure ]
+Bug(none) images/color-profile-layer-filter.html [ Failure ]
+Bug(none) images/color-profile-layer.html [ Failure ]
+Bug(none) images/color-profile-mask-image-svg.html [ Failure ]
+Bug(none) svg/W3C-SVG-1.1/masking-path-04-b.svg [ Failure ]
+Bug(none) fast/overflow/overflow-text-hit-testing.html [ Failure ]
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
index 8397547..9162d71 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
+++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
@@ -25,7 +25,7 @@
 # rightsizing-grid.html is truly flaky, show flakiness on reload
 
 # Needs rebaselining.
-crbug.com/900015 fast/table/dynamic-caption-add-before-child.xhtml [ Failure ]
+crbug.com/900015 fast/table/dynamic-caption-add-before-child.xhtml [ Failure Pass ]
 
 # Features that do not have active plans to support or turn on.
 crbug.com/591099 fast/css3-text/css3-text-indent/text-indent-out-of-flow-each-line-hanging.html [ Skip ]
@@ -106,7 +106,6 @@
 crbug.com/40634 external/wpt/css/css-text/white-space/trailing-space-before-br-001.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-text/word-break/word-break-break-all-004.html [ Pass ]
-crbug.com/591099 external/wpt/css/css-text/word-break/word-break-normal-km-000.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-transitions/properties-value-003.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-transitions/properties-value-implicit-001.html [ Pass ]
 crbug.com/591099 external/wpt/css/css-ui/text-overflow-010.html [ Pass ]
@@ -207,7 +206,6 @@
 crbug.com/591099 external/wpt/css/cssom-view/elementsFromPoint-inline-vrl-ltr.html [ Pass ]
 crbug.com/591099 external/wpt/css/cssom-view/elementsFromPoint-inline-vrl-rtl.html [ Pass ]
 crbug.com/591099 external/wpt/css/cssom-view/offsetTopLeftInline.html [ Pass ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-button-001.html [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-002.xhtml [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-writing-mode-011.html [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-writing-mode-012.html [ Pass ]
@@ -278,7 +276,7 @@
 crbug.com/591099 fast/css/css-properties-position-relative-as-parent-fixed.html [ Failure ]
 crbug.com/835484 fast/css/outline-narrowLine.html [ Failure ]
 crbug.com/855279 fast/css/text-overflow-ellipsis-vertical-hittest.html [ Pass ]
-crbug.com/591099 fast/css/transform-inline-style-remove.html [ Failure ]
+crbug.com/591099 fast/css/transform-inline-style-remove.html [ Failure Pass ]
 crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-under.html [ Failure ]
 crbug.com/591099 fast/dom/nodesFromRect/nodesFromRect-basic.html [ Failure ]
 crbug.com/591099 fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ]
@@ -286,8 +284,8 @@
 crbug.com/591099 fast/events/touch/compositor-touch-hit-rects.html [ Failure ]
 crbug.com/591099 fast/events/wheel/mainthread-touchpad-fling-latching.html [ Pass ]
 crbug.com/591099 fast/forms/textarea/basic-textareas-quirks.html [ Failure ]
-crbug.com/889721 fast/inline/continuation-outlines-with-layers.html [ Failure ]
-crbug.com/889721 fast/inline/continuation-outlines.html [ Failure ]
+crbug.com/889721 fast/inline/continuation-outlines-with-layers.html [ Failure Pass ]
+crbug.com/889721 fast/inline/continuation-outlines.html [ Failure Pass ]
 crbug.com/889721 fast/inline/outline-continuations.html [ Failure ]
 crbug.com/591099 fast/overflow/overflow-update-transform.html [ Failure ]
 crbug.com/591099 fast/replaced/replaced-breaking.html [ Failure Pass ]
@@ -315,7 +313,7 @@
 crbug.com/591099 media/controls/buttons-after-reset.html [ Failure Pass ]
 crbug.com/591099 media/controls/lazy-loaded-style.html [ Failure ]
 crbug.com/591099 paint/float/float-under-inline-self-painting-change.html [ Failure ]
-crbug.com/591099 paint/invalidation/compositing/repaint-via-layout-offset.html [ Failure ]
+crbug.com/591099 paint/invalidation/compositing/repaint-via-layout-offset.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/compositing/subpixel-offset-scaled-transform-composited.html [ Failure ]
 crbug.com/591099 paint/invalidation/flexbox/align-content-change-keeping-geometry.html [ Failure ]
 crbug.com/591099 paint/invalidation/flexbox/align-self-change-keeping-geometry-grid.html [ Failure ]
@@ -324,15 +322,15 @@
 crbug.com/591099 paint/invalidation/flexbox/justify-self-change-keeping-geometry.html [ Failure ]
 crbug.com/591099 paint/invalidation/flexbox/repaint-on-margin-change.html [ Failure ]
 crbug.com/591099 paint/invalidation/flexbox/scrollbars-changed.html [ Failure ]
-crbug.com/591099 paint/invalidation/outline/focus-ring-on-child-move.html [ Failure ]
+crbug.com/591099 paint/invalidation/outline/focus-ring-on-child-move.html [ Failure Pass ]
 crbug.com/835484 paint/invalidation/outline/inline-focus.html [ Failure ]
-crbug.com/591099 paint/invalidation/outline/outline-change-invalidation.html [ Failure ]
+crbug.com/591099 paint/invalidation/outline/outline-change-invalidation.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/overflow/opacity-change-on-overflow-float.html [ Failure ]
-crbug.com/591099 paint/invalidation/position/abspos-shift-image-incorrect-repaint.html [ Failure ]
+crbug.com/591099 paint/invalidation/position/abspos-shift-image-incorrect-repaint.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/position/intermediate-layout-position.html [ Failure ]
 crbug.com/714962 paint/invalidation/position/relative-positioned-movement-repaint.html [ Failure ]
 crbug.com/591099 paint/invalidation/scroll/repaint-composited-child-in-scrolled-container.html [ Failure ]
-crbug.com/591099 paint/invalidation/selection/japanese-rl-selection-clear.html [ Failure ]
+crbug.com/591099 paint/invalidation/selection/japanese-rl-selection-clear.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/svg/svg-background-partial-redraw.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/text-selection-update.svg [ Failure ]
 crbug.com/591099 paint/invalidation/svg/transform-focus-ring-repaint.html [ Failure ]
@@ -362,7 +360,7 @@
 crbug.com/591099 virtual/feature-policy-vibrate/ [ Skip ]
 crbug.com/591099 virtual/fractional_scrolling/fast/scrolling/fractional-scroll-offset-iframe-fixed-position.html [ Failure ]
 crbug.com/591099 virtual/fractional_scrolling_threaded/fast/scrolling/fractional-scroll-offset-iframe-fixed-position.html [ Failure ]
-crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-filter-all.html [ Failure ]
+crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-filter-all.html [ Failure Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-blending-color-over-image.html [ Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-blending-gradient-over-pattern.html [ Pass Timeout ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-with-overflowing-object-fit.html [ Failure ]
@@ -395,10 +393,10 @@
 crbug.com/591099 virtual/scroll_customization/ [ Skip ]
 crbug.com/591099 virtual/scroll_customization/fast/events/touch/compositor-touch-hit-rects.html [ Failure ]
 crbug.com/591099 virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-simple-success.html [ Pass ]
-crbug.com/591099 virtual/spv2/paint/invalidation/box/margin.html [ Failure Pass ]
+crbug.com/591099 virtual/composite-after-paint/paint/invalidation/box/margin.html [ Failure Pass ]
 crbug.com/591099 virtual/stable/ [ Skip ]
 crbug.com/591099 virtual/threaded/ [ Skip ]
-crbug.com/591099 virtual/user-activation-v2/fast/events/mouse-cursor.html [ Failure ]
+crbug.com/591099 virtual/user-activation-v2/fast/events/mouse-cursor.html [ Failure Pass ]
 crbug.com/591099 virtual/user-activation-v2/fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ]
 crbug.com/591099 virtual/user-activation-v2/fast/events/touch/compositor-touch-hit-rects.html [ Failure ]
 crbug.com/591099 virtual/video-surface-layer/media/controls/buttons-after-reset.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests
index d28dcd638..3d2aef70 100644
--- a/third_party/blink/web_tests/SlowTests
+++ b/third_party/blink/web_tests/SlowTests
@@ -213,7 +213,7 @@
 
 crbug.com/592183 external/wpt/webusb/usbDevice.https.html [ Slow ]
 
-crbug.com/594189 virtual/spv2/fast/overflow/lots-of-sibling-inline-boxes.html [ Slow ]
+crbug.com/594189 virtual/composite-after-paint/fast/overflow/lots-of-sibling-inline-boxes.html [ Slow ]
 
 crbug.com/614910 virtual/gpu-rasterization/images/color-profile-filter.html [ Slow ]
 
@@ -315,7 +315,7 @@
 # This test continues to fail as timeout on Win7(dbg)
 crbug.com/757292 [ Win Debug ] external/wpt/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html [ Slow ]
 
-# This page loads slow in real browser, and can timeout in SPv2 layout test.
+# This page loads slow in real browser, and can timeout in CompositeAfterPaint layout test.
 crbug.com/779366 fast/shapes/crash-allocating-very-large-raster-shape.html [ Slow ]
 
 crbug.com/787971 external/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.html [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index c804d2dd..48a1cbd 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -202,26 +202,26 @@
 #  display-lock
 # Some additional bugs that are caused by painting problems are also within this section.
 
-# Failures due to SPV2, that don't also fail without SPV2. DO NOT REBASELINE.
-# SPv2 paint properties are still being implemented.
+# Failures due to CompositeAfterPaint. DO NOT REBASELINE.
 #
-# These tests should not be rebaselined automatically, as our goal is to exactly match
-# existing tests. We have skipped the entire spv2 directory and are adding [ Pass ] lines
-# as we go. Please remove [ Pass ] lines instead of rebaselining these tests.
-crbug.com/537409 virtual/spv2/ [ Skip ]
+# These tests should not be rebaselined automatically, as our goal is to exactly
+# match existing tests. We have skipped the entire composite-after-paint
+# directory and are adding [ Pass ] lines as we go. Please remove [ Pass ] lines
+# instead of rebaselining these tests.
+crbug.com/537409 virtual/composite-after-paint/ [ Skip ]
 # End whitlelisted paint invalidation tests
-crbug.com/596780 virtual/spv2/compositing/framesets/composited-frame-alignment.html [ Pass ]
-crbug.com/596780 [ Mac ] virtual/spv2/compositing/geometry/outline-change.html [ Pass ]
-crbug.com/596780 [ Win ] virtual/spv2/compositing/geometry/outline-change.html [ Pass ]
+crbug.com/596780 virtual/composite-after-paint/compositing/framesets/composited-frame-alignment.html [ Pass ]
+crbug.com/596780 [ Mac ] virtual/composite-after-paint/compositing/geometry/outline-change.html [ Pass ]
+crbug.com/596780 [ Win ] virtual/composite-after-paint/compositing/geometry/outline-change.html [ Pass ]
 
 # Re-add this once it rebaselines.
-# crbug.com/600618 virtual/spv2/svg/custom/object-sizing-explicit-height.xhtml [ Pass ]
+# crbug.com/600618 virtual/composite-after-paint/svg/custom/object-sizing-explicit-height.xhtml [ Pass ]
 # SkiaBitLocker should avoid allocating huge offscreen buffer
-crbug.com/605812 [ Mac ] virtual/spv2/fast/overflow/overflow-height-float-not-removed-crash.html [ Skip ]
-crbug.com/605812 [ Mac ] virtual/spv2/fast/overflow/overflow-height-float-not-removed-crash2.html [ Skip ]
-crbug.com/619427 [ Mac ] virtual/spv2/fast/overflow/overflow-height-float-not-removed-crash3.html [ Pass Failure ]
-crbug.com/619427 [ Linux ] virtual/spv2/fast/overflow/overflow-height-float-not-removed-crash3.html [ Pass Failure ]
-# --- End SPV2 Tests --
+crbug.com/605812 [ Mac ] virtual/composite-after-paint/fast/overflow/overflow-height-float-not-removed-crash.html [ Skip ]
+crbug.com/605812 [ Mac ] virtual/composite-after-paint/fast/overflow/overflow-height-float-not-removed-crash2.html [ Skip ]
+crbug.com/619427 [ Mac ] virtual/composite-after-paint/fast/overflow/overflow-height-float-not-removed-crash3.html [ Pass Failure ]
+crbug.com/619427 [ Linux ] virtual/composite-after-paint/fast/overflow/overflow-height-float-not-removed-crash3.html [ Pass Failure ]
+# --- End CompositeAfterPaint Tests --
 
 # Slimming paint V1.75
 # Subpixel differences
@@ -231,7 +231,7 @@
 crbug.com/771643 compositing/overflow/nested-border-radius-clipping.html [ Failure ]
 crbug.com/771643 virtual/prefer_compositing_to_lcd_text/compositing/overflow/nested-border-radius-clipping.html [ Failure ]
 
-# Fails due to flaws in the SPv1 architecture. Can be fixed with SPv2.
+# Fails due to flaws in the SPv1 architecture. Can be fixed with composite-after-paint.
 crbug.com/862483 compositing/overflow/scrollbar-layer-placement-negative-z-index-child.html [ Failure ]
 crbug.com/862483 virtual/prefer_compositing_to_lcd_text/compositing/overflow/scrollbar-layer-placement-negative-z-index-child.html [ Failure ]
 
@@ -506,7 +506,6 @@
 crbug.com/881057 [ Mac ] external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-005.html [ Failure ]
 crbug.com/880802 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ruby-stacking-and-clipping-001.html [ Failure ]
 crbug.com/881057 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-stacking-context-001b.html [ Failure ]
-crbug.com/881057 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-button-001.html [ Failure ]
 crbug.com/863454 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-002.html [ Failure ]
 crbug.com/863454 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-003.html [ Failure ]
 
@@ -2137,7 +2136,7 @@
 crbug.com/626703 external/wpt/css/css-text/word-break/word-break-keep-all-003.html [ Failure ]
 crbug.com/626703 external/wpt/css/css-text/word-break/word-break-keep-all-004.xht [ Skip ]
 crbug.com/626703 [ Linux ] external/wpt/css/css-text/word-break/word-break-normal-bo-000.html [ Failure ]
-crbug.com/626703 external/wpt/css/css-text/word-break/word-break-normal-km-000.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-text/word-break/word-break-normal-km-000.html [ Failure ]
 crbug.com/626703 external/wpt/css/css-text/word-break/word-break-normal-my-000.html [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/css/css-text/word-break/word-break-normal-lo-000.html [ Failure ]
 crbug.com/626703 [ Win ] external/wpt/css/css-text/word-break/word-break-normal-lo-000.html [ Failure ]
@@ -4666,7 +4665,8 @@
 # Antialiasing error
 crbug.com/845973 virtual/display-compositor-pixel-dump/fast/canvas/display-compositor-pixel-dump/OffscreenCanvas-opaque-background-compositing.html  [ Pass Failure ]
 
-# Workaround crbug.com/817175 . Very difficult to fix with old-world compositing. Pass with SPv2.
+# Workaround crbug.com/817175 . Very difficult to fix with old-world compositing
+# but pass with CompositeAfterPaint.
 crbug.com/817175 compositing/overflow/clip-escaping-reverse-order-should-not-crash.html [ Failure ]
 crbug.com/817175 virtual/prefer_compositing_to_lcd_text/compositing/overflow/clip-escaping-reverse-order-should-not-crash.html [ Failure ]
 
@@ -5678,7 +5678,7 @@
 # See also crbug.com/907150
 crbug.com/667560 http/tests/devtools/console-cross-origin-iframe-logging.js [ Pass Failure Timeout ]
 crbug.com/907412 [ Mac10.13 ] external/wpt/domxpath/xml_xpath_runner.html [ Pass Timeout ]
-crbug.com/907481 [ Win10 ] virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid.html [ Failure ]
+crbug.com/907481 virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid.html [ Pass Failure ]
 
 #Sheriff 2018-11-22
 crbug.com/907736 http/tests/devtools/elements/elements-save-to-temp-var.js [ Timeout Pass ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index a1c17ecd..39368ef3 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -257,44 +257,44 @@
     "args": ["--enable-threaded-compositing"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "compositing",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "fast/block",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "fast/borders",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "fast/clip",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "fast/css",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "fast/overflow",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "paint",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
-    "prefix": "spv2",
+    "prefix": "composite-after-paint",
     "base": "svg",
-    "args": ["--enable-slimming-paint-v2"]
+    "args": ["--enable-blink-features=CompositeAfterPaint"]
   },
   {
     "prefix": "blink-gen-property-trees",
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
index 6823c99..c325c92 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
@@ -33887,6 +33887,18 @@
      {}
     ]
    ],
+   "css/css-break/block-end-aligned-abspos-with-overflow.html": [
+    [
+     "/css/css-break/block-end-aligned-abspos-with-overflow.html",
+     [
+      [
+       "/css/css-break/block-end-aligned-abspos-with-overflow-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-break/line-after-unbreakable-float-after-padding.html": [
     [
      "/css/css-break/line-after-unbreakable-float-after-padding.html",
@@ -93048,7 +93060,7 @@
      "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html",
      [
       [
-       "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-001-ref.html",
+       "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002-ref.html",
        "=="
       ]
      ],
@@ -123669,6 +123681,11 @@
      {}
     ]
    ],
+   "css/css-break/block-end-aligned-abspos-with-overflow-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/css-break/line-after-unbreakable-float-after-padding-ref.html": [
     [
      {}
@@ -154944,6 +154961,26 @@
      {}
     ]
    ],
+   "event-timing/idlharness.any-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "event-timing/idlharness.any.serviceworker-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "event-timing/idlharness.any.sharedworker-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "event-timing/idlharness.any.worker-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "event-timing/resources/event-timing-crossiframe-childframe.html": [
     [
      {}
@@ -169669,6 +169706,11 @@
      {}
     ]
    ],
+   "interfaces/event-timing.idl": [
+    [
+     {}
+    ]
+   ],
    "interfaces/feature-policy.idl": [
     [
      {}
@@ -203637,6 +203679,12 @@
      {}
     ]
    ],
+   "css/css-break/block-end-aligned-abspos.html": [
+    [
+     "/css/css-break/block-end-aligned-abspos.html",
+     {}
+    ]
+   ],
    "css/css-break/hit-test-inline-fragmentation-with-border-radius.html": [
     [
      "/css/css-break/hit-test-inline-fragmentation-with-border-radius.html",
@@ -208357,6 +208405,12 @@
      {}
     ]
    ],
+   "css/css-sizing/percentage-min-width.html": [
+    [
+     "/css/css-sizing/percentage-min-width.html",
+     {}
+    ]
+   ],
    "css/css-syntax/charset/page-utf16-css-bomless-utf16.html": [
     [
      "/css/css-syntax/charset/page-utf16-css-bomless-utf16.html",
@@ -227147,6 +227201,14 @@
      }
     ]
    ],
+   "event-timing/event-timing-retrieve-firstInput.html": [
+    [
+     "/event-timing/event-timing-retrieve-firstInput.html",
+     {
+      "testdriver": true
+     }
+    ]
+   ],
    "event-timing/event-timing-timingconditions.html": [
     [
      "/event-timing/event-timing-timingconditions.html",
@@ -227155,6 +227217,24 @@
      }
     ]
    ],
+   "event-timing/idlharness.any.js": [
+    [
+     "/event-timing/idlharness.any.html",
+     {}
+    ],
+    [
+     "/event-timing/idlharness.any.serviceworker.html",
+     {}
+    ],
+    [
+     "/event-timing/idlharness.any.sharedworker.html",
+     {}
+    ],
+    [
+     "/event-timing/idlharness.any.worker.html",
+     {}
+    ]
+   ],
    "eventsource/dedicated-worker/eventsource-close.htm": [
     [
      "/eventsource/dedicated-worker/eventsource-close.htm",
@@ -273661,6 +273741,12 @@
      {}
     ]
    ],
+   "trusted-types/GlobalEventHandlers-onclick.tentative.html": [
+    [
+     "/trusted-types/GlobalEventHandlers-onclick.tentative.html",
+     {}
+    ]
+   ],
    "trusted-types/HTMLElement-generic.tentative.html": [
     [
      "/trusted-types/HTMLElement-generic.tentative.html",
@@ -273691,6 +273777,42 @@
      {}
     ]
    ],
+   "trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html": [
+    [
+     "/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html",
+     {}
+    ]
+   ],
+   "trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html": [
+    [
+     "/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html",
+     {}
+    ]
+   ],
+   "trusted-types/TrustedTypePolicy-CSP.tentative.html": [
+    [
+     "/trusted-types/TrustedTypePolicy-CSP.tentative.html",
+     {}
+    ]
+   ],
+   "trusted-types/TrustedTypePolicy-createXXX.tentative.html": [
+    [
+     "/trusted-types/TrustedTypePolicy-createXXX.tentative.html",
+     {}
+    ]
+   ],
+   "trusted-types/TrustedTypePolicy-exposed.tentative.html": [
+    [
+     "/trusted-types/TrustedTypePolicy-exposed.tentative.html",
+     {}
+    ]
+   ],
+   "trusted-types/TrustedTypePolicy-name.tentative.html": [
+    [
+     "/trusted-types/TrustedTypePolicy-name.tentative.html",
+     {}
+    ]
+   ],
    "trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [
     [
      "/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html",
@@ -325204,6 +325326,18 @@
    "198e62f8c7d4e020e65dad6ecb7937204aaa8912",
    "support"
   ],
+  "css/css-break/block-end-aligned-abspos-with-overflow-ref.html": [
+   "a8470b09a7d67eb3929c0380eaa45779c2b558ad",
+   "support"
+  ],
+  "css/css-break/block-end-aligned-abspos-with-overflow.html": [
+   "9000c6351384be8cec767405f7f7aecaf2223173",
+   "reftest"
+  ],
+  "css/css-break/block-end-aligned-abspos.html": [
+   "c7acaa977b240ecde638e900d0fec7844cf2b965",
+   "testharness"
+  ],
   "css/css-break/break-before-always-001.xht": [
    "e2e7297d1532fba60d2074aa2701600dc7441742",
    "visual"
@@ -348128,6 +348262,10 @@
    "fa95069dbf0083b0dc7095d2bb3acf20a6ccf898",
    "reftest"
   ],
+  "css/css-sizing/percentage-min-width.html": [
+   "11c34eafc32812da1b4da1552afe08c231cd69db",
+   "testharness"
+  ],
   "css/css-sizing/whitespace-and-break.html": [
    "f3ea3764478488b949433daccddf710cd0a91006",
    "reftest"
@@ -376793,7 +376931,7 @@
    "support"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html": [
-   "eb791427c0c8e6716122bc7957ed5c68c80be52a",
+   "845290768acbe5b3bd81d4c78e4a4cf61fecc906",
    "reftest"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-001-ref.html": [
@@ -385845,7 +385983,7 @@
    "support"
   ],
   "event-timing/event-timing-bufferbeforeonload.html": [
-   "223f5ed0fb5ce643d9f121f9af136e88a5d9e34d",
+   "22fc4d547b90da989a292a44535c73d761f61293",
    "testharness"
   ],
   "event-timing/event-timing-crossiframe.html": [
@@ -385861,11 +385999,11 @@
    "testharness"
   ],
   "event-timing/event-timing-onloadthenobserve-firstInput.html": [
-   "16f48411f9f12f17407c29098b97ce5479daed0f",
+   "22ac4cb45e947ca3555fe57fbde03746397bfcb2",
    "testharness"
   ],
   "event-timing/event-timing-onloadthenobserve.html": [
-   "7dc113247cd8cd7ffe452edeaffcc07ba67e516e",
+   "07cc236cb47258bce490d2b18a29863922617ba1",
    "testharness"
   ],
   "event-timing/event-timing-only-observe-firstInput.html": [
@@ -385876,10 +386014,34 @@
    "f38761b469da693f2c14a62c96a4671098cbd4e5",
    "testharness"
   ],
+  "event-timing/event-timing-retrieve-firstInput.html": [
+   "ded00e61c75dfb29a200082b0f9d477c09297fd4",
+   "testharness"
+  ],
   "event-timing/event-timing-timingconditions.html": [
    "1e5dd2fd65cde654f9223ee3a9180a5adfeb4a57",
    "testharness"
   ],
+  "event-timing/idlharness.any-expected.txt": [
+   "1167549bddda93e3bc0ee83677044b979b4d17b1",
+   "support"
+  ],
+  "event-timing/idlharness.any.js": [
+   "5ee98548fb6f2209b8c4b5346830c0d723e68170",
+   "testharness"
+  ],
+  "event-timing/idlharness.any.serviceworker-expected.txt": [
+   "d4d084ce5e594430efca9427a3840ab410568375",
+   "support"
+  ],
+  "event-timing/idlharness.any.sharedworker-expected.txt": [
+   "d4d084ce5e594430efca9427a3840ab410568375",
+   "support"
+  ],
+  "event-timing/idlharness.any.worker-expected.txt": [
+   "d4d084ce5e594430efca9427a3840ab410568375",
+   "support"
+  ],
   "event-timing/resources/event-timing-crossiframe-childframe.html": [
    "7491fd88cb3c8cbfa849620e3690e4a42e454b9e",
    "support"
@@ -409572,6 +409734,10 @@
    "71e80c717b2becc9a005e471553910a26fd0a326",
    "support"
   ],
+  "interfaces/event-timing.idl": [
+   "0e12737bcc6e75d643abdd0e6bc44d44bcd8e6af",
+   "support"
+  ],
   "interfaces/feature-policy.idl": [
    "c09cc33ce14daefd44db0a84c1a9b39264e856a1",
    "support"
@@ -409873,7 +410039,7 @@
    "support"
   ],
   "interfaces/web-nfc.idl": [
-   "699a31623a335641b8b8be21040f7f80df6555fa",
+   "d54773be499366806bbd93c7fc119ff7a3a2ff72",
    "support"
   ],
   "interfaces/web-share.idl": [
@@ -409925,7 +410091,7 @@
    "support"
   ],
   "interfaces/webxr.idl": [
-   "5561369931f749224f2dcf87d5fc921af64d82b2",
+   "7f7b43c222bd3bc4dcab0c618402ff8ff61ae470",
    "support"
   ],
   "interfaces/worklets.idl": [
@@ -440196,6 +440362,10 @@
    "80128cfbf0ebce7d878dd349fc8838b2a6469a16",
    "testharness"
   ],
+  "trusted-types/GlobalEventHandlers-onclick.tentative.html": [
+   "6e8c560ebd1dafb4cc2b4509b2340790dade49c2",
+   "testharness"
+  ],
   "trusted-types/HTMLElement-generic.tentative.html": [
    "d1fafa70cd2768e7b98b5eab6da9f5eb77175fbc",
    "testharness"
@@ -440224,6 +440394,30 @@
    "3a880a53778acb165fd5d957eeaca22685baf2b5",
    "testharness"
   ],
+  "trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html": [
+   "2dfec26f5a0432e19fdbd139dadd3908b8acac3f",
+   "testharness"
+  ],
+  "trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html": [
+   "22b87965614fd16d280d5a97f9150d07ccca3d3e",
+   "testharness"
+  ],
+  "trusted-types/TrustedTypePolicy-CSP.tentative.html": [
+   "1293493ec1f7780b297d2040274150f0aba32adc",
+   "testharness"
+  ],
+  "trusted-types/TrustedTypePolicy-createXXX.tentative.html": [
+   "6a0151ad9bcf7d02b6a98532ba53db509e086f83",
+   "testharness"
+  ],
+  "trusted-types/TrustedTypePolicy-exposed.tentative.html": [
+   "e671c6fb61dcb58392c9fb0ac3f4fb37a67698bf",
+   "testharness"
+  ],
+  "trusted-types/TrustedTypePolicy-name.tentative.html": [
+   "c121fe4cab50ab52a7159184bfa012e85d555768",
+   "testharness"
+  ],
   "trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [
    "a162d84cd820051d6c5868c35b58cd347b0026e5",
    "testharness"
@@ -440237,7 +440431,7 @@
    "testharness"
   ],
   "trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html": [
-   "9daf20ec1869919603965942fa6a4c99925ac8e9",
+   "1293493ec1f7780b297d2040274150f0aba32adc",
    "testharness"
   ],
   "trusted-types/TrustedTypePolicyFactory-createPolicy-defaultTests.tentative.html": [
@@ -440245,7 +440439,7 @@
    "testharness"
   ],
   "trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html": [
-   "af6e04941c3b6206602bc7f547a3b0c9ef555a11",
+   "137d0f54c8228645aaf184cc64654e1d66ffbaa6",
    "testharness"
   ],
   "trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html": [
@@ -440285,7 +440479,7 @@
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Document-write.tentative.html": [
-   "0d9ff61c9b305e193f96cebe18810d597aa75158",
+   "5fa0b194df60c28dad98da828f5d22694d966e0f",
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html": [
@@ -440301,7 +440495,7 @@
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html": [
-   "646997de472ec98491d2d17fc65aeb77c999c03b",
+   "4d06f014f2934a218b9e54be40fa14b95e0b51a7",
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html": [
@@ -440317,15 +440511,15 @@
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Location-assign.tentative.html": [
-   "4ad4af9df5ae86b0bc2ab82d3b5ae062b88d70f6",
+   "4c295ffa284acb21436f06ecbf06ac4073365efe",
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Location-href.tentative.html": [
-   "fd0a4e5ea0e53c5b85f0bfb6d092c4cd63ceb790",
+   "86bce7994d6e9e43bddc590519126f4ee266cf06",
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Location-replace.tentative.html": [
-   "9b8cabe58359e664e1ad9d8c43f604f88c7b3784",
+   "aa3af64e12b1d2b296e8dedd40b9cef749b1431c",
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html": [
@@ -440341,7 +440535,7 @@
    "testharness"
   ],
   "trusted-types/support/helper.sub.js": [
-   "9ad605975555df539e6444d3b8935197c7925aef",
+   "bae9d2dc7aa963271bdcc6ae72e4064f10ab8d05",
    "support"
   ],
   "trusted-types/support/worker.js": [
@@ -449669,7 +449863,7 @@
    "support"
   ],
   "webxr/idlharness.https.window-expected.txt": [
-   "5a81cea93e4b73e6b7c4ee064fb2729c3a55e0cc",
+   "70f7fa67447af7b96878d02f4d7b4dd388dc7e3c",
    "support"
   ],
   "webxr/idlharness.https.window.js": [
diff --git a/third_party/blink/web_tests/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html b/third_party/blink/web_tests/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html
index eb79142..8452907 100644
--- a/third_party/blink/web_tests/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html
+++ b/third_party/blink/web_tests/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html
@@ -6,7 +6,7 @@
   <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
   <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-layout">
   <link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#valdef-align-items-baseline">
-  <link rel="match" href="contain-layout-suppress-baseline-001-ref.html">
+  <link rel="match" href="contain-layout-suppress-baseline-002-ref.html">
   <style>
   .flexBaselineCheck {
     display: flex;
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/event-timing-bufferbeforeonload.html b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-bufferbeforeonload.html
index 223f5ed0..22fc4d5 100644
--- a/third_party/blink/web_tests/external/wpt/event-timing/event-timing-bufferbeforeonload.html
+++ b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-bufferbeforeonload.html
@@ -65,12 +65,22 @@
   async_test(function(t) {
     clickTimeMin = performance.now();
     clickAndBlockMain('button');
+    // Use a dummy observer to know when both clicks have been dispatched.
+    const observerPromise = new Promise((resolve, reject) => {
+      let entryCount = 0;
+      new PerformanceObserver(entryList => {
+        entryCount += entryList.getEntries().length;
+        if (entryCount >= 2)
+          resolve();
+      }).observe({ entryTypes: ['event'] });
+    });
     // Event handlers will be dispatched asynchronously, so this will be called
     // before processing begins.
     processingStartMin = performance.now();
     on_event(window, 'load', e => {
       onloadStart = performance.now();
-      clickAndBlockMain('button').then(wait).then(
+      const clickPromise = clickAndBlockMain('button');
+      Promise.all([observerPromise, clickPromise]).then(
           t.step_func_done(validateEntries));
     });
   }, "Event Timing: click, onload.");
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve-firstInput.html b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve-firstInput.html
index 16f48411..22ac4cb4 100644
--- a/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve-firstInput.html
+++ b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve-firstInput.html
@@ -31,8 +31,8 @@
         if (numEventsObserved >= 2) {
           assert_equals(performance.getEntriesByType('event').length, 0,
             "There should be no buffered event entries.");
-          assert_equals(performance.getEntriesByType('firstInput').length, 0,
-            "There should be no buffered firstInput entries.");
+          assert_equals(performance.getEntriesByType('firstInput').length, 1,
+            "There should be a buffered firstInput entry.");
           // There should be 2 event entries and one firstInput entry.
           assert_equals(numEventsObserved, 2,
             "There should be 2 observed event entries.");
@@ -42,8 +42,8 @@
         }
     })).observe({ entryTypes: ['event', 'firstInput'] });
     on_event(window, 'load', () => {
-      clickAndBlockMain('button').then(wait).then(() => {
-        clickAndBlockMain('button').then(wait);
+      clickAndBlockMain('button').then(() => {
+        clickAndBlockMain('button');
       });
     });
   },
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve.html b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve.html
index 7dc1132..07cc236 100644
--- a/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve.html
+++ b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-onloadthenobserve.html
@@ -61,16 +61,22 @@
      (Dispatch and Process Click 2 (not buffered, observed))
   */
   async_test(function(t) {
-      on_event(window, 'load', () => {
-        clickAndBlockMain('button').then(() => {
-          startObserver(t);
-          clickAndBlockMain('button').then(wait);
-          processingStartMin = performance.now();
-        });
+    // Use a dummy observer to know when the first click has been dispatched.
+    const observerPromise = new Promise((resolve, reject) => {
+      new PerformanceObserver((entryList, observer) => {
+        resolve();
+        observer.disconnect();
+      }).observe({ entryTypes: ['event'] });
+    });
+    on_event(window, 'load', () => {
+      const clickPromise = clickAndBlockMain('button');
+      Promise.all([observerPromise, clickPromise]).then(() => {
+        startObserver(t);
+        clickAndBlockMain('button');
+        processingStartMin = performance.now();
       });
-    },
-    "Event Timing: onload, click, observer, click."
-  );
+    });
+  },"Event Timing: onload, click, observer, click.");
 
 </script>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/event-timing-retrieve-firstInput.html b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-retrieve-firstInput.html
new file mode 100644
index 0000000..ded00e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/event-timing/event-timing-retrieve-firstInput.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8 />
+<title>Event Timing: firstInput entry should be buffered even without observer</title>
+<button id='button'>Generate a 'click' event</button>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+
+<script src=resources/event-timing-support.js></script>
+
+<script>
+  async_test(function(t) {
+    function testEntries() {
+      // First callback is not ensured to have the entry.
+      if (performance.getEntriesByType('firstInput').length === 0) {
+        t.step_timeout(testEntries, 10);
+        return;
+      }
+      assert_equals(performance.getEntriesByType('firstInput').length, 1,
+        "There should be a firstInput entry in the performance timeline");
+      const entry = performance.getEntriesByType('firstInput')[0];
+      assert_equals(entry.name, 'click');
+      assert_equals(entry.entryType, 'firstInput');
+      assert_greater_than(entry.duration, 50,
+        "The first input was a long one.");
+      t.done();
+    }
+    clickAndBlockMain('button').then(wait).then(t.step_func(testEntries));
+  },
+  "Event Timing: check firstInput after onload, observer, click, click."
+  );
+</script>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any-expected.txt
new file mode 100644
index 0000000..1167549
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any-expected.txt
@@ -0,0 +1,22 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Performance: original interface defined
+PASS PerformanceEventTiming interface: existence and properties of interface object
+PASS PerformanceEventTiming interface object length
+PASS PerformanceEventTiming interface object name
+PASS PerformanceEventTiming interface: existence and properties of interface prototype object
+PASS PerformanceEventTiming interface: existence and properties of interface prototype object's "constructor" property
+PASS PerformanceEventTiming interface: existence and properties of interface prototype object's @@unscopables property
+PASS PerformanceEventTiming interface: attribute processingStart
+PASS PerformanceEventTiming interface: attribute processingEnd
+PASS PerformanceEventTiming interface: attribute cancelable
+FAIL EventCounts interface: existence and properties of interface object assert_own_property: self does not have own property "EventCounts" expected property "EventCounts" missing
+FAIL EventCounts interface object length assert_own_property: self does not have own property "EventCounts" expected property "EventCounts" missing
+FAIL EventCounts interface object name assert_own_property: self does not have own property "EventCounts" expected property "EventCounts" missing
+FAIL EventCounts interface: existence and properties of interface prototype object assert_own_property: self does not have own property "EventCounts" expected property "EventCounts" missing
+FAIL EventCounts interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "EventCounts" expected property "EventCounts" missing
+FAIL EventCounts interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "EventCounts" expected property "EventCounts" missing
+FAIL Performance interface: attribute eventCounts assert_true: The prototype object must have a property "eventCounts" expected true got false
+FAIL Performance interface: performance must inherit property "eventCounts" with the proper type assert_inherits: property "eventCounts" not found in prototype chain
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.js b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.js
new file mode 100644
index 0000000..5ee98548
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.js
@@ -0,0 +1,18 @@
+// META: global=window,worker
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+// https://wicg.github.io/event-timing/
+
+'use strict';
+
+idl_test(
+  ['event-timing'],
+  ['performance-timeline', 'hr-time', 'dom'],
+  idl_array => {
+    idl_array.add_objects({
+      Performance: ['performance'],
+      // PerformanceEventTiming: [ TODO ]
+    });
+  }
+);
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.serviceworker-expected.txt
new file mode 100644
index 0000000..d4d084c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.serviceworker-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Performance: original interface defined
+PASS PerformanceEventTiming interface: existence and properties of interface object
+PASS EventCounts interface: existence and properties of interface object
+FAIL Performance interface: attribute eventCounts assert_true: The prototype object must have a property "eventCounts" expected true got false
+FAIL Performance interface: performance must inherit property "eventCounts" with the proper type assert_inherits: property "eventCounts" not found in prototype chain
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.sharedworker-expected.txt
new file mode 100644
index 0000000..d4d084c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.sharedworker-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Performance: original interface defined
+PASS PerformanceEventTiming interface: existence and properties of interface object
+PASS EventCounts interface: existence and properties of interface object
+FAIL Performance interface: attribute eventCounts assert_true: The prototype object must have a property "eventCounts" expected true got false
+FAIL Performance interface: performance must inherit property "eventCounts" with the proper type assert_inherits: property "eventCounts" not found in prototype chain
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.worker-expected.txt
new file mode 100644
index 0000000..d4d084c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/event-timing/idlharness.any.worker-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Performance: original interface defined
+PASS PerformanceEventTiming interface: existence and properties of interface object
+PASS EventCounts interface: existence and properties of interface object
+FAIL Performance interface: attribute eventCounts assert_true: The prototype object must have a property "eventCounts" expected true got false
+FAIL Performance interface: performance must inherit property "eventCounts" with the proper type assert_inherits: property "eventCounts" not found in prototype chain
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/event-timing.idl b/third_party/blink/web_tests/external/wpt/interfaces/event-timing.idl
new file mode 100644
index 0000000..0e12737b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/interfaces/event-timing.idl
@@ -0,0 +1,18 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Event Timing API (https://wicg.github.io/event-timing/)
+
+interface PerformanceEventTiming : PerformanceEntry {
+    readonly attribute DOMHighResTimeStamp processingStart;
+    readonly attribute DOMHighResTimeStamp processingEnd;
+    readonly attribute boolean cancelable;
+};
+
+interface EventCounts {
+    readonly maplike<DOMString, unsigned long>;
+};
+
+partial interface Performance {
+    readonly attribute EventCounts eventCounts;
+};
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
index 699a316..d54773be 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
@@ -28,12 +28,12 @@
   [SecureContext, SameObject] readonly attribute NFC nfc;
 };
 
-typedef (DOMString or ArrayBuffer or NFCMessage) NFCPushMessage;
+typedef (DOMString or ArrayBuffer or NFCMessage) NFCMessageSource;
 
 [SecureContext]
 interface NFC {
-  Promise<void> push(NFCPushMessage message, optional NFCPushOptions options);
-  Promise<long> watch(MessageCallback callback, optional NFCWatchOptions options);
+  Promise<void> push(NFCMessageSource message, optional NFCPushOptions options);
+  Promise<void> watch(MessageCallback callback, optional NFCWatchOptions options);
 };
 
 callback MessageCallback = void (NFCMessage message);
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
index 556136993..7f7b43c 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
@@ -45,7 +45,7 @@
   attribute XRLayer baseLayer;
 
   // Methods
-  Promise<XRFrameOfReference> requestFrameOfReference(XRFrameOfReferenceType type, optional XRFrameOfReferenceOptions options);
+  Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceType type, optional XRReferenceSpaceOptions options);
 
   FrozenArray<XRInputSource> getInputSources();
 
@@ -57,7 +57,6 @@
   // Events
   attribute EventHandler onblur;
   attribute EventHandler onfocus;
-  attribute EventHandler onresetpose;
   attribute EventHandler onend;
   attribute EventHandler onselect;
   attribute EventHandler oninputsourceschange;
@@ -70,34 +69,51 @@
 [SecureContext, Exposed=Window] interface XRFrame {
   readonly attribute XRSession session;
 
-  XRViewerPose? getViewerPose(XRFrameOfReference frameOfRef);
-  XRInputPose? getInputPose(XRInputSource inputSource, XRFrameOfReference frameOfRef);
+  XRViewerPose? getViewerPose(optional XRReferenceSpace referenceSpace);
+  XRInputPose? getInputPose(XRInputSource inputSource, optional XRReferenceSpace referenceSpace);
 };
 
-[SecureContext, Exposed=Window] interface XRCoordinateSystem : EventTarget {
-  Float32Array? getTransformTo(XRCoordinateSystem other);
+[SecureContext, Exposed=Window] interface XRSpace : EventTarget {
+  Float32Array? getTransformTo(XRSpace other);
 };
 
-enum XRFrameOfReferenceType {
-  "head-model",
+enum XRReferenceSpaceType {
+  "stationary",
+  "bounded",
+  "unbounded"
+};
+
+dictionary XRReferenceSpaceOptions {
+  required XRReferenceSpaceType type;
+};
+
+[SecureContext, Exposed=Window] interface XRReferenceSpace : XRSpace {
+  attribute EventHandler onreset;
+};
+
+enum XRStationaryReferenceSpaceSubtype {
   "eye-level",
-  "stage",
+  "floor-level",
+  "position-disabled"
 };
 
-dictionary XRFrameOfReferenceOptions {
-  boolean disableStageEmulation = false;
-  double stageEmulationHeight = 0.0;
+dictionary XRStationaryReferenceSpaceOptions : XRReferenceSpaceOptions {
+  required XRStationaryReferenceSpaceSubtype subtype;
 };
 
-[SecureContext, Exposed=Window] interface XRFrameOfReference : XRCoordinateSystem {
-  readonly attribute XRStageBounds? bounds;
-  readonly attribute double emulatedHeight;
-
-  attribute EventHandler onboundschange;
+[SecureContext, Exposed=Window]
+interface XRStationaryReferenceSpace : XRReferenceSpace {
+  readonly attribute XRStationaryReferenceSpaceSubtype subtype;
 };
 
-[SecureContext, Exposed=Window] interface XRStageBounds {
-  readonly attribute FrozenArray<DOMPointReadOnly> geometry;
+[SecureContext, Exposed=Window]
+interface XRBoundedReferenceSpace : XRReferenceSpace {
+  readonly attribute FrozenArray<DOMPointReadOnly> boundsGeometry;
+};
+
+[SecureContext, Exposed=Window]
+
+interface XRUnboundedReferenceSpace : XRReferenceSpace {
 };
 
 enum XREye {
@@ -224,11 +240,13 @@
   required XRInputSource inputSource;
 };
 
-[SecureContext, Exposed=Window, Constructor(DOMString type, XRCoordinateSystemEventInit eventInitDict)]
-interface XRCoordinateSystemEvent : Event {
-  readonly attribute XRCoordinateSystem coordinateSystem;
+[SecureContext, Exposed=Window, Constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict)]
+interface XRReferenceSpaceEvent : Event {
+  readonly attribute XRReferenceSpace referenceSpace;
+  readonly attribute Float32Array? transformMatrix;
 };
 
-dictionary XRCoordinateSystemEventInit : EventInit {
-  required XRCoordinateSystem coordinateSystem;
+dictionary XRReferenceSpaceEventInit : EventInit {
+  required XRReferenceSpace referenceSpace;
+  Float32Array transformMatrix;
 };
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/GlobalEventHandlers-onclick.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/GlobalEventHandlers-onclick.tentative.html
new file mode 100644
index 0000000..6e8c560
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/GlobalEventHandlers-onclick.tentative.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<div id="container"></div>
+<script>
+var container = document.querySelector('#container');
+
+// Trusted Type assignments do not throw.
+async_test(t => {
+  window.onclickTest = t.step_func_done();
+  let policy = createScript_policy(window, 'onclick');
+  let script = policy.createScript("window.onclickTest();");
+
+  let el = document.createElement('a');
+  el.setAttribute('onclick', script);
+  container.appendChild(el);
+  el.click();
+}, "a.onclick assigned via policy (successful Script transformation).");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html
new file mode 100644
index 0000000..2dfec26
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js" ></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types">
+<body>
+<script>
+  // No name given test
+  test(t => {
+    assert_throws(new TypeError(),
+      () => window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } ),
+      "createPolicy with an empty trusted-types CSP directive");
+  }, "No name list given - policy creation fails.");
+</script>
+
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html
new file mode 100644
index 0000000..22b8796
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js" ></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<script>
+  test(t => {
+    let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
+    assert_equals(policy.name, 'SomeName');
+  }, "CSP supports wildcards.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP.tentative.html
new file mode 100644
index 0000000..1293493
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-CSP.tentative.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js" ></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types SomeName JustOneMoreName">
+<body>
+<script>
+  // Whitelisted name test
+  test(t => {
+    let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
+    assert_equals(policy.name, 'SomeName');
+  }, "Whitelisted policy creation works.");
+
+  // Another whitelisted name test
+  test(t => {
+    let policy = window.TrustedTypes.createPolicy('JustOneMoreName', { createHTML: s => s } );
+    assert_equals(policy.name, 'JustOneMoreName');
+  }, "Another whitelisted policy creation works.");
+
+  // Non-whitelisted names test
+  test(t => {
+    assert_throws(new TypeError(), _ => {
+     window.TrustedTypes.createPolicy('SomeOtherName', { createURL: s => s } );
+    });
+  }, "Non-whitelisted policy creation throws.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-createXXX.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-createXXX.tentative.html
new file mode 100644
index 0000000..6a0151a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-createXXX.tentative.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js" ></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<script>
+  test(t => {
+    const p1 = TrustedTypes.createPolicy("policyHTMLAndScript", {
+      createHTML: s => s,
+      createScript: s => s
+    });
+    assert_throws(new TypeError(), _ => { p1.createScriptURL("foo"); });
+    assert_throws(new TypeError(), _ => { p1.createURL("foo"); });
+
+    const p2 = TrustedTypes.createPolicy("policyURLAndScriptURL", {
+      createURL: s => s,
+      createScriptURL: s => s
+    });
+    assert_throws(new TypeError(), _ => { p2.createHTML("foo"); });
+    assert_throws(new TypeError(), _ => { p2.createScript("foo"); });
+  }, "calling undefined callbacks throws");
+
+  test(t => {
+    const noopPolicy = {
+      createHTML: (s) => s,
+      createScriptURL: (s) => s,
+      createURL: (s) => s,
+      createScript: (s) => s,
+    };
+    policy = TrustedTypes.createPolicy(Math.random(), noopPolicy, true);
+    let el = document.createElement("div");
+
+    el.title = policy.createHTML(INPUTS.URL);
+    assert_equals(el.title, INPUTS.URL);
+
+    el.title = policy.createURL(INPUTS.HTML);
+    assert_equals(el.title, "");
+  }, "Attributes without type constraints will work as before.");
+
+  test(t => {
+    const policy = TrustedTypes.createPolicy("nullpolicy", null);
+    assert_throws(new TypeError(), _ => { policy.createScriptURL("foo"); });
+    assert_throws(new TypeError(), _ => { policy.createURL("foo"); });
+    assert_throws(new TypeError(), _ => { policy.createHTML("foo"); });
+    assert_throws(new TypeError(), _ => { policy.createScript("foo"); });
+  }, "TrustedTypes.createPolicy(.., null) creates empty policy.");
+
+
+  // testCases contains a list of policy functions and expected results (when
+  // called with a given default argument). They also use various helper
+  // variables (declared just below) to test side effects or interactions of
+  // global  vars/functions with policy callbacks.
+  let aGlobalVarForSideEffectTesting = "global";
+  var aGlobalObject = { "foo": "well," };
+  function aGlobalFunction(s) { return this.foo + " " + s; }
+  function anotherGlobalFunction(s) { return s + "#" + this.foo; }
+  var foo = "a global var named foo";
+
+  const stringTestCases = [
+    [ s => s, "whatever" ],
+    [ s => null, "null" ],
+    [ s => "well, " + s, "well, whatever" ],
+    [ s => { throw new Error() }, new Error() ],
+    [ s => { aGlobalVarForSideEffectTesting = s; return s }, "whatever" ],
+    [ s => aGlobalVarForSideEffectTesting + s, "whateverwhatever" ],
+    [ aGlobalFunction.bind(aGlobalObject), "well, whatever" ],
+    [ s => aGlobalFunction(s), "a global var named foo whatever" ],
+  ];
+
+  const urlTestCases = [
+    [ s => s, INPUTS.SCRIPTURL ],
+    [ s => null, "" ],
+    [ s => s + "#duck", INPUTS.SCRIPTURL + "#duck" ],
+    [ s => { throw new Error() }, new Error() ],
+    [ s => s + "#" + aGlobalVarForSideEffectTesting,
+      INPUTS.SCRIPTURL + "#global" ],
+    [ anotherGlobalFunction.bind(aGlobalObject), INPUTS.SCRIPTURL + "#well," ],
+    [ s => anotherGlobalFunction(s),
+      INPUTS.SCRIPTURL + "#a%20global%20var%20named%20foo" ],
+  ];
+
+  function policyBuilder(trustedMethodName, trustedType, defaultArg) {
+    return function(name, fn) {
+      let options = {};
+      options[trustedMethodName] = fn;
+      let policy = window.TrustedTypes.createPolicy(name, options);
+      let result = policy[trustedMethodName](defaultArg);
+      assert_true(result instanceof trustedType);
+      return result;
+    }
+  }
+
+  const testCases = [
+    [TrustedHTML, "createHTML", "whatever", stringTestCases],
+    [TrustedScript, "createScript", "whatever", stringTestCases],
+    [TrustedURL, "createURL", INPUTS.SCRIPTURL, urlTestCases],
+    [TrustedScriptURL, "createScriptURL", INPUTS.SCRIPTURL, urlTestCases],
+  ];
+
+  // Iterate over all trusted types, iterate over all test cases.
+  // For each, build the suitable policy and check the result.
+  for (let [trusted_class, trusted_method, default_arg, test_cases] of testCases) {
+    aGlobalVarForSideEffectTesting = "global";
+    let builder = policyBuilder(trusted_method, trusted_class, default_arg);
+    for (let [index, [policy_fn, value]] of test_cases.entries()) {
+      let subtest_name = "TestPolicy" + trusted_class.name + index;
+      test(t => {
+        if (value instanceof Error) {
+          assert_throws(value, () => builder(subtest_name, policy_fn));
+        } else {
+          assert_equals("" + builder(subtest_name, policy_fn), value);
+        }
+      }, subtest_name + " (" + trusted_class.name + ": " +
+           policy_fn.toString() + ")");
+    }
+  }
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-exposed.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-exposed.tentative.html
new file mode 100644
index 0000000..e671c6f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-exposed.tentative.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js" ></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<script>
+  // Not exposed policy test
+  test(t => {
+    let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
+    assert_equals(window.TrustedTypes.getExposedPolicy('SomeName'), null);
+  }, "Null is returned when policy is not exposed - by default");
+
+  // Non-existent policy test
+  test(t => {
+    assert_equals(window.TrustedTypes.getExposedPolicy('JustAName'), null);
+  }, "Null is returned when policy is non-existent.");
+
+  // Exposed policy test
+  test(t => {
+    let policy = window.TrustedTypes.createPolicy('SomeOtherName', { createHTML: s => s }, true );
+    assert_equals(window.TrustedTypes.getExposedPolicy('SomeOtherName'), policy);
+  }, "Policy is returned when exposed == true.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-name.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-name.tentative.html
new file mode 100644
index 0000000..c121fe4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicy-name.tentative.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js" ></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<script>
+  // Policy name test
+  test(t => {
+    let policy = TrustedTypes.createPolicy('hidden', { createHTML: s => s }, false );
+    assert_true(policy instanceof TrustedTypePolicy);
+    assert_equals(policy.name, 'hidden');
+  }, "policy.name = name");
+
+  // Duplicate names test
+  test(t => {
+    assert_throws(new TypeError(), _ => {
+      TrustedTypes.createPolicy('hidden', { createURL: s => s } );
+    });
+  }, "duplicate policy name attempt throws");
+
+  // Retrieve policy names tests
+  test(t => {
+    let policy = TrustedTypes.createPolicy('exposed', { createURL: s => s }, true );
+    let names = TrustedTypes.getPolicyNames();
+    assert_equals(names.length, 2);
+    assert_true(names.includes('hidden'));
+    assert_true(names.includes('exposed'));
+  }, "getPolicyNames returns all policy names");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
index 9daf20e..1293493 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
@@ -2,23 +2,26 @@
 <script src="/resources/testharness.js" ></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="support/helper.sub.js"></script>
+
 <meta http-equiv="Content-Security-Policy" content="trusted-types SomeName JustOneMoreName">
 <body>
 <script>
-  //Whitelisted name test
+  // Whitelisted name test
   test(t => {
     let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
     assert_equals(policy.name, 'SomeName');
-  }, "Whitelisted policy creation works");
-  //Another whitelisted name test
+  }, "Whitelisted policy creation works.");
+
+  // Another whitelisted name test
   test(t => {
     let policy = window.TrustedTypes.createPolicy('JustOneMoreName', { createHTML: s => s } );
     assert_equals(policy.name, 'JustOneMoreName');
-  }, "Another whitelisted policy creation works");
-  //Non-whitelisted names test
+  }, "Another whitelisted policy creation works.");
+
+  // Non-whitelisted names test
   test(t => {
     assert_throws(new TypeError(), _ => {
      window.TrustedTypes.createPolicy('SomeOtherName', { createURL: s => s } );
     });
-  }, "Non-whitelisted policy creation throws");
+  }, "Non-whitelisted policy creation throws.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html
index af6e0494..137d0f54 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html
@@ -2,23 +2,25 @@
 <script src="/resources/testharness.js" ></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
 <body>
 <script>
-  //Not exposed policy test
+  // Not exposed policy test
   test(t => {
     let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
     assert_equals(window.TrustedTypes.getExposedPolicy('SomeName'), null);
-  }, "Null is returned when policy is not exposed");
+  }, "Null is returned when policy is not exposed - by default");
 
-  //Non-existent policy test
+  // Non-existent policy test
   test(t => {
     let policy = window.TrustedTypes.createPolicy('SomeOtherName', { createHTML: s => s } );
     assert_equals(window.TrustedTypes.getExposedPolicy('JustAName'), null);
-  }, "Null is returned when policy is non-existent");
+  }, "Null is returned when policy is non-existent.");
 
-  //Exposed policy test
+  // Exposed policy test
   test(t => {
     let policy = window.TrustedTypes.createPolicy('EvenSomeOtherName', { createHTML: s => s }, true );
     assert_equals(window.TrustedTypes.getExposedPolicy('EvenSomeOtherName'), policy);
-  }, "Policy is returned when exposed == true");
+  }, "Policy is returned when exposed == true.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Document-write.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Document-write.tentative.html
index 0d9ff61..5fa0b19 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Document-write.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Document-write.tentative.html
@@ -9,8 +9,9 @@
 </head>
 <body>
 <script>
-  // TrustedHTML assignments do not throw.
+  // TrustedURL assignments do not throw.
   test(t => {
+    document.body.innerText = '';
     let p = createHTML_policy(window, 1);
     let html = p.createHTML(INPUTS.HTML);
     document.write(html);
@@ -19,15 +20,19 @@
 
   // String assignments throw.
   test(t => {
+    const old = document.body.innerText;
     assert_throws(new TypeError(), _ => {
       document.write('A string');
     });
+    assert_equals(document.body.innerText, old);
   }, "`document.write(string)` throws");
 
   // Null assignment throws.
   test(t => {
+    const old = document.body.innerText;
     assert_throws(new TypeError(), _ => {
       document.write(null);
     });
+    assert_equals(document.body.innerText, old);
   }, "`document.write(null)` throws");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
index 646997d..4d06f01 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
@@ -104,6 +104,18 @@
   }, "a.rel accepts null");
 
   test(t => {
+    let div = document.createElement('div');
+    let span = document.createElement('span');
+
+    div.setAttribute('src', INPUTS.URL);
+    let attr = div.getAttributeNode('src');
+    div.removeAttributeNode(attr);
+    span.setAttributeNode(attr);
+
+    assert_equals(span.getAttribute('src'), INPUTS.URL);
+  }, "`span.src = setAttributeNode(div.src)` with string works.");
+
+  test(t => {
     let el = document.createElement('iframe');
 
     assert_throws(new TypeError(), _ => {
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-assign.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-assign.tentative.html
index 4ad4af9..4c295ff 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-assign.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-assign.tentative.html
@@ -19,16 +19,20 @@
 
   // String assignments throw.
   test(t => {
+    let href = location.href;
     assert_throws(new TypeError(), _ => {
       location.assign("A string");
     });
+    assert_equals(location.href, href);
   }, "`location.assign = string` throws");
 
   // Null assignment throws.
   test(t => {
+    let href = location.href;
     assert_throws(new TypeError(), _ => {
       location.assign(null);
     });
+    assert_equals(location.href, href);
   }, "`location.assign = null` throws");
 
   // Create default policy. Applies to all subsequent tests.
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-href.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-href.tentative.html
index fd0a4e5..86bce799 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-href.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-href.tentative.html
@@ -19,19 +19,22 @@
 
   // String assignments throw.
   test(t => {
+    let href = location.href;
     assert_throws(new TypeError(), _ => {
       location.href = 'A string';
     });
+    assert_equals(location.href, href);
   }, "`location.href = string` throws");
 
   // Null assignment throws.
   test(t => {
+    let href = location.href;
     assert_throws(new TypeError(), _ => {
       location.href = null;
     });
+    assert_equals(location.href, href);
   }, "`location.href = null` throws");
 
-
   // Create default policy. Applies to all subsequent tests.
   let p = window.TrustedTypes.createPolicy("default",
       { createURL: createLocationURLJS }, true);
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-replace.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-replace.tentative.html
index 9b8cabe5..aa3af64e 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-replace.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Location-replace.tentative.html
@@ -19,16 +19,20 @@
 
   // String replacements throw.
   test(t => {
+    let href = location.href;
     assert_throws(new TypeError(), _ => {
       location.replace("A string");
     });
+    assert_equals(location.href, href);
   }, "`location.replace = string` throws");
 
   // Null replacement throws.
   test(t => {
+    let href = location.href;
     assert_throws(new TypeError(), _ => {
       location.replace(null);
     });
+    assert_equals(location.href, href);
   }, "`location.replace = null` throws");
 
   // Create default policy. Applies to all subsequent tests.
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js b/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js
index 9ad6059..bae9d2dc 100644
--- a/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js
@@ -87,9 +87,11 @@
 
 function assert_throws_no_trusted_type(tag, attribute, value) {
   let elem = document.createElement(tag);
+  let prev = elem[attribute];
   assert_throws(new TypeError(), _ => {
     elem[attribute] = value;
   });
+  assert_equals(elem[attribute], prev);
 }
 
 function assert_element_accepts_trusted_html_explicit_set(win, c, t, tag, attribute, expected) {
@@ -120,19 +122,24 @@
   let elem = document.createElement(tag);
   elem.setAttribute(attribute, value);
   assert_equals(elem[attribute] + "", expected);
+  assert_equals(elem.getAttribute(attribute), expected);
 }
 
 function assert_throws_no_trusted_type_explicit_set(tag, attribute, value) {
   let elem = document.createElement(tag);
+  let prev = elem[attribute];
   assert_throws(new TypeError(), _ => {
     elem.setAttribute(attribute, value);
   });
+  assert_equals(elem[attribute], prev);
+  assert_equals(elem.getAttribute(attribute), null);
 }
 
 function assert_element_accepts_non_trusted_type_explicit_set(tag, attribute, value, expected) {
   let elem = document.createElement(tag);
   elem.setAttribute(attribute, value);
   assert_equals(elem[attribute] + "", expected);
+  assert_equals(elem.getAttribute(attribute), expected);
 }
 
 let namespace = 'http://www.w3.org/1999/xhtml';
diff --git a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt
index 5a81cea9..70f7fa6 100644
--- a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt
@@ -31,14 +31,13 @@
 PASS XRSession interface: attribute depthNear
 PASS XRSession interface: attribute depthFar
 PASS XRSession interface: attribute baseLayer
-PASS XRSession interface: operation requestFrameOfReference(XRFrameOfReferenceType, XRFrameOfReferenceOptions)
+FAIL XRSession interface: operation requestReferenceSpace(XRReferenceSpaceType, XRReferenceSpaceOptions) assert_own_property: interface prototype object missing non-static operation expected property "requestReferenceSpace" missing
 PASS XRSession interface: operation getInputSources()
 PASS XRSession interface: operation requestAnimationFrame(XRFrameRequestCallback)
 PASS XRSession interface: operation cancelAnimationFrame(long)
 PASS XRSession interface: operation end()
 PASS XRSession interface: attribute onblur
 PASS XRSession interface: attribute onfocus
-PASS XRSession interface: attribute onresetpose
 PASS XRSession interface: attribute onend
 FAIL XRSession interface: attribute onselect assert_true: The prototype object must have a property "onselect" expected true got false
 FAIL XRSession interface: attribute oninputsourceschange assert_true: The prototype object must have a property "oninputsourceschange" expected true got false
@@ -51,31 +50,42 @@
 PASS XRFrame interface: existence and properties of interface prototype object's "constructor" property
 PASS XRFrame interface: existence and properties of interface prototype object's @@unscopables property
 PASS XRFrame interface: attribute session
-FAIL XRFrame interface: operation getViewerPose(XRFrameOfReference) assert_own_property: interface prototype object missing non-static operation expected property "getViewerPose" missing
-PASS XRFrame interface: operation getInputPose(XRInputSource, XRFrameOfReference)
-PASS XRCoordinateSystem interface: existence and properties of interface object
-PASS XRCoordinateSystem interface object length
-PASS XRCoordinateSystem interface object name
-PASS XRCoordinateSystem interface: existence and properties of interface prototype object
-PASS XRCoordinateSystem interface: existence and properties of interface prototype object's "constructor" property
-PASS XRCoordinateSystem interface: existence and properties of interface prototype object's @@unscopables property
-PASS XRCoordinateSystem interface: operation getTransformTo(XRCoordinateSystem)
-PASS XRFrameOfReference interface: existence and properties of interface object
-PASS XRFrameOfReference interface object length
-PASS XRFrameOfReference interface object name
-PASS XRFrameOfReference interface: existence and properties of interface prototype object
-PASS XRFrameOfReference interface: existence and properties of interface prototype object's "constructor" property
-PASS XRFrameOfReference interface: existence and properties of interface prototype object's @@unscopables property
-PASS XRFrameOfReference interface: attribute bounds
-PASS XRFrameOfReference interface: attribute emulatedHeight
-FAIL XRFrameOfReference interface: attribute onboundschange assert_true: The prototype object must have a property "onboundschange" expected true got false
-PASS XRStageBounds interface: existence and properties of interface object
-PASS XRStageBounds interface object length
-PASS XRStageBounds interface object name
-PASS XRStageBounds interface: existence and properties of interface prototype object
-PASS XRStageBounds interface: existence and properties of interface prototype object's "constructor" property
-PASS XRStageBounds interface: existence and properties of interface prototype object's @@unscopables property
-PASS XRStageBounds interface: attribute geometry
+FAIL XRFrame interface: operation getViewerPose(XRReferenceSpace) assert_own_property: interface prototype object missing non-static operation expected property "getViewerPose" missing
+FAIL XRFrame interface: operation getInputPose(XRInputSource, XRReferenceSpace) assert_equals: property has wrong .length expected 1 but got 2
+FAIL XRSpace interface: existence and properties of interface object assert_own_property: self does not have own property "XRSpace" expected property "XRSpace" missing
+FAIL XRSpace interface object length assert_own_property: self does not have own property "XRSpace" expected property "XRSpace" missing
+FAIL XRSpace interface object name assert_own_property: self does not have own property "XRSpace" expected property "XRSpace" missing
+FAIL XRSpace interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRSpace" expected property "XRSpace" missing
+FAIL XRSpace interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRSpace" expected property "XRSpace" missing
+FAIL XRSpace interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRSpace" expected property "XRSpace" missing
+FAIL XRSpace interface: operation getTransformTo(XRSpace) assert_own_property: self does not have own property "XRSpace" expected property "XRSpace" missing
+FAIL XRReferenceSpace interface: existence and properties of interface object assert_own_property: self does not have own property "XRReferenceSpace" expected property "XRReferenceSpace" missing
+FAIL XRReferenceSpace interface object length assert_own_property: self does not have own property "XRReferenceSpace" expected property "XRReferenceSpace" missing
+FAIL XRReferenceSpace interface object name assert_own_property: self does not have own property "XRReferenceSpace" expected property "XRReferenceSpace" missing
+FAIL XRReferenceSpace interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRReferenceSpace" expected property "XRReferenceSpace" missing
+FAIL XRReferenceSpace interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRReferenceSpace" expected property "XRReferenceSpace" missing
+FAIL XRReferenceSpace interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRReferenceSpace" expected property "XRReferenceSpace" missing
+FAIL XRReferenceSpace interface: attribute onreset assert_own_property: self does not have own property "XRReferenceSpace" expected property "XRReferenceSpace" missing
+FAIL XRStationaryReferenceSpace interface: existence and properties of interface object assert_own_property: self does not have own property "XRStationaryReferenceSpace" expected property "XRStationaryReferenceSpace" missing
+FAIL XRStationaryReferenceSpace interface object length assert_own_property: self does not have own property "XRStationaryReferenceSpace" expected property "XRStationaryReferenceSpace" missing
+FAIL XRStationaryReferenceSpace interface object name assert_own_property: self does not have own property "XRStationaryReferenceSpace" expected property "XRStationaryReferenceSpace" missing
+FAIL XRStationaryReferenceSpace interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRStationaryReferenceSpace" expected property "XRStationaryReferenceSpace" missing
+FAIL XRStationaryReferenceSpace interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRStationaryReferenceSpace" expected property "XRStationaryReferenceSpace" missing
+FAIL XRStationaryReferenceSpace interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRStationaryReferenceSpace" expected property "XRStationaryReferenceSpace" missing
+FAIL XRStationaryReferenceSpace interface: attribute subtype assert_own_property: self does not have own property "XRStationaryReferenceSpace" expected property "XRStationaryReferenceSpace" missing
+FAIL XRBoundedReferenceSpace interface: existence and properties of interface object assert_own_property: self does not have own property "XRBoundedReferenceSpace" expected property "XRBoundedReferenceSpace" missing
+FAIL XRBoundedReferenceSpace interface object length assert_own_property: self does not have own property "XRBoundedReferenceSpace" expected property "XRBoundedReferenceSpace" missing
+FAIL XRBoundedReferenceSpace interface object name assert_own_property: self does not have own property "XRBoundedReferenceSpace" expected property "XRBoundedReferenceSpace" missing
+FAIL XRBoundedReferenceSpace interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRBoundedReferenceSpace" expected property "XRBoundedReferenceSpace" missing
+FAIL XRBoundedReferenceSpace interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRBoundedReferenceSpace" expected property "XRBoundedReferenceSpace" missing
+FAIL XRBoundedReferenceSpace interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRBoundedReferenceSpace" expected property "XRBoundedReferenceSpace" missing
+FAIL XRBoundedReferenceSpace interface: attribute boundsGeometry assert_own_property: self does not have own property "XRBoundedReferenceSpace" expected property "XRBoundedReferenceSpace" missing
+FAIL XRUnboundedReferenceSpace interface: existence and properties of interface object assert_own_property: self does not have own property "XRUnboundedReferenceSpace" expected property "XRUnboundedReferenceSpace" missing
+FAIL XRUnboundedReferenceSpace interface object length assert_own_property: self does not have own property "XRUnboundedReferenceSpace" expected property "XRUnboundedReferenceSpace" missing
+FAIL XRUnboundedReferenceSpace interface object name assert_own_property: self does not have own property "XRUnboundedReferenceSpace" expected property "XRUnboundedReferenceSpace" missing
+FAIL XRUnboundedReferenceSpace interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRUnboundedReferenceSpace" expected property "XRUnboundedReferenceSpace" missing
+FAIL XRUnboundedReferenceSpace interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRUnboundedReferenceSpace" expected property "XRUnboundedReferenceSpace" missing
+FAIL XRUnboundedReferenceSpace interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRUnboundedReferenceSpace" expected property "XRUnboundedReferenceSpace" missing
 PASS XRView interface: existence and properties of interface object
 PASS XRView interface object length
 PASS XRView interface object name
@@ -174,13 +184,14 @@
 PASS XRInputSourceEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS XRInputSourceEvent interface: attribute frame
 PASS XRInputSourceEvent interface: attribute inputSource
-FAIL XRCoordinateSystemEvent interface: existence and properties of interface object assert_own_property: self does not have own property "XRCoordinateSystemEvent" expected property "XRCoordinateSystemEvent" missing
-FAIL XRCoordinateSystemEvent interface object length assert_own_property: self does not have own property "XRCoordinateSystemEvent" expected property "XRCoordinateSystemEvent" missing
-FAIL XRCoordinateSystemEvent interface object name assert_own_property: self does not have own property "XRCoordinateSystemEvent" expected property "XRCoordinateSystemEvent" missing
-FAIL XRCoordinateSystemEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRCoordinateSystemEvent" expected property "XRCoordinateSystemEvent" missing
-FAIL XRCoordinateSystemEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRCoordinateSystemEvent" expected property "XRCoordinateSystemEvent" missing
-FAIL XRCoordinateSystemEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRCoordinateSystemEvent" expected property "XRCoordinateSystemEvent" missing
-FAIL XRCoordinateSystemEvent interface: attribute coordinateSystem assert_own_property: self does not have own property "XRCoordinateSystemEvent" expected property "XRCoordinateSystemEvent" missing
+FAIL XRReferenceSpaceEvent interface: existence and properties of interface object assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
+FAIL XRReferenceSpaceEvent interface object length assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
+FAIL XRReferenceSpaceEvent interface object name assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
+FAIL XRReferenceSpaceEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
+FAIL XRReferenceSpaceEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
+FAIL XRReferenceSpaceEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
+FAIL XRReferenceSpaceEvent interface: attribute referenceSpace assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
+FAIL XRReferenceSpaceEvent interface: attribute transformMatrix assert_own_property: self does not have own property "XRReferenceSpaceEvent" expected property "XRReferenceSpaceEvent" missing
 FAIL WebGLRenderingContext interface: operation makeXRCompatible() assert_own_property: interface prototype object missing non-static operation expected property "makeXRCompatible" missing
 PASS Navigator interface: attribute xr
 PASS Navigator interface: navigator must inherit property "xr" with the proper type
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/direct-image-compositing-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/direct-image-compositing-expected.png
index dc93bab..b9ff78c 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/direct-image-compositing-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/direct-image-compositing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/foreground-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/foreground-layer-expected.txt
index 24cc4fb..6b6d8611 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/foreground-layer-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/foreground-layer-expected.txt
@@ -1,4 +1,4 @@
-  
+ 
 {
   "layers": [
     {
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/layer-due-to-layer-children-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/layer-due-to-layer-children-expected.png
index ed06fd1d..6779dec 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/layer-due-to-layer-children-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/geometry/layer-due-to-layer-children-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/become-composited-nested-iframes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/become-composited-nested-iframes-expected.txt
index 8dd2c19..d178b72 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/become-composited-nested-iframes-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/become-composited-nested-iframes-expected.txt
@@ -1,4 +1,3 @@
-
 {
   "layers": [
     {
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/invisible-nested-iframe-show-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/invisible-nested-iframe-show-expected.txt
index abdcdcbd..1dc93089 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/invisible-nested-iframe-show-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/invisible-nested-iframe-show-expected.txt
@@ -1,4 +1,3 @@
-
 {
   "layers": [
     {
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/overlapped-nested-iframes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/overlapped-nested-iframes-expected.txt
index bf4feff..9ba42f2e 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/overlapped-nested-iframes-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/iframes/overlapped-nested-iframes-expected.txt
@@ -1,4 +1,3 @@
-
 {
   "layers": [
     {
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-expected.png
index 78867cc3..34f07c89 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-with-opacity-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-with-opacity-expected.png
index ab2f6f89..511dca7 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-with-opacity-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/lots-of-img-layers-with-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/masks/mask-with-added-filters-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/masks/mask-with-added-filters-expected.png
index d065452..fd5a085 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/masks/mask-with-added-filters-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/masks/mask-with-added-filters-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/masks/mask-with-removed-filters-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/masks/mask-with-removed-filters-expected.png
new file mode 100644
index 0000000..297dbc4
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/masks/mask-with-removed-filters-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/border-radius-styles-with-composited-child-expected.png
index 3a2a7e5..0258aeb 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/border-radius-styles-with-composited-child-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/border-radius-styles-with-composited-child-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png
index 5b9c2a3..3ade606 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/tiled-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/tiled-mask-expected.png
index d1b758a..0eac266 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/tiled-mask-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/overflow/tiled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perpendicular-layer-sorting-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perpendicular-layer-sorting-expected.png
index a5b6beb6..bcf9403 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perpendicular-layer-sorting-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perpendicular-layer-sorting-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perspective-interest-rect-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perspective-interest-rect-expected.png
index eec373b..403b68b 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perspective-interest-rect-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/compositing/perspective-interest-rect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png
index d26cca4..f2408a41 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/css3/blending/background-blend-mode-overlapping-accelerated-elements-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-canvas-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-canvas-expected.png
index c0e8fd5e..e4c1f2e 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-canvas-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-canvas-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-video-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-video-expected.png
index 7435b7ddc..286f1e2f 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-video-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/borders/border-radius-mask-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-expected.png
index 58a04a3..ee5d598 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-parent-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-parent-expected.png
index 2f813ee3..c484574 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-parent-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/fast/clip/overflow-border-radius-composited-parent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
index c5d3da8..5986dc3 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
@@ -36,7 +36,7 @@
         {
           "object": "LayoutBlockFlow (positioned) DIV id='foo'",
           "rect": [0, 0, 100, 1000],
-          "reason": "style change"
+          "reason": "background"
         }
       ]
     }
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/scroll/overflow-scroll-composited-non-stacking-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/scroll/overflow-scroll-composited-non-stacking-child-expected.txt
deleted file mode 100644
index bc911667..0000000
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/scroll/overflow-scroll-composited-non-stacking-child-expected.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='back'",
-          "rect": [93, 125, 180, 100],
-          "reason": "paint property change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='back'",
-          "rect": [93, 75, 180, 100],
-          "reason": "paint property change"
-        },
-        {
-          "object": "VerticalScrollbar",
-          "rect": [308, 65, 15, 175],
-          "reason": "scroll control"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='icon'",
-      "bounds": [40, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFDDBB",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='list'",
-      "position": [43, 35],
-      "bounds": [180, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='commit')",
-      "position": [43, 35],
-      "bounds": [180, 250]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [200, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/video-paint-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/video-paint-invalidation-expected.txt
deleted file mode 100644
index 2b157b5..0000000
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/paint/invalidation/video-paint-invalidation-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo VIDEO id='video'",
-      "position": [8, 8],
-      "bounds": [320, 240],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small test-mode phase-ready state-stopped'",
-      "position": [8, 8],
-      "bounds": [320, 240]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "position": [8, 8],
-      "bounds": [320, 240]
-    },
-    {
-      "name": "LayoutFlexibleBox DIV",
-      "position": [8, 8],
-      "bounds": [320, 240]
-    },
-    {
-      "name": "LayoutButton (positioned) INPUT",
-      "position": [118, 66],
-      "bounds": [100, 100]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-2-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-2-expected.png
index 3c54a70..de65a5a 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-2-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-deep-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-deep-expected.png
index 7124a660..87f4ce42 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-deep-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-deep-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-preserve-3d-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-preserve-3d-expected.png
index f860aa5..8e82ce5 100644
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-preserve-3d-expected.png
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/transforms/3d/point-mapping/3d-point-mapping-preserve-3d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/virtual/android/fullscreen/video-overlay-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/virtual/android/fullscreen/video-overlay-scroll-expected.txt
deleted file mode 100644
index 79213e12..0000000
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/virtual/android/fullscreen/video-overlay-scroll-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-EVENT(fullscreenchange)
-END OF TEST
-{
-  "layers": [
-    {
-      "name": "LayoutVideo (positioned) VIDEO id='video'",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='phase-pre-ready state-no-source use-default-poster sizing-medium'",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#333333"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox DIV",
-      "bounds": [800, 600]
-    },
-    {
-      "name": "LayoutButton (positioned) INPUT",
-      "position": [335, 223],
-      "bounds": [130, 130]
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [336, 224],
-      "bounds": [128, 128],
-      "opacity": 0.300000011920929,
-      "backgroundColor": "#FFFFFFE6"
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/virtual/prefer_compositing_to_lcd_text/compositing/overflow/tiled-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/virtual/prefer_compositing_to_lcd_text/compositing/overflow/tiled-mask-expected.png
new file mode 100644
index 0000000..0eac266
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=BlinkGenPropertyTrees/virtual/prefer_compositing_to_lcd_text/compositing/overflow/tiled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/absolute-inside-out-of-view-fixed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/absolute-inside-out-of-view-fixed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/absolute-inside-out-of-view-fixed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/absolute-inside-out-of-view-fixed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/background-color/view-blending-base-background-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/background-color/view-blending-base-background-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/background-color/view-blending-base-background-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/background-color/view-blending-base-background-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/clip-child-by-non-stacking-ancestor-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/clip-child-by-non-stacking-ancestor-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/clip-child-by-non-stacking-ancestor-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/clip-child-by-non-stacking-ancestor-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/color-matching/image-color-matching-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/color-matching/image-color-matching-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/color-matching/image-color-matching-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/color-matching/image-color-matching-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/columns/composited-in-paginated-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/columns/composited-in-paginated-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/columns/composited-in-paginated-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/columns/composited-in-paginated-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/background-clip-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/background-clip-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/background-clip-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/background-clip-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/background-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/background-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/background-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/background-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/body-background-painted-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/body-background-painted-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/body-background-painted-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/body-background-painted-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/body-background-skipped-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/body-background-skipped-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/body-background-skipped-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/body-background-skipped-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/filter-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/filter-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/filter-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/filter-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/hidden-with-visible-text-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/hidden-with-visible-text-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/hidden-with-visible-text-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/hidden-with-visible-text-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/layer-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/layer-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/layer-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/layer-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/overflow-hidden-child-layers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/overflow-hidden-child-layers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/overflow-hidden-child-layers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/overflow-hidden-child-layers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/visibility-hidden-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/visibility-hidden-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/contents-opaque/visibility-hidden-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/contents-opaque/visibility-hidden-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/culling/tile-occlusion-boundaries-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/culling/tile-occlusion-boundaries-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/culling/tile-occlusion-boundaries-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/culling/tile-occlusion-boundaries-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/fixed-body-background-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/fixed-body-background-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/fixed-body-background-positioned-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/fixed-body-background-positioned-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/fixed-position-changed-to-absolute-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/fixed-position-changed-to-absolute-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/fixed-position-changed-to-absolute-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/fixed-position-changed-to-absolute-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/force-compositing-mode/force-composite-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/force-compositing-mode/force-composite-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/force-compositing-mode/force-composite-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/force-compositing-mode/force-composite-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/ancestor-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/ancestor-overflow-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/ancestor-overflow-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/ancestor-overflow-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/composited-in-columns-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/composited-in-columns-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/composited-in-columns-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/composited-in-columns-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/flipped-writing-mode-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/flipped-writing-mode-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/flipped-writing-mode-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/flipped-writing-mode-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/layer-due-to-layer-children-deep-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/layer-due-to-layer-children-deep-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/layer-due-to-layer-children-deep-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/layer-due-to-layer-children-deep-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/layer-due-to-layer-children-switch-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/layer-due-to-layer-children-switch-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/layer-due-to-layer-children-switch-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/layer-due-to-layer-children-switch-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/transformed-abs-position-inside-composited-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/transformed-abs-position-inside-composited-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/geometry/transformed-abs-position-inside-composited-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/geometry/transformed-abs-position-inside-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-img-and-text-2-expected.html b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-img-and-text-2-expected.html
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-img-and-text-2-expected.html
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-img-and-text-2-expected.html
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-img-and-text-expected.html b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-img-and-text-expected.html
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-img-and-text-expected.html
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-img-and-text-expected.html
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-pixel-rotated-div-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-pixel-rotated-div-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-pixel-rotated-div-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-pixel-rotated-div-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-pixel-rotated-link-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-pixel-rotated-link-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-pixel-rotated-link-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-pixel-rotated-link-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-with-box-shadow-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-with-box-shadow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-with-box-shadow-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-with-box-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-with-squashing-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-with-squashing-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/gestures/gesture-tapHighlight-with-squashing-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/gestures/gesture-tapHighlight-with-squashing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/composited-parent-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/composited-parent-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/composited-parent-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/composited-parent-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe3-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/connect-compositing-iframe3-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/connect-compositing-iframe3-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/enter-compositing-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/enter-compositing-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/enter-compositing-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/enter-compositing-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/iframe-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/iframe-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/iframe-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/iframe-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/iframe-size-from-zero-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/iframe-size-from-zero-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/iframe-size-from-zero-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/iframe-size-from-zero-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/invisible-nested-iframe-hide-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/invisible-nested-iframe-hide-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/invisible-nested-iframe-hide-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/invisible-nested-iframe-hide-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/invisible-nested-iframe-show-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/invisible-nested-iframe-show-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/invisible-nested-iframe-show-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/invisible-nested-iframe-show-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/overlapped-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/overlapped-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/overlapped-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/overlapped-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/overlapped-iframe-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/overlapped-iframe-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/overlapped-iframe-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/overlapped-iframe-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/overlapped-nested-iframes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/overlapped-nested-iframes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/overlapped-nested-iframes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/overlapped-nested-iframes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/scrolling-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/scrolling-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/scrolling-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/scrolling-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/visibility-hidden-transformed-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/visibility-hidden-transformed-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/iframes/visibility-hidden-transformed-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/iframes/visibility-hidden-transformed-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/images/clip-on-directly-composited-image-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/images/clip-on-directly-composited-image-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/images/clip-on-directly-composited-image-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/images/clip-on-directly-composited-image-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/images/direct-image-dynamic-border-draws-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/images/direct-image-dynamic-border-draws-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/images/direct-image-dynamic-border-draws-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/images/direct-image-dynamic-border-draws-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/animation-overlap-with-children-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/animation-overlap-with-children-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/animation-overlap-with-children-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/animation-overlap-with-children-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/assumed-overlap-for-inline-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/assumed-overlap-for-inline-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/assumed-overlap-for-inline-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/assumed-overlap-for-inline-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-and-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-and-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-and-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-and-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-nonscrollable-body-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-nonscrollable-body-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-nonscrollable-body-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-nonscrollable-body-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-nonscrollable-body-overlap-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-nonscrollable-body-overlap-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-nonscrollable-body-overlap-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-nonscrollable-body-overlap-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/remove-clipping-layer-with-no-children-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/remove-clipping-layer-with-no-children-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/remove-clipping-layer-with-no-children-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/remove-clipping-layer-with-no-children-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/stacking-context-overlap-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/stacking-context-overlap-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/stacking-context-overlap-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/stacking-context-overlap-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/stacking-context-overlap-nested-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/stacking-context-overlap-nested-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/stacking-context-overlap-nested-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/stacking-context-overlap-nested-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/translatez-added-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/translatez-added-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/translatez-added-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/translatez-added-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/translatez-overlap-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/translatez-overlap-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/translatez-overlap-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/translatez-overlap-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/translatez-removed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/translatez-removed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-creation/translatez-removed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-creation/translatez-removed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-tree-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-tree-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/layer-tree-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-tree-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/direct-image-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/direct-image-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/direct-image-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/direct-image-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/mask-with-added-filters-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/mask-with-added-filters-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/mask-with-added-filters-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/mask-with-added-filters-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/masked-ancestor-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/masked-ancestor-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/masked-ancestor-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/masked-ancestor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/multiple-masks-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/multiple-masks-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/multiple-masks-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/multiple-masks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/simple-composited-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/simple-composited-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/masks/simple-composited-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/masks/simple-composited-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/opacity-with-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/opacity-with-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/opacity-with-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/opacity-with-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/border-radius-above-composited-subframe-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/border-radius-above-composited-subframe-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/border-radius-above-composited-subframe-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/border-radius-above-composited-subframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/border-radius-composited-subframe-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/border-radius-composited-subframe-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/border-radius-composited-subframe-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/border-radius-composited-subframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/border-radius-on-squashed-layers-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/border-radius-on-squashed-layers-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/border-radius-on-squashed-layers-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/border-radius-on-squashed-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/composited-scrolling-paint-phases-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/composited-scrolling-paint-phases-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/composited-scrolling-paint-phases-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/composited-scrolling-paint-phases-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/mask-with-small-content-rect-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/mask-with-small-content-rect-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/mask-with-small-content-rect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/nested-border-radius-clipping-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/nested-border-radius-clipping-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/nested-border-radius-clipping-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/nested-border-radius-clipping-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/nested-render-surfaces-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/nested-render-surfaces-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/nested-render-surfaces-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/nested-render-surfaces-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/no-excessive-clip-parent-if-parent-escaped-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/no-excessive-clip-parent-if-parent-escaped-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/no-excessive-clip-parent-if-parent-escaped-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/no-excessive-clip-parent-if-parent-escaped-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-auto-with-touch-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-auto-with-touch-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-auto-with-touch-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-auto-with-touch-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-auto-with-touch-no-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-auto-with-touch-no-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-auto-with-touch-no-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-auto-with-touch-no-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-hidden-with-touch-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-hidden-with-touch-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-hidden-with-touch-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-hidden-with-touch-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-overlay-with-touch-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-overlay-with-touch-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-overlay-with-touch-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-overlay-with-touch-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-overlay-with-touch-no-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-overlay-with-touch-no-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-overlay-with-touch-no-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-overlay-with-touch-no-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-scroll-with-touch-no-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-scroll-with-touch-no-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-scroll-with-touch-no-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-scroll-with-touch-no-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-visible-with-touch-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-visible-with-touch-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/overflow-visible-with-touch-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/overflow-visible-with-touch-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/remove-overflow-crash2-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/remove-overflow-crash2-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/remove-overflow-crash2-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/remove-overflow-crash2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-clip-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-clip-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-clip-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-clip-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-clip-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-clip-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-clip-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-effect-interleave-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-effect-interleave-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-effect-interleave-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-effect-interleave-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-z-order-interleave-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-z-order-interleave-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-z-order-interleave-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overflow/rotate-then-clip-z-order-interleave-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overflow/rotate-then-clip-z-order-interleave-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overlap-blending/reflection-opacity-huge-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overlap-blending/reflection-opacity-huge-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/overlap-blending/reflection-opacity-huge-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/overlap-blending/reflection-opacity-huge-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/nested-reflection-animated-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/nested-reflection-animated-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/nested-reflection-animated-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/nested-reflection-animated-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/nested-reflection-opacity-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/nested-reflection-opacity-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/nested-reflection-opacity-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/nested-reflection-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/reflection-in-composited-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/reflection-in-composited-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/reflection-in-composited-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/reflection-in-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/reflection-opacity-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/reflection-opacity-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/reflections/reflection-opacity-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/reflections/reflection-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rendering-contexts-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rendering-contexts-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rendering-contexts-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rendering-contexts-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rtl/rtl-absolute-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rtl/rtl-absolute-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rtl/rtl-absolute-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rtl/rtl-absolute-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rtl/rtl-fixed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rtl/rtl-fixed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rtl/rtl-fixed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rtl/rtl-fixed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rtl/rtl-relative-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rtl/rtl-relative-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/rtl/rtl-relative-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/rtl/rtl-relative-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/clipping-ancestor-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/clipping-ancestor-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/clipping-ancestor-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/clipping-ancestor-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/dont-squash-into-iframes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/dont-squash-into-iframes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/dont-squash-into-iframes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/dont-squash-into-iframes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/iframes-are-never-squashed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/iframes-are-never-squashed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/iframes-are-never-squashed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/iframes-are-never-squashed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/invalidations-with-large-negative-margin-inline-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/invalidations-with-large-negative-margin-inline-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/invalidations-with-large-negative-margin-inline-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/invalidations-with-large-negative-margin-inline-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/invisible-layers-should-not-affect-geometry-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/invisible-layers-should-not-affect-geometry-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/invisible-layers-should-not-affect-geometry-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/invisible-layers-should-not-affect-geometry-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/move-squashing-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/move-squashing-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/move-squashing-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/move-squashing-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/no-squashing-for-filters-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/no-squashing-for-filters-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/no-squashing-for-filters-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/no-squashing-for-filters-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/no-squashing-into-another-clip-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/no-squashing-into-another-clip-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/no-squashing-into-another-clip-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/no-squashing-into-another-clip-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-onto-distant-relative-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-onto-distant-relative-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-onto-distant-relative-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-onto-distant-relative-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-onto-nephew-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-onto-nephew-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-onto-nephew-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-onto-nephew-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-onto-transform-backing-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-onto-transform-backing-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-onto-transform-backing-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-onto-transform-backing-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-simple-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-simple-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-simple-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-simple-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-three-layers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-three-layers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/squashing/squash-three-layers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/squashing/squash-three-layers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/tiled-layers-hidpi-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/tiled-layers-hidpi-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/tiled-layers-hidpi-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/tiled-layers-hidpi-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/transitions/scale-transition-no-start-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/transitions/scale-transition-no-start-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/transitions/scale-transition-no-start-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/transitions/scale-transition-no-start-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/update-paint-phases-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/update-paint-phases-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/update-paint-phases-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/update-paint-phases-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/video/video-controls-layer-creation-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/video/video-controls-layer-creation-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/visibility/visibility-image-layers-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/visibility/visibility-image-layers-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/visibility/visibility-image-layers-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/visibility/visibility-image-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/will-change/composited-layers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/will-change/composited-layers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/will-change/composited-layers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/will-change/composited-layers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/will-change/will-change-contents-suppresses-compositing-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/will-change/will-change-contents-suppresses-compositing-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/compositing/will-change/will-change-contents-suppresses-compositing-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/will-change/will-change-contents-suppresses-compositing-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/effect-background-blend-mode-stacking-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/effect-background-blend-mode-stacking-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/effect-background-blend-mode-stacking-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/effect-background-blend-mode-stacking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/mix-blend-mode-isolated-group-1-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/mix-blend-mode-isolated-group-1-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/mix-blend-mode-isolated-group-1-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/mix-blend-mode-isolated-group-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/mix-blend-mode-isolated-group-2-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/mix-blend-mode-isolated-group-2-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/mix-blend-mode-isolated-group-2-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/mix-blend-mode-isolated-group-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/mix-blend-mode-isolated-group-3-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/mix-blend-mode-isolated-group-3-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/mix-blend-mode-isolated-group-3-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/mix-blend-mode-isolated-group-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/svg-blend-multiply-alpha-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/svg-blend-multiply-alpha-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/css3/blending/svg-blend-multiply-alpha-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/blending/svg-blend-multiply-alpha-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/backgrounds/background-svg-scaling-zoom-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/backgrounds/background-svg-scaling-zoom-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/backgrounds/background-svg-scaling-zoom-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/backgrounds/background-svg-scaling-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/backgrounds/mask-box-image-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/backgrounds/mask-box-image-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/backgrounds/mask-box-image-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/backgrounds/mask-box-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/backgrounds/size/contain-and-cover-zoomed-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/float/021-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/float/021-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/float/021-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/float/021-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/positioning/relative-overflow-block-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/positioning/relative-overflow-block-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/positioning/relative-overflow-block-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/positioning/relative-overflow-block-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/positioning/relative-overflow-replaced-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/positioning/relative-overflow-replaced-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/positioning/relative-overflow-replaced-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/positioning/relative-overflow-replaced-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/positioning/relative-overflow-replaced-float-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/positioning/relative-overflow-replaced-float-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/block/positioning/relative-overflow-replaced-float-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/block/positioning/relative-overflow-replaced-float-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/001-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/001-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/001-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/001-xhtml-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/001-xhtml-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/001-xhtml-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/001-xhtml-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/002-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/002-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/002-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/002-xhtml-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/002-xhtml-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/002-xhtml-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/002-xhtml-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/003-declarative-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/003-declarative-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/003-declarative-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/003-declarative-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/003-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/003-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/003-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/003-xhtml-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/003-xhtml-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/003-xhtml-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/003-xhtml-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/004-declarative-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/004-declarative-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/004-declarative-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/004-declarative-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/004-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/004-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/004-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/004-xhtml-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/004-xhtml-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/004-xhtml-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/004-xhtml-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/005-declarative-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/005-declarative-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/005-declarative-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/005-declarative-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/005-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/005-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/005-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/005-xhtml-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/005-xhtml-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/005-xhtml-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/005-xhtml-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/007-declarative-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/007-declarative-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/007-declarative-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/007-declarative-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/007-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/007-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/007-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/007-xhtml-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/007-xhtml-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/body-propagation/overflow/007-xhtml-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/body-propagation/overflow/007-xhtml-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/block-mask-overlay-image-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/block-mask-overlay-image-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/block-mask-overlay-image-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/block-mask-overlay-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/block-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/block-mask-overlay-image-outset-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/block-mask-overlay-image-outset-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/block-mask-overlay-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-inner-bleed-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-inner-bleed-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-inner-bleed-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-inner-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-all-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-all-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-all-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-border-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-border-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-border-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-padding-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-padding-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-padding-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-padding-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-with-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-with-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-with-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-with-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-with-shadow-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-with-shadow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-canvas-with-shadow-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-canvas-with-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-video-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-video-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/border-radius-mask-video-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/border-radius-mask-video-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/inline-mask-overlay-image-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/inline-mask-overlay-image-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/inline-mask-overlay-image-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/inline-mask-overlay-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/inline-mask-overlay-image-outset-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/inline-mask-overlay-image-outset-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/inline-mask-overlay-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/inline-mask-overlay-image-outset-vertical-rl-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/inline-mask-overlay-image-outset-vertical-rl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/inline-mask-overlay-image-outset-vertical-rl-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/inline-mask-overlay-image-outset-vertical-rl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/rtl-border-01-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/rtl-border-01-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/rtl-border-01-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/rtl-border-01-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/rtl-border-02-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/rtl-border-02-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/rtl-border-02-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/rtl-border-02-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/rtl-border-03-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/rtl-border-03-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/borders/rtl-border-03-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/borders/rtl-border-03-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/css/text-overflow-input-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/css/text-overflow-input-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/css/text-overflow-input-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/css/text-overflow-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-cjk-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-cjk-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-cjk-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-cjk-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/dom/scroll-reveal-left-overflow-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/dom/scroll-reveal-left-overflow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/dom/scroll-reveal-left-overflow-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/dom/scroll-reveal-left-overflow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/dom/scroll-reveal-top-overflow-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/dom/scroll-reveal-top-overflow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/dom/scroll-reveal-top-overflow-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/dom/scroll-reveal-top-overflow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/control-restrict-line-height-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/control-restrict-line-height-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/control-restrict-line-height-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/control-restrict-line-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-long-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-long-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-long-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-long-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-many-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-many-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-many-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-many-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select/select-item-background-clip-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select/select-item-background-clip-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select/select-item-background-clip-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select/select-item-background-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select/select-overflow-scroll-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select/select-overflow-scroll-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select/select-overflow-scroll-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select/select-overflow-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select/select-overflow-scroll-inherited-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select/select-overflow-scroll-inherited-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/select/select-overflow-scroll-inherited-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/select/select-overflow-scroll-inherited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/text/input-disabled-color-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/text/input-disabled-color-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/text/input-disabled-color-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/text/input-disabled-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/text/input-text-scroll-left-on-blur-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/text/input-text-scroll-left-on-blur-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/text/input-text-scroll-left-on-blur-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/text/input-text-scroll-left-on-blur-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/text/input-text-word-wrap-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/text/input-text-word-wrap-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/text/input-text-word-wrap-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/text/input-text-word-wrap-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/basic-textareas-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/basic-textareas-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/basic-textareas-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/basic-textareas-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/basic-textareas-quirks-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/basic-textareas-quirks-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/basic-textareas-quirks-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/basic-textareas-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrollbar-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrollbar-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrollbar-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrollbar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrolled-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrolled-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrolled-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrolled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrolled-type-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrolled-type-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/forms/textarea/textarea-scrolled-type-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/forms/textarea/textarea-scrolled-type-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/frame-scrolling-attribute-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/frame-scrolling-attribute-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/frame-scrolling-attribute-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/frame-scrolling-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/frame-set-scaling-rotate-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/frame-set-scaling-rotate-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/frame-set-scaling-rotate-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/frame-set-scaling-rotate-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/frame-set-scaling-skew-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/frame-set-scaling-skew-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/frame-set-scaling-skew-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/frame-set-scaling-skew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/iframe-scrolling-attribute-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/iframe-scrolling-attribute-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/frames/iframe-scrolling-attribute-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/frames/iframe-scrolling-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/hidpi/scrollbar-appearance-decrease-device-scale-factor-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/hidpi/scrollbar-appearance-decrease-device-scale-factor-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/hidpi/scrollbar-appearance-decrease-device-scale-factor-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/hidpi/scrollbar-appearance-decrease-device-scale-factor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/layers/scroll-with-transform-layer-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/layers/scroll-with-transform-layer-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/layers/scroll-with-transform-layer-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/layers/scroll-with-transform-layer-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/multicol/composited-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/multicol/composited-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/multicol/composited-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/multicol/composited-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/002-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/002-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/002-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/006-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/006-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/006-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/006-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/007-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/007-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/007-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/childFocusRingClip-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/childFocusRingClip-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/childFocusRingClip-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/childFocusRingClip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/clip-rects-fixed-ancestor-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/clip-rects-fixed-ancestor-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/clip-rects-fixed-ancestor-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/clip-rects-fixed-ancestor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/image-selection-highlight-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/image-selection-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/image-selection-highlight-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/image-selection-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-float-stacking-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-float-stacking-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-float-stacking-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-float-stacking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-rtl-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-rtl-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-rtl-vertical-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-rtl-vertical-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-rtl-vertical-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-rtl-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-stacking-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-stacking-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-stacking-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-stacking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-text-hit-testing-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-text-hit-testing-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-text-hit-testing-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-text-hit-testing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-update-transform-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-update-transform-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-update-transform-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-update-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-with-local-background-attachment-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-with-local-background-attachment-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-with-local-background-attachment-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-x-y-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-x-y-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/overflow-x-y-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/overflow-x-y-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/table-overflow-float-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/table-overflow-float-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/overflow/table-overflow-float-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/overflow/table-overflow-float-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/table/frame-and-rules-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/table/frame-and-rules-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/table/frame-and-rules-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/table/frame-and-rules-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/text/font-format-support-color-cff2-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/text/font-format-support-color-cff2-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/text/font-format-support-color-cff2-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/text/font-format-support-color-cff2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/text/selection/mixed-directionality-selection-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/text/selection/mixed-directionality-selection-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/text/selection/mixed-directionality-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/transforms/transform-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/transforms/transform-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/fast/transforms/transform-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/fast/transforms/transform-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/color-profile-layer-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/color-profile-layer-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/color-profile-layer-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/color-profile-layer-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/color-profile-layer-filter-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/color-profile-layer-filter-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/color-profile-layer-filter-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/color-profile-layer-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/color-profile-mask-image-svg-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/color-profile-mask-image-svg-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/color-profile-mask-image-svg-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/color-profile-mask-image-svg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/rendering-broken-block-flow-images-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/rendering-broken-block-flow-images-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/images/rendering-broken-block-flow-images-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/images/rendering-broken-block-flow-images-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/4776765-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/4776765-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/4776765-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/4776765-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-currentColor-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-currentColor-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-currentColor-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-currentColor-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-generated-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-generated-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-generated-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-generated-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-misaligned-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-misaligned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-misaligned-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-misaligned-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-resize-height-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-resize-height-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-resize-height-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-resize-height-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-shorthand-with-gradient-and-height-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-shorthand-with-gradient-and-height-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-shorthand-with-gradient-and-height-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-shorthand-with-gradient-and-height-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-size-auto-with-gradient-and-height-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-size-auto-with-gradient-and-height-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/background-size-auto-with-gradient-and-height-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/background-size-auto-with-gradient-and-height-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/backgroundSizeRepaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/backgroundSizeRepaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/backgroundSizeRepaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/backgroundSizeRepaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/body-background-image-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/body-background-image-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/body-background-image-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/body-background-image-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/change-text-content-and-background-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/change-text-content-and-background-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/change-text-content-and-background-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/change-text-content-and-background-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/composited-background-on-both-layers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/composited-background-on-both-layers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/composited-background-on-both-layers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/composited-background-on-both-layers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/multiple-backgrounds-style-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/multiple-backgrounds-style-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/multiple-backgrounds-style-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/multiple-backgrounds-style-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/view-background-from-body-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/view-background-from-body-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/view-background-from-body-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/view-background-from-body-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/viewport-gradient-background-html-move-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/viewport-gradient-background-html-move-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/viewport-gradient-background-html-move-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/viewport-gradient-background-html-move-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/viewport-gradient-background-html-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/viewport-gradient-background-html-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/viewport-gradient-background-html-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/viewport-gradient-background-html-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/viewport-gradient-background-html-resize-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/viewport-gradient-background-html-resize-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/background/viewport-gradient-background-html-resize-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/background/viewport-gradient-background-html-resize-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/block-layout-inline-children-replaced-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/block-layout-inline-children-replaced-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/block-layout-inline-children-replaced-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/block-layout-inline-children-replaced-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/block-no-inflow-children-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/block-no-inflow-children-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/block-no-inflow-children-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/block-no-inflow-children-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/block-shift-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/block-shift-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/block-shift-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/block-shift-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-current-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-current-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-current-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-current-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-image-outset-add-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-image-outset-add-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-image-outset-add-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-image-outset-add-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-image-outset-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-image-outset-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-image-outset-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-image-outset-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-radius-repaint-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-radius-repaint-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-radius-repaint-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-radius-repaint-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-radius-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-radius-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-radius-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-radius-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-radius-without-border-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-radius-without-border-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-radius-without-border-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-radius-without-border-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-repaint-glitch-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-repaint-glitch-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/border-repaint-glitch-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/border-repaint-glitch-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-inline-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-inline-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-inline-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-inline-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-add-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-add-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-add-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-add-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-dynamic-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-dynamic-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-dynamic-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-dynamic-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-inset-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-inset-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-shadow-inset-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-shadow-inset-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-sizing-border-keeping-size-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-sizing-border-keeping-size-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-sizing-border-keeping-size-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-sizing-border-keeping-size-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-sizing-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-sizing-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-sizing-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-sizing-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-sizing-padding-keeping-size-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-sizing-padding-keeping-size-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/box-sizing-padding-keeping-size-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/box-sizing-padding-keeping-size-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/hover-pseudo-borders-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/hover-pseudo-borders-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/hover-pseudo-borders-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/hover-pseudo-borders-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/hover-pseudo-borders-whitespace-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/hover-pseudo-borders-whitespace-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/hover-pseudo-borders-whitespace-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/hover-pseudo-borders-whitespace-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/margin-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/margin-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/margin-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/margin-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/negative-shadow-box-expand-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/negative-shadow-box-expand-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/negative-shadow-box-expand-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/negative-shadow-box-expand-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/negative-shadow-box-shrink-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/negative-shadow-box-shrink-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/negative-shadow-box-shrink-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/negative-shadow-box-shrink-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/padding-border-keeping-border-box-and-content-box-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/padding-border-keeping-border-box-and-content-box-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/padding-border-keeping-border-box-and-content-box-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/padding-border-keeping-border-box-and-content-box-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/padding-keeping-content-size-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/padding-keeping-content-size-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/padding-keeping-content-size-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/padding-keeping-content-size-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/padding-keeping-visual-size-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/padding-keeping-visual-size-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/padding-keeping-visual-size-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/padding-keeping-visual-size-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/resize-with-border-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/resize-with-border-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/resize-with-border-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/resize-with-border-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/shadow-box-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/shadow-box-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/shadow-box-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/shadow-box-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/shadow-box-resize-writing-mode-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/shadow-box-resize-writing-mode-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/box/shadow-box-resize-writing-mode-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/box/shadow-box-resize-writing-mode-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-3509-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-3509-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-3509-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-3509-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-5699-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-5699-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-5699-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-5699-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-6278-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-6278-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-6278-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-6278-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-6388-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-6388-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-6388-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-6388-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-6473-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-6473-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-6473-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-6473-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-7235-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-7235-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/bugzilla-7235-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/bugzilla-7235-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/button-inner-no-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/button-inner-no-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/button-inner-no-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/button-inner-no-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/button-spurious-layout-hint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/button-spurious-layout-hint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/button-spurious-layout-hint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/button-spurious-layout-hint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/canvas-putImageData-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/canvas-putImageData-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/canvas-putImageData-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/canvas-putImageData-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/canvas-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/canvas-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/canvas-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/canvas-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/canvas-resize-no-full-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/canvas-resize-no-full-invalidation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/canvas-resize-no-full-invalidation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/canvas-resize-no-full-invalidation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/caret-outside-block-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/caret-outside-block-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/caret-outside-block-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/caret-outside-block-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/caret-subpixel-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/caret-subpixel-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/caret-subpixel-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/caret-subpixel-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/change-clip-composited-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/change-clip-composited-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/change-clip-composited-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/change-clip-composited-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/caret-ancestor-clip-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/caret-ancestor-clip-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/caret-ancestor-clip-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/caret-ancestor-clip-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clip-path-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clip-path-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clip-path-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clip-path-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clip-unclip-and-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clip-unclip-and-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clip-unclip-and-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clip-unclip-and-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clip-with-layout-delta-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clip-with-layout-delta-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clip-with-layout-delta-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clip-with-layout-delta-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clipped-relative-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clipped-relative-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/clipped-relative-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/clipped-relative-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/control-clip-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/control-clip-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/control-clip-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/control-clip-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/css-clip-change-stacking-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/css-clip-change-stacking-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/css-clip-change-stacking-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/css-clip-change-stacking-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/intermediate-layout-position-clip-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/intermediate-layout-position-clip-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/intermediate-layout-position-clip-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/intermediate-layout-position-clip-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/mask-clip-change-stacking-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/mask-clip-change-stacking-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/mask-clip-change-stacking-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/mask-clip-change-stacking-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/outline-clip-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/outline-clip-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/outline-clip-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/outline-clip-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/replaced-clipped-positioned-not-wrong-incremental-repainting-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/replaced-clipped-positioned-not-wrong-incremental-repainting-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/replaced-clipped-positioned-not-wrong-incremental-repainting-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/replaced-clipped-positioned-not-wrong-incremental-repainting-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/resize-with-border-clipped-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/resize-with-border-clipped-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/resize-with-border-clipped-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/resize-with-border-clipped-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/subtree-root-clip-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/subtree-root-clip-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/subtree-root-clip-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/subtree-root-clip-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/subtree-root-clip-3-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/subtree-root-clip-3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/subtree-root-clip-3-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/subtree-root-clip-3-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/subtree-root-clip-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/subtree-root-clip-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/clip/subtree-root-clip-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/clip/subtree-root-clip-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/background-attachment-local-composited-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/background-attachment-local-composited-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/background-attachment-local-composited-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/background-attachment-local-composited-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/background-attachment-local-equivalent-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/background-attachment-local-equivalent-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/background-attachment-local-equivalent-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/background-attachment-local-equivalent-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/child-of-sub-pixel-offset-composited-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/child-of-sub-pixel-offset-composited-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/child-of-sub-pixel-offset-composited-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/child-of-sub-pixel-offset-composited-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/chunk-reorder-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/chunk-reorder-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/chunk-reorder-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/chunk-reorder-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/column-span-under-composited-column-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/column-span-under-composited-column-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/column-span-under-composited-column-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/column-span-under-composited-column-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/compositing-reason-removed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/compositing-reason-removed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/compositing-reason-removed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/compositing-reason-removed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-added-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-added-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-added-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-added-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-added-individual-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-added-individual-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-added-individual-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-added-individual-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-removed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-removed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-removed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-removed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-removed-individual-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-removed-individual-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/containing-block-removed-individual-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/containing-block-removed-individual-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/dont-invalidate-root-layer-when-composited-layer-becomes-visible-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/dont-invalidate-root-layer-when-composited-layer-becomes-visible-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/dont-invalidate-root-layer-when-composited-layer-becomes-visible-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/dont-invalidate-root-layer-when-composited-layer-becomes-visible-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/float-under-composited-inline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/float-under-composited-inline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/float-under-composited-inline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/float-under-composited-inline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidate-when-leaving-squashed-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidate-when-leaving-squashed-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidate-when-leaving-squashed-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidate-when-leaving-squashed-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidations-on-composited-layers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidations-on-composited-layers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidations-on-composited-layers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidations-on-composited-layers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidations-with-large-negative-margin-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidations-with-large-negative-margin-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/invalidations-with-large-negative-margin-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/invalidations-with-large-negative-margin-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/repaint-via-layout-offset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/repaint-via-layout-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/repaint-via-layout-offset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/repaint-via-layout-offset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/resize-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/resize-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/resize-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/resize-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/scrolling-without-painting-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/scrolling-without-painting-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/scrolling-without-painting-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/scrolling-without-painting-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-repaint-composited-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-repaint-composited-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-repaint-composited-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-repaint-composited-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-repaint-composited-z-index-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-repaint-composited-z-index-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-repaint-composited-z-index-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/should-not-repaint-composited-z-index-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/squash-partial-repaint-inside-squashed-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/squash-partial-repaint-inside-squashed-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/squash-partial-repaint-inside-squashed-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/squash-partial-repaint-inside-squashed-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/squashing-inside-preserve-3d-element-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/squashing-inside-preserve-3d-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/squashing-inside-preserve-3d-element-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/squashing-inside-preserve-3d-element-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/text-match-highlight-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/text-match-highlight-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/tricky-element-removal-crash-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/tricky-element-removal-crash-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/tricky-element-removal-crash-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/tricky-element-removal-crash-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/updating-scrolling-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/updating-scrolling-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/updating-scrolling-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/compositing/updating-scrolling-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-3-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-3-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-3-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-4-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-4-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-4-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-4-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/crbug-371640-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/crbug-371640-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/create-layer-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/create-layer-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/create-layer-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/create-layer-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-items-change-from-baseline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-items-change-from-baseline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-items-change-from-baseline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-items-change-from-baseline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-items-change-to-baseline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-items-change-to-baseline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-items-change-to-baseline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-items-change-to-baseline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-self-change-from-baseline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-self-change-from-baseline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-self-change-from-baseline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-self-change-from-baseline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-self-change-to-baseline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-self-change-to-baseline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/align-self-change-to-baseline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/align-self-change-to-baseline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-element-change-columns-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-element-change-columns-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-element-change-columns-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-element-change-columns-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-element-change-rows-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-element-change-rows-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-element-change-rows-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-element-change-rows-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-item-change-column-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-item-change-column-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-item-change-column-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-item-change-column-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-item-change-row-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-item-change-row-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-item-change-row-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-item-change-row-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/cull-rect-change-crash-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/cull-rect-change-crash-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/cull-rect-change-crash-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/cull-rect-change-crash-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/delete-into-nested-block-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/delete-into-nested-block-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/delete-into-nested-block-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/delete-into-nested-block-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/details-open-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/details-open-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/details-open-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/details-open-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/effect-reference-repaint-primitive-attr-mutation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/effect-reference-repaint-primitive-attr-mutation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/effect-reference-repaint-primitive-attr-mutation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/effect-reference-repaint-primitive-attr-mutation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/empty-object-move-and-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/empty-object-move-and-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/empty-object-move-and-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/empty-object-move-and-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-1-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-1-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-1-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-3-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-3-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-3-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-4-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-4-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-4-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-4-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-5-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-5-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-5-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-5-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-6-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-6-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-composite-6-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-composite-6-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-displacement-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-displacement-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-displacement-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-displacement-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-lighting-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-lighting-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-lighting-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-lighting-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-merge-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-merge-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-merge-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-merge-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-morphology-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-morphology-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-morphology-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-morphology-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-morphology-xonly-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-morphology-xonly-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-morphology-xonly-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-morphology-xonly-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-morphology-yonly-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-morphology-yonly-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-morphology-yonly-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-morphology-yonly-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-offset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-offset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-offset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-primitive-attr-mutation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-primitive-attr-mutation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-primitive-attr-mutation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-primitive-attr-mutation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-primitive-attr-removal-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-primitive-attr-removal-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-primitive-attr-removal-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-primitive-attr-removal-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-primitive-removed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-primitive-removed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/effect-reference-repaint-primitive-removed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/effect-reference-repaint-primitive-removed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-invalidation-after-display-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-invalidation-after-display-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-invalidation-after-display-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-invalidation-after-display-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-invalidation-positioned-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-invalidation-positioned-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-invalidation-positioned-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-invalidation-positioned-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-invalidation-with-composited-container-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-invalidation-with-composited-container-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-invalidation-with-composited-container-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-invalidation-with-composited-container-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-repaint-on-accelerated-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-repaint-on-accelerated-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/filters/filter-repaint-on-accelerated-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/filters/filter-repaint-on-accelerated-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-change-keeping-geometry-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-change-keeping-geometry-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-change-keeping-geometry-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-change-keeping-geometry-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-change-no-flex-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-change-no-flex-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-change-no-flex-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-change-no-flex-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-distribution-change-grid-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-distribution-change-grid-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-content-distribution-change-grid-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-content-distribution-change-grid-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-items-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-items-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-items-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-items-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-grid-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-grid-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-grid-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-grid-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-keeping-geometry-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-keeping-geometry-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-keeping-geometry-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-keeping-geometry-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-keeping-geometry-grid-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-keeping-geometry-grid-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-keeping-geometry-grid-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-keeping-geometry-grid-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-no-flex-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-no-flex-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/align-self-change-no-flex-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/align-self-change-no-flex-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-content-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-content-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-content-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-content-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-content-distribution-change-grid-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-content-distribution-change-grid-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-content-distribution-change-grid-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-content-distribution-change-grid-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-items-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-items-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-items-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-items-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-items-legacy-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-items-legacy-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-items-legacy-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-items-legacy-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-self-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-self-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-self-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-self-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-self-change-keeping-geometry-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-self-change-keeping-geometry-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/justify-self-change-keeping-geometry-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/justify-self-change-keeping-geometry-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/remove-inline-block-descendant-of-flex-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/remove-inline-block-descendant-of-flex-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/remove-inline-block-descendant-of-flex-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/remove-inline-block-descendant-of-flex-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-column-reverse-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-column-reverse-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-column-reverse-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-column-reverse-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-during-resize-no-flex-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-during-resize-no-flex-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-during-resize-no-flex-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-during-resize-no-flex-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-on-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-on-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-on-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-on-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-on-margin-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-on-margin-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-on-margin-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-on-margin-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-opacity-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-opacity-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-opacity-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-opacity-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-rtl-column-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-rtl-column-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/flexbox/repaint-rtl-column-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/flexbox/repaint-rtl-column-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-move-during-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/float-move-during-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-move-during-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/float-move-during-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-new-in-block-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/float-new-in-block-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-new-in-block-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/float-new-in-block-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/details-marker-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/details-marker-color-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/details-marker-color-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/details-marker-color-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/select-option-background-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/select-option-background-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/select-option-background-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/select-option-background-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-caret-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-caret-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-resize-property-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-resize-property-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-resize-property-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-resize-property-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-set-disabled-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-set-disabled-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/forms/textarea-set-disabled-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/forms/textarea-set-disabled-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/gradients-em-stops-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/gradients-em-stops-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/gradients-em-stops-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/gradients-em-stops-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/iframe-display-block-to-display-none-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/iframe-display-block-to-display-none-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/iframe-display-block-to-display-none-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/iframe-display-block-to-display-none-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/iframe-display-none-to-display-block-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/iframe-display-none-to-display-block-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/iframe-display-none-to-display-block-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/iframe-display-none-to-display-block-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/iframe-rounding-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/iframe-rounding-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/iframe-rounding-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/iframe-rounding-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/image/image-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/image/image-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/image/image-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/image/image-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/image/percent-size-image-resize-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/image/percent-size-image-resize-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/image/percent-size-image-resize-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/image/percent-size-image-resize-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/in-scaled-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/in-scaled-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/in-scaled-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/in-scaled-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/inline-block-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/inline-block-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/inline-block-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/inline-block-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/inline-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/inline-color-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/inline-color-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/inline-color-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/inline-reflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/inline-reflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/inline-reflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/inline-reflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/insert-frame-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/insert-frame-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/insert-frame-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/insert-frame-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidate-invisible-element-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidate-invisible-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidate-invisible-element-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidate-invisible-element-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidation-with-zero-size-object-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidation-with-zero-size-object-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invalidation-with-zero-size-object-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invalidation-with-zero-size-object-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invisible-objects-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invisible-objects-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/invisible-objects-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/invisible-objects-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/layer-full-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/layer-full-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/layer-full-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/layer-full-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/layer-hide-when-needs-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/layer-hide-when-needs-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/layer-hide-when-needs-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/layer-hide-when-needs-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/layer-visibility-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/layer-visibility-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/layer-visibility-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/layer-visibility-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-1-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-1-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-1-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-10-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-10-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-10-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-10-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-2-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-2-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-2-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-3-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-3-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-3-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-4-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-4-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-4-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-4-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-5-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-5-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-5-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-5-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-6-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-6-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-6-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-6-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-7-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-7-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-7-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-7-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-8-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-8-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-8-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-8-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-9-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-9-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/line-flow-with-floats-9-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/line-flow-with-floats-9-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/lines-with-layout-delta-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/lines-with-layout-delta-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/lines-with-layout-delta-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/lines-with-layout-delta-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/list-marker-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/list-marker-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/list-marker-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/list-marker-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/make-children-non-inline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/make-children-non-inline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/make-children-non-inline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/make-children-non-inline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multi-layout-one-frame-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multi-layout-one-frame-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multi-layout-one-frame-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/column-rules-fixed-height-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/column-rules-fixed-height-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/column-rules-fixed-height-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/column-rules-fixed-height-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-abspos-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-abspos-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-abspos-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-abspos-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-block-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-block-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-block-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-block-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-inline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-inline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-inline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-inline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-relpos-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-relpos-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-relpos-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-relpos-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-text-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-text-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/multicol/multicol-with-text-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/multicol/multicol-with-text-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/non-text-link-invalidation-optimization-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/border-outline-0-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/border-outline-0-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/border-outline-0-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/border-outline-0-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/border-radius-with-outline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/border-radius-with-outline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/border-radius-with-outline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/border-radius-with-outline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-continuations-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-continuations-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-enable-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-enable-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-enable-continuations-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-enable-continuations-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-ring-on-child-move-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-ring-on-child-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-ring-on-child-move-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-ring-on-child-move-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/inline-focus-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/inline-focus-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/inline-focus-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/inline-focus-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/inline-outline-repaint-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/inline-outline-repaint-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/inline-outline-repaint-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/inline-outline-repaint-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/inline-outline-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/inline-outline-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/inline-outline-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/inline-outline-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-add-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-add-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-add-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-add-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-continuations-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-continuations-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-invalidation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-invalidation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-invalidation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-offset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-offset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-offset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-vertical-rl-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-child-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-child-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-child-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-child-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-continuations-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-continuations-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-current-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-current-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-current-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-current-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-inset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-inset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-inset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-inset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-repaint-glitch-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-repaint-glitch-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-repaint-glitch-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-repaint-glitch-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-shrinking-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-shrinking-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/outline/outline-shrinking-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/outline/outline-shrinking-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/align-items-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/align-items-overflow-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/align-items-overflow-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/align-items-overflow-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/align-self-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/align-self-overflow-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/align-self-overflow-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/align-self-overflow-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/content-into-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/content-into-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/content-into-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/content-into-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/erase-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/erase-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/erase-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/erase-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/float-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/float-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/float-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/float-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/float-overflow-right-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/float-overflow-right-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/float-overflow-right-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/float-overflow-right-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/inline-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/inline-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/inline-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/inline-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/justify-items-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/justify-items-overflow-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/justify-items-overflow-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/justify-items-overflow-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/justify-self-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/justify-self-overflow-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/justify-self-overflow-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/justify-self-overflow-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/line-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/line-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/line-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/line-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-delete-line-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-delete-line-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-delete-line-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-delete-line-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-hide-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-hide-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-hide-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-hide-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-into-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-into-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-into-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-into-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-show-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-show-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/overflow-show-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/overflow-show-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/repaint-resized-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/repaint-resized-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/repaint-resized-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/repaint-resized-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/resize-child-within-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-overflow-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-overflow-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-overflow-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-overflow-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-overflow-parent-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-overflow-parent-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-overflow-parent-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-overflow-parent-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-overflow-same-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-overflow-same-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-overflow-same-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-overflow-same-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-rl-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-rl-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overflow/vertical-rl-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overflow/vertical-rl-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overhanging-float-detach-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overhanging-float-detach-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/overhanging-float-detach-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/overhanging-float-detach-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/paint-invalidation-with-opacity-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/paint-invalidation-with-opacity-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/paint-invalidation-with-opacity-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/paint-invalidation-with-opacity-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-display-block-to-none-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-display-block-to-none-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-display-block-to-none-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-display-block-to-none-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-margin-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-margin-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-margin-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-margin-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-position-change-containing-block-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-position-change-containing-block-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-position-change-containing-block-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-position-change-containing-block-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-position-changed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-position-changed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-position-changed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-position-changed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-position-moved-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-position-moved-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/absolute-position-moved-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/absolute-position-moved-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/align-content-position-change-grid-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/align-content-position-change-grid-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/align-content-position-change-grid-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/align-content-position-change-grid-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/background-position-no-image-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/background-position-no-image-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/background-position-no-image-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/background-position-no-image-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/containing-block-position-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/containing-block-position-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/containing-block-position-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/containing-block-position-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/fixed-margin-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/fixed-margin-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/fixed-margin-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/fixed-margin-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/inline-relative-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/inline-relative-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/inline-relative-positioned-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/inline-relative-positioned-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/intermediate-layout-position-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/intermediate-layout-position-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/intermediate-layout-position-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/intermediate-layout-position-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/justify-content-position-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/justify-content-position-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/justify-content-position-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/justify-content-position-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/justify-content-position-change-grid-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/justify-content-position-change-grid-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/justify-content-position-change-grid-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/justify-content-position-change-grid-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/layout-state-only-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/layout-state-only-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/layout-state-only-positioned-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/layout-state-only-positioned-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/layout-state-relative-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/layout-state-relative-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/layout-state-relative-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/layout-state-relative-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/position-change-keeping-geometry-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/position-change-keeping-geometry-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/position-change-keeping-geometry-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/position-change-keeping-geometry-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/positioned-document-element-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/positioned-document-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/positioned-document-element-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/positioned-document-element-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/relative-margin-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/relative-margin-change-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/relative-margin-change-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/relative-margin-change-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/static-to-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/static-to-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/static-to-positioned-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/static-to-positioned-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/transform-absolute-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/transform-absolute-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/transform-absolute-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/transform-absolute-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/transform-relative-position-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/transform-relative-position-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/transform-relative-position-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/position/transform-relative-position-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/push-block-with-first-line-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/push-block-with-first-line-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/push-block-with-first-line-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/push-block-with-first-line-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/quotes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/quotes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/quotes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/quotes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/raster-under-invalidation-checking-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/raster-under-invalidation-checking-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/raster-under-invalidation-checking-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/raster-under-invalidation-checking-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-redraw-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-redraw-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-redraw-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-redraw-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-with-rotation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-with-rotation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/reflection-with-rotation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/reflection-with-rotation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/remove-block-after-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/remove-block-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/remove-block-after-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/remove-block-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/remove-inline-after-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/remove-inline-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/remove-inline-after-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/remove-inline-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/remove-inline-layer-after-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/remove-inline-layer-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/remove-inline-layer-after-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/remove-inline-layer-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-in-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-in-iframe-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-in-iframe-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-in-iframe-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-on-style-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-on-style-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-on-style-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-on-style-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-overlay/layers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-overlay/layers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-overlay/layers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-overlay/layers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-subrect-grid-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-subrect-grid-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/repaint-subrect-grid-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/repaint-subrect-grid-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/resize-iframe-text-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/resize-iframe-text-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/resize-iframe-text-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/resize-iframe-text-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/ruby-flipped-blocks-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/ruby-flipped-blocks-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/ruby-flipped-blocks-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/ruby-flipped-blocks-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/composited-add-resizer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/composited-add-resizer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/composited-add-resizer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/composited-add-resizer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/iframe-scroll-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/iframe-scroll-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/iframe-scroll-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/iframe-scroll-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/iframe-scrollbar-hover-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/iframe-scrollbar-hover-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/iframe-scrollbar-hover-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/iframe-scrollbar-hover-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/layout-state-scrolloffset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/layout-state-scrolloffset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/layout-state-scrolloffset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/layout-state-scrolloffset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/layout-state-scrolloffset2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/layout-state-scrolloffset2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/layout-state-scrolloffset2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/layout-state-scrolloffset2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/layout-state-scrolloffset3-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/layout-state-scrolloffset3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/layout-state-scrolloffset3-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/layout-state-scrolloffset3-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/outline-change-in-scrollers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/outline-change-in-scrollers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/outline-change-in-scrollers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/outline-change-in-scrollers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/outline-change-scrollable-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/outline-change-scrollable-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/outline-change-scrollable-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/outline-change-scrollable-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/overflow-hidden-in-overflow-hidden-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/overflow-hidden-in-overflow-hidden-scrolled-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/overflow-hidden-in-overflow-hidden-scrolled-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/overflow-hidden-in-overflow-hidden-scrolled-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/overflow-scroll-body-appear-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/overflow-scroll-body-appear-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/overflow-scroll-body-appear-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/overflow-scroll-body-appear-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/resize-scrollable-div-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/resize-scrollable-div-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/resize-scrollable-div-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/resize-scrollable-div-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-fixed-layer-with-no-visible-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-fixed-layer-with-no-visible-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-fixed-layer-with-no-visible-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-fixed-layer-with-no-visible-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-in-clipped-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-in-clipped-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-in-clipped-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-in-clipped-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-in-transformed-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-in-transformed-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-in-transformed-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-in-transformed-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrollbar-parts-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrollbar-parts-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrollbar-parts-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrollbar-parts-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrolled-iframe-scrollbar-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrolled-iframe-scrollbar-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/scrolled-iframe-scrollbar-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/scroll/scrolled-iframe-scrollbar-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/search-field-cancel-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/search-field-cancel-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/search-field-cancel-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/search-field-cancel-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selected-replaced-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selected-replaced-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selected-replaced-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selected-replaced-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-after-delete-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-after-delete-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-after-delete-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-after-delete-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-after-remove-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-after-remove-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-after-remove-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-after-remove-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-change-in-iframe-with-relative-parent-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-change-in-iframe-with-relative-parent-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-change-in-iframe-with-relative-parent-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-change-in-iframe-with-relative-parent-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-clear-after-move-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-clear-after-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-clear-after-move-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-clear-after-move-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-clear-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-clear-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-clear-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-clear-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-partial-invalidation-between-blocks-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-partial-invalidation-between-blocks-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-partial-invalidation-between-blocks-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-partial-invalidation-between-blocks-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-rl-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-rl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-rl-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-rl-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/text-selection-rect-in-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/text-selection-rect-in-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/text-selection-rect-in-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/selection/text-selection-rect-in-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/set-text-content-same-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/set-text-content-same-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/set-text-content-same-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/set-text-content-same-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/stacked-diacritics-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/stacked-diacritics-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/stacked-diacritics-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/stacked-diacritics-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/stacking-context-lost-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/stacking-context-lost-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/stacking-context-lost-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/stacking-context-lost-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/subtree-root-skipped-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/subtree-root-skipped-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/subtree-root-skipped-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/absolute-sized-document-no-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/absolute-sized-document-no-scrollbars-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/absolute-sized-document-no-scrollbars-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/absolute-sized-document-no-scrollbars-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/add-background-property-on-root-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/add-background-property-on-root-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/add-background-property-on-root-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/add-background-property-on-root-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/add-border-property-on-root-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/add-border-property-on-root-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/add-border-property-on-root-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/add-border-property-on-root-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/add-outline-property-on-root-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/add-outline-property-on-root-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/add-outline-property-on-root-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/add-outline-property-on-root-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-fill-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-fill-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-fill-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-fill-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-target-id-changed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-target-id-changed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-target-id-changed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-target-id-changed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-viewport-overflow-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-viewport-overflow-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-viewport-overflow-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-viewport-overflow-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-viewport-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-viewport-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-viewport-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animate-viewport-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-path-inside-transformed-html-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-path-inside-transformed-html-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-path-inside-transformed-html-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-path-inside-transformed-html-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/append-text-node-to-tspan-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/append-text-node-to-tspan-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/append-text-node-to-tspan-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/append-text-node-to-tspan-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/change-background-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/change-background-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/change-background-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/change-background-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/circle-move-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/circle-move-invalidation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/circle-move-invalidation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/circle-move-invalidation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-child-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-child-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-child-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-child-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-href-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-href-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-href-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-href-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-id-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-id-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-id-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-id-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-units-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-units-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/clip-path-units-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/clip-path-units-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/color-fill-currentColor-and-css-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/color-fill-currentColor-and-css-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/color-fill-currentColor-and-css-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/color-fill-currentColor-and-css-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/color-stop-properties-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/color-stop-properties-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/color-stop-properties-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/color-stop-properties-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/container-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/container-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/container-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/container-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/deep-dynamic-updates-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/deep-dynamic-updates-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/deep-dynamic-updates-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/deep-dynamic-updates-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/ems-display-none-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/ems-display-none-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/ems-display-none-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/ems-display-none-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/exs-display-none-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/exs-display-none-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/exs-display-none-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/exs-display-none-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-change-target-id-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-change-target-id-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-change-target-id-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-change-target-id-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-multiple-targets-id-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-multiple-targets-id-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-multiple-targets-id-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-multiple-targets-id-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-reference-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-reference-invalidation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-reference-invalidation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-reference-invalidation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-remove-target-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-remove-target-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-remove-target-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-remove-target-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-add-to-document-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-add-to-document-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-add-to-document-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-add-to-document-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-attribute-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-attribute-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-attribute-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-attribute-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-changes-id-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-changes-id-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-changes-id-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-changes-id-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-id-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-id-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-id-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-id-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-inline-style-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-inline-style-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-inline-style-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-inline-style-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-property-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-property-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-property-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-property-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-reappend-to-document-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-reappend-to-document-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-reappend-to-document-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-reappend-to-document-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-remove-from-document-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-remove-from-document-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-remove-from-document-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-remove-from-document-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-style-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-style-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/feImage-target-style-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/feImage-target-style-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/fecomponenttransfer-in1-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/fecomponenttransfer-in1-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/fecomponenttransfer-in1-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/fecomponenttransfer-in1-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/fill-opacity-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/fill-opacity-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/fill-opacity-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/fill-opacity-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-child-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-child-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-child-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-child-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-reference-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-reference-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-reference-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-reference-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-refresh-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-refresh-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-refresh-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-refresh-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-width-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-width-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/filter-width-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/filter-width-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/focus-element-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/focus-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/focus-element-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/focus-element-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/foreign-object-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/foreign-object-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/foreign-object-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/foreign-object-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/foreignObject-crash-on-hover-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/foreignObject-crash-on-hover-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/foreignObject-crash-on-hover-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/foreignObject-crash-on-hover-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/gradient-add-stops-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/gradient-add-stops-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/gradient-add-stops-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/gradient-add-stops-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/gradient-stop-style-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/gradient-stop-style-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/gradient-stop-style-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/gradient-stop-style-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/hairline-stroke-squarecap-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/hairline-stroke-squarecap-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/hairline-stroke-squarecap-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/hairline-stroke-squarecap-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/image-href-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/image-href-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/image-href-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/image-href-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/image-with-clip-path-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/image-with-clip-path-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/image-with-clip-path-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/image-with-clip-path-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/inner-svg-change-viewBox-contract-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/inner-svg-change-viewBox-contract-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/inner-svg-change-viewBox-contract-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/inner-svg-change-viewBox-contract-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/inner-svg-change-viewBox-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/inner-svg-change-viewBox-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/inner-svg-change-viewBox-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/inner-svg-change-viewBox-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/invalidate-on-child-layout-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/invalidate-on-child-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/invalidate-on-child-layout-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/invalidate-on-child-layout-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-clipPath-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-clipPath-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-clipPath-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-clipPath-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-gradient-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-gradient-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-gradient-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-gradient-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-marker-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-marker-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-marker-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-marker-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-mask-and-object-creation-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-mask-and-object-creation-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-mask-and-object-creation-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-mask-and-object-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-mask-creation-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-mask-creation-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-mask-creation-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-mask-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-pattern-creation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-pattern-creation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-late-pattern-creation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-late-pattern-creation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-repaint-rect-on-path-with-stroke-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-repaint-rect-on-path-with-stroke-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-repaint-rect-on-path-with-stroke-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-repaint-rect-on-path-with-stroke-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-bounce-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-bounce-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-bounce-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-bounce-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-gradient-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-gradient-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-gradient-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-gradient-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-image-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-image-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-image-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-image-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-pattern-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-pattern-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-pattern-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-pattern-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-pattern-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-pattern-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-pattern-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-pattern-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-polygon-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-polygon-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-polygon-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-polygon-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-polygon-removal-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-polygon-removal-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-polygon-removal-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-polygon-removal-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-stop-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-stop-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-stop-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-stop-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-stop-linked-gradient-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-stop-linked-gradient-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-stop-linked-gradient-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-stop-linked-gradient-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-style-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-style-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-style-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-style-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-transform-addition-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-transform-addition-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-transform-addition-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-transform-addition-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-transform-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-transform-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/js-update-transform-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/js-update-transform-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-child-changes-css-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-child-changes-css-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-child-changes-css-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-child-changes-css-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-child-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-child-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-child-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-child-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-strokeWidth-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-strokeWidth-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-strokeWidth-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-strokeWidth-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-viewBox-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-viewBox-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/marker-viewBox-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/marker-viewBox-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/mask-child-changes-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/mask-child-changes-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/mask-child-changes-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/mask-child-changes-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/mask-clip-target-transform-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/mask-clip-target-transform-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/mask-clip-target-transform-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/mask-clip-target-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-inserted-listitem-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-inserted-listitem-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-inserted-listitem-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-inserted-listitem-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-transferred-listitem-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-transferred-listitem-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/modify-transferred-listitem-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/modify-transferred-listitem-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/outline-offset-shape-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/outline-offset-shape-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/outline-offset-shape-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/outline-offset-shape-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/outline-offset-text-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/outline-offset-text-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/outline-offset-text-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/outline-offset-text-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/overflow-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/overflow-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/overflow-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/overflow-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/paintorder-filtered-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/paintorder-filtered-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/paintorder-filtered-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/paintorder-filtered-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/path-pathlength-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/path-pathlength-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/path-pathlength-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/path-pathlength-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/pending-resource-after-removal-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/pending-resource-after-removal-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/pending-resource-after-removal-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/pending-resource-after-removal-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/rect-modify-rx-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/rect-modify-rx-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/rect-modify-rx-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/rect-modify-rx-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-content-with-resources-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-content-with-resources-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-content-with-resources-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-content-with-resources-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-document-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-document-scrollbars-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-document-scrollbars-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-document-scrollbars-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-image-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-image-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-image-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-image-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-inner-svg-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-inner-svg-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-inner-svg-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-inner-svg-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-background-property-on-root-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-background-property-on-root-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-background-property-on-root-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-background-property-on-root-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-border-property-on-root-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-border-property-on-root-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-border-property-on-root-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-border-property-on-root-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-outline-property-on-root-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-outline-property-on-root-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-outline-property-on-root-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-outline-property-on-root-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-tspan-from-text-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-tspan-from-text-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/remove-tspan-from-text-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/remove-tspan-from-text-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-moving-svg-and-div-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-moving-svg-and-div-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-moving-svg-and-div-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-moving-svg-and-div-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-non-scaling-stroke-text-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-non-scaling-stroke-text-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-non-scaling-stroke-text-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-non-scaling-stroke-text-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-on-constant-size-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-on-constant-size-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-on-constant-size-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-on-constant-size-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-on-image-bounds-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-on-image-bounds-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-on-image-bounds-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-on-image-bounds-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-paintorder-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-paintorder-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-paintorder-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-paintorder-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-stroke-width-changes-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-stroke-width-changes-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/repaint-stroke-width-changes-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/repaint-stroke-width-changes-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/resize-svg-invalidate-children-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/resize-svg-invalidate-children-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/resize-svg-invalidate-children-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/resize-svg-invalidate-children-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/resource-client-removal-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/resource-client-removal-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/resource-client-removal-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/resource-client-removal-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/rounded-rect-height-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/rounded-rect-height-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/rounded-rect-height-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/rounded-rect-height-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/scale-change-huge-geometry-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/scale-change-huge-geometry-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/scale-change-huge-geometry-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/scale-change-huge-geometry-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/shape-transform-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/shape-transform-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/shape-transform-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/shape-transform-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/shape-with-nested-outline-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/shape-with-nested-outline-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/shape-with-nested-outline-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/shape-with-nested-outline-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/stroke-opacity-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/stroke-opacity-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/stroke-opacity-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/stroke-opacity-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-absolute-children-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-absolute-children-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-absolute-children-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-absolute-children-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-background-partial-redraw-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-background-partial-redraw-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-background-partial-redraw-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-background-partial-redraw-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-image-change-content-size-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-image-change-content-size-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-image-change-content-size-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-image-change-content-size-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-image-par-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-image-par-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-image-par-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-image-par-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-length-ch-unit-font-size-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-length-ch-unit-font-size-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-length-ch-unit-font-size-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-length-ch-unit-font-size-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-length-rem-unit-font-size-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-length-rem-unit-font-size-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svg-length-rem-unit-font-size-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svg-length-rem-unit-font-size-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svgsvgelement-repaint-children-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svgsvgelement-repaint-children-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/svgsvgelement-repaint-children-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/svgsvgelement-repaint-children-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/tabgroup-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/tabgroup-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/tabgroup-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/tabgroup-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-dom-removal-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-dom-removal-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-dom-removal-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-dom-removal-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-pattern-update-2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-pattern-update-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-pattern-update-2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-pattern-update-2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-pattern-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-pattern-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-pattern-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-pattern-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-repaint-including-stroke-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-repaint-including-stroke-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-repaint-including-stroke-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-repaint-including-stroke-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-rescale-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-rescale-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-rescale-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-rescale-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-selection-text-05-t-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-selection-text-05-t-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-selection-text-05-t-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-selection-text-05-t-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-selection-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-selection-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-selection-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-selection-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-viewbox-rescale-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-viewbox-rescale-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-viewbox-rescale-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-viewbox-rescale-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-xy-updates-SVGList-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-xy-updates-SVGList-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/text-xy-updates-SVGList-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/text-xy-updates-SVGList-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-changed-state-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-changed-state-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-changed-state-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-changed-state-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-focus-ring-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-focus-ring-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-focus-ring-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-focus-ring-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-foreign-object-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-foreign-object-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-foreign-object-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-foreign-object-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-text-element-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-text-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-text-element-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/transform-text-element-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/tspan-dynamic-positioning-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/tspan-dynamic-positioning-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/tspan-dynamic-positioning-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/tspan-dynamic-positioning-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/tspan-pattern-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/tspan-pattern-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/tspan-pattern-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/tspan-pattern-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-clipped-hit-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-clipped-hit-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-clipped-hit-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-clipped-hit-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-detach-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-detach-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-detach-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-detach-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-disappears-after-style-update-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-disappears-after-style-update-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-disappears-after-style-update-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-disappears-after-style-update-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-inherit-style-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-inherit-style-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-inherit-style-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-inherit-style-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-setAttribute-crash-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-setAttribute-crash-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/use-setAttribute-crash-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/use-setAttribute-crash-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/window-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/window-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/window-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/svg/window-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/add-table-overpaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/add-table-overpaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/add-table-overpaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/add-table-overpaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/animated-row-background-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/animated-row-background-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/animated-row-background-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/animated-row-background-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/border-collapse-change-collapse-to-separate-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/border-collapse-change-collapse-to-separate-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/border-collapse-change-collapse-to-separate-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/border-collapse-change-collapse-to-separate-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/border-collapse-change-separate-to-collapse-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/border-collapse-change-separate-to-collapse-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/border-collapse-change-separate-to-collapse-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/border-collapse-change-separate-to-collapse-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-69296-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-69296-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-69296-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-69296-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-cell-append-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-cell-append-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-cell-append-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-cell-append-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-cell-remove-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-cell-remove-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-cell-remove-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-cell-remove-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-cell-border-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-cell-border-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-cell-border-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-cell-border-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-cell-border-width-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-cell-border-width-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-cell-border-width-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-cell-border-width-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-cell-sl-border-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-cell-sl-border-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-cell-sl-border-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-cell-sl-border-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-col-border-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-col-border-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-col-border-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-col-border-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-col-border-width-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-col-border-width-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-col-border-width-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-col-border-width-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-colgroup-border-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-colgroup-border-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-colgroup-border-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-colgroup-border-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-colgroup-border-width-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-colgroup-border-width-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-colgroup-border-width-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-colgroup-border-width-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-row-border-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-row-border-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-row-border-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-row-border-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-row-border-width-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-row-border-width-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-row-border-width-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-row-border-width-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-table-border-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-table-border-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-table-border-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-table-border-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-table-border-width-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-table-border-width-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-table-border-width-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-table-border-width-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-tbody-border-color-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-tbody-border-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-tbody-border-color-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-tbody-border-color-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-tbody-border-width-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-tbody-border-width-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/cached-change-tbody-border-width-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/cached-change-tbody-border-width-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/caret-contenteditable-content-after-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/caret-contenteditable-content-after-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/caret-contenteditable-content-after-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/caret-contenteditable-content-after-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/collapsed-border-cell-resize-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/collapsed-border-cell-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/collapsed-border-cell-resize-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/collapsed-border-cell-resize-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/collapsed-border-change-rowspan-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/collapsed-border-change-rowspan-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/collapsed-border-change-rowspan-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/collapsed-border-change-rowspan-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-initial-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-initial-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-initial-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-initial-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-span-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-span-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-span-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-span-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-colgroup-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-colgroup-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-colgroup-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-colgroup-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-composited-row-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-composited-row-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-composited-row-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-composited-row-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-initial-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-initial-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-initial-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-initial-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-composited-row-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-composited-row-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-composited-row-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-composited-row-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-initial-empty-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-initial-empty-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-background-section-initial-empty-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-background-section-initial-empty-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-row-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-row-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/composited-table-row-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/composited-table-row-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/fixed-table-cell-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/fixed-table-cell-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/fixed-table-cell-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/fixed-table-cell-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/fixed-table-overflow-zindex-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/fixed-table-overflow-zindex-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/fixed-table-overflow-zindex-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/fixed-table-overflow-zindex-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/input-overflow-in-table-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/input-overflow-in-table-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/input-overflow-in-table-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/input-overflow-in-table-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invalidate-cell-in-row-with-offset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invalidate-cell-in-row-with-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invalidate-cell-in-row-with-offset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invalidate-cell-in-row-with-offset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invisible-col-visible-td-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invisible-col-visible-td-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invisible-col-visible-td-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invisible-col-visible-td-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invisible-tbody-visible-td-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invisible-tbody-visible-td-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invisible-tbody-visible-td-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invisible-tbody-visible-td-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invisible-tr-visible-td-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invisible-tr-visible-td-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/invisible-tr-visible-td-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/invisible-tr-visible-td-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/repaint-table-row-in-composited-document-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/repaint-table-row-in-composited-document-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/repaint-table-row-in-composited-document-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/repaint-table-row-in-composited-document-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/replace-col-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/replace-col-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/replace-col-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/replace-col-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/resize-table-repaint-percent-size-cell-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/resize-table-repaint-percent-size-cell-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/resize-table-repaint-percent-size-cell-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/resize-table-repaint-percent-size-cell-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/resize-table-repaint-vertical-align-cell-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/resize-table-repaint-vertical-align-cell-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/resize-table-repaint-vertical-align-cell-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/resize-table-repaint-vertical-align-cell-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/resize-table-row-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/resize-table-row-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/resize-table-row-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/resize-table-row-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/row-change-background-rowspan-cell-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/row-change-background-rowspan-cell-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/row-change-background-rowspan-cell-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/row-change-background-rowspan-cell-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-cell-collapsed-border-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-cell-collapsed-border-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-cell-collapsed-border-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-cell-collapsed-border-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-cell-move-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-cell-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-cell-move-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-cell-move-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-cell-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-cell-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-cell-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-cell-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-col-background-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-col-background-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-col-background-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-col-background-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-col-background-offset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-col-background-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-col-background-offset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-col-background-offset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-collapsed-border-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-collapsed-border-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-collapsed-border-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-collapsed-border-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-extra-bottom-grow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-extra-bottom-grow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-extra-bottom-grow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-extra-bottom-grow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-outer-border-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-outer-border-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-outer-border-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-outer-border-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-row-bg-change-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-row-bg-change-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-row-bg-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-row-bg-change-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-row-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-row-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-row-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-row-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-section-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-section-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-section-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-section-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-section-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-section-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-section-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-section-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-section-visual-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-section-visual-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-section-visual-overflow-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-section-visual-overflow-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-shrink-row-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-shrink-row-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-shrink-row-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-shrink-row-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-two-pass-layout-overpaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-two-pass-layout-overpaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-two-pass-layout-overpaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-two-pass-layout-overpaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-with-padding-row-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-with-padding-row-invalidation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-with-padding-row-invalidation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/table/table-with-padding-row-invalidation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/text-append-dirty-lines-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/text-append-dirty-lines-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/text-append-dirty-lines-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/text-append-dirty-lines-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/text-line-clamp-truncation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/text-line-clamp-truncation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/text-line-clamp-truncation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/text-line-clamp-truncation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/text-match-document-change-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/text-match-document-change-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/text-match-document-change-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/text-match-document-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/caret-with-transformation-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/caret-with-transformation-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/caret-with-transformation-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/caret-with-transformation-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/change-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/change-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/change-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/change-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/invalidation-with-scale-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/invalidation-with-scale-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/invalidation-with-scale-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/invalidation-with-scale-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/resize-skewed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/resize-skewed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/resize-skewed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/resize-skewed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/subpixel-offset-scaled-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/subpixel-offset-scaled-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/subpixel-offset-scaled-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/subpixel-offset-scaled-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/subtree-layoutstate-transform-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/subtree-layoutstate-transform-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/subtree-layoutstate-transform-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/subtree-layoutstate-transform-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-disable-layoutstate-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-disable-layoutstate-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-disable-layoutstate-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-disable-layoutstate-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-inline-layered-child-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-inline-layered-child-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-inline-layered-child-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-inline-layered-child-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-layout-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-layout-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-layout-repaint-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-layout-repaint-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-repaint-descendants-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-repaint-descendants-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-repaint-descendants-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-repaint-descendants-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-replaced-shadows-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-replaced-shadows-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-replaced-shadows-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-replaced-shadows-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-rotate-and-remove-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-rotate-and-remove-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-rotate-and-remove-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-rotate-and-remove-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-translate-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-translate-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/transform/transform-translate-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/transform/transform-translate-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align-length1-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align-length1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align-length1-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align-length1-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align-length2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align-length2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align-length2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align-length2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align1-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align1-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align1-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-align2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-align2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-rl-as-paint-container-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-rl-as-paint-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/vertical-rl-as-paint-container-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/vertical-rl-as-paint-container-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-generated-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-generated-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-generated-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-generated-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-non-fixed-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-non-fixed-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-background-image-non-fixed-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-background-image-non-fixed-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-frameset-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-frameset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-frameset-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-frameset-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-media-query-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-media-query-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-media-query-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-media-query-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-no-layout-change1-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-no-layout-change1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-no-layout-change1-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-no-layout-change1-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-no-layout-change2-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-no-layout-change2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-no-layout-change2-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-no-layout-change2-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-percent-html-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-percent-html-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-percent-html-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-percent-html-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-percent-width-height-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-percent-width-height-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-percent-width-height-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-percent-width-height-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-positioned-bottom-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-positioned-bottom-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-positioned-bottom-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-positioned-bottom-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-positioned-percent-top-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-positioned-percent-top-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-positioned-percent-top-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-positioned-percent-top-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-viewport-percent-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-viewport-percent-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-viewport-percent-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/invalidation/window-resize/window-resize-viewport-percent-expected.txt
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/masks/fieldset-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/masks/fieldset-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/paint/masks/fieldset-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/paint/masks/fieldset-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/W3C-SVG-1.1/masking-path-04-b-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/W3C-SVG-1.1/masking-path-04-b-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/W3C-SVG-1.1/masking-path-04-b-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/W3C-SVG-1.1/masking-path-04-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/as-background-image/background-repeat-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/as-background-image/background-repeat-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/as-background-image/background-repeat-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/as-background-image/background-repeat-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/batik/masking/maskRegions-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/batik/masking/maskRegions-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/batik/masking/maskRegions-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/batik/masking/maskRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/batik/text/textEffect2-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/batik/text/textEffect2-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/batik/text/textEffect2-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/batik/text/textEffect2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/batik/text/textProperties-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/batik/text/textProperties-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/batik/text/textProperties-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/batik/text/textProperties-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-in-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-in-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-in-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-in-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-path-childs-clipped-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-path-childs-clipped-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-path-childs-clipped-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-path-childs-clipped-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-path-with-text-clipped-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-path-with-text-clipped-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/clip-path-with-text-clipped-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/clip-path-with-text-clipped-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/deep-nested-clip-in-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/deep-nested-clip-in-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/deep-nested-clip-in-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/deep-nested-clip-in-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/absolute-root-position-masking-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/absolute-root-position-masking-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/absolute-root-position-masking-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/absolute-root-position-masking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/getscreenctm-in-scrollable-div-area-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/getscreenctm-in-scrollable-div-area-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/getscreenctm-in-scrollable-div-area-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/getscreenctm-in-scrollable-div-area-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/getscreenctm-in-scrollable-div-area-nested-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/getscreenctm-in-scrollable-div-area-nested-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/getscreenctm-in-scrollable-div-area-nested-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/getscreenctm-in-scrollable-div-area-nested-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/mask-changes-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/mask-changes-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/mask-changes-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/mask-changes-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/mask-colorspace-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/mask-colorspace-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/mask-colorspace-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/mask-colorspace-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/masking-clipping-hidpi-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/masking-clipping-hidpi-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/masking-clipping-hidpi-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/masking-clipping-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/recursive-clippath-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/recursive-clippath-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/recursive-clippath-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/recursive-clippath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/recursive-mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/recursive-mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/custom/recursive-mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/custom/recursive-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/filter-clip-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/filter-clip-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/filters/filter-clip-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/filters/filter-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/foreignObject/mask-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/foreignObject/mask-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/foreignObject/mask-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/foreignObject/mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/zoom/page/zoom-mask-with-percentages-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/zoom/page/zoom-mask-with-percentages-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/svg/zoom/page/zoom-mask-with-percentages-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/svg/zoom/page/zoom-mask-with-percentages-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/transforms/2d/hindi-rotated-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/transforms/2d/hindi-rotated-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/transforms/2d/hindi-rotated-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/transforms/2d/hindi-rotated-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/transforms/transform-on-inline-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/transforms/transform-on-inline-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/transforms/transform-on-inline-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/transforms/transform-on-inline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/transforms/transform-table-row-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/transforms/transform-table-row-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/transforms/transform-table-row-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/transforms/transform-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-4-and-click-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-4-and-click-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-4-and-click-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-4-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-5-and-click-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-5-and-click-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-5-and-click-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-5-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-9-and-click-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-9-and-click-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-9-and-click-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-add-summary-9-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-3-and-click-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-3-and-click-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-3-and-click-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-3-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-6-and-click-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-6-and-click-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-slimming-paint-v2/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-6-and-click-expected.png
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/virtual/incremental-shadow-dom/html/details_summary/details-remove-summary-6-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/virtual/spv2/fast/overflow/overflow-height-float-not-removed-crash3-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/virtual/composite-after-paint/fast/overflow/overflow-height-float-not-removed-crash3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/virtual/spv2/fast/overflow/overflow-height-float-not-removed-crash3-expected.txt
rename to third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/virtual/composite-after-paint/fast/overflow/overflow-height-float-not-removed-crash3-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/spv2/selection-within-composited-scroller-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/composite-after-paint/selection-within-composited-scroller-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/paint/invalidation/spv2/selection-within-composited-scroller-expected.png
rename to third_party/blink/web_tests/platform/linux/paint/invalidation/composite-after-paint/selection-within-composited-scroller-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/spv2/text-match-highlight-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/paint/invalidation/spv2/text-match-highlight-expected.png
rename to third_party/blink/web_tests/platform/linux/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/compositing/geometry/outline-change-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/compositing/geometry/outline-change-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/compositing/geometry/outline-change-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/compositing/geometry/outline-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/block/basic/018-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/block/basic/018-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/block/basic/018-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/block/basic/018-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/borders/border-image-scale-transform-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/borders/border-image-scale-transform-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/borders/border-image-scale-transform-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/borders/border-image-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/001-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/001-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/001-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/002-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/002-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/002-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/002-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/002-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/002-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/002-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/003-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/003-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/003-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/003-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/003-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/003-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/003-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/004-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/004-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/004-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/004-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/004-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/004-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/004-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/005-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/005-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/005-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/005-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/005-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/005-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/005-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/006-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/006-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/006-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/006-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/006-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/006-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/006-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/006-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/007-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/007-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/007-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/008-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/008-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/008-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/008-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/008-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/008-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/008-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/009-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/009-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/009-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/009-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/009-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/009-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/009-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/009-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/011-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/011-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/011-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/012-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/012-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/012-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/012-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/012-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/012-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/012-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/012-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/013-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/013-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/013-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/013-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/014-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/014-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/014-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/014-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/014-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/014-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/014-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/014-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/015-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/015-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/015-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/015-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/015-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/015-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/015-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/015-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/016-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/016-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/016-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/016-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/016-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/016-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/clip/016-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/clip/016-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/004-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/004-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/004-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/004-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/004-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/004-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/004-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/005-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/005-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/005-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/008-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/008-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/008-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/line-clamp-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/line-clamp-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/line-clamp-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/line-clamp-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-table-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-table-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-table-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/overflow-auto-table-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/unreachable-overflow-rtl-bug-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/unreachable-overflow-rtl-bug-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/overflow/unreachable-overflow-rtl-bug-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/overflow/unreachable-overflow-rtl-bug-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/block-layout-inline-children-float-positioned-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/box-inline-resize-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/box-inline-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/box-inline-resize-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/box-inline-resize-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/focus-continuations-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/focus-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/focus-continuations-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/focus-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/focus-enable-continuations-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/focus-enable-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/focus-enable-continuations-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/focus-enable-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/focus-ring-on-continuation-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/focus-ring-on-continuation-move-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/focus-ring-on-continuation-move-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/inline-outline-repaint-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/inline-outline-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/inline-outline-repaint-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/inline-outline-repaint-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-1-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-1-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-1-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-10-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-10-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-10-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-10-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-2-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-2-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-2-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-3-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-3-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-3-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-4-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-4-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-4-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-4-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-5-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-5-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-5-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-5-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-6-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-6-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-6-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-8-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-8-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-8-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-8-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-9-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/line-flow-with-floats-9-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-9-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-change-continuations-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-change-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-change-continuations-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-change-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-change-offset-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-change-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-change-offset-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-change-offset-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-continuations-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-continuations-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-continuations-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/outline-continuations-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/positioned-document-element-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/positioned-document-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/positioned-document-element-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/positioned-document-element-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/remove-inline-after-layout-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/remove-inline-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/remove-inline-after-layout-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/remove-inline-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/remove-inline-layer-after-layout-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/remove-inline-layer-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/remove-inline-layer-after-layout-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/remove-inline-layer-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/repaint-during-scroll-with-zoom-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/fast/repaint/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/fast/repaint/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/inline/outline-offset-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/inline/outline-offset-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/inline/outline-offset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/image-resize-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/image-resize-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/image-resize-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/image-resize-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/percent-size-image-resize-container-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/percent-size-image-resize-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/non-text-link-invalidation-optimization-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/roundedrects/circle-with-shadow-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/roundedrects/circle-with-shadow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/roundedrects/circle-with-shadow-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/roundedrects/circle-with-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/selection-within-composited-scroller-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/selection-within-composited-scroller-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/selection-within-composited-scroller-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.png b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.png
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/linux/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.txt
rename to third_party/blink/web_tests/platform/linux/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.txt
diff --git a/third_party/blink/web_tests/platform/linux/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt
deleted file mode 100644
index c2b5c6e4..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL setRemoteDescription with an SDP without a=msid lines triggers ontrack with a default stream. assert_equals: expected 1 but got 0
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/spv2/fast/overflow/overflow-auto-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac10.10/virtual/spv2/fast/overflow/overflow-auto-table-expected.png
rename to third_party/blink/web_tests/platform/mac-mac10.10/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png
rename to third_party/blink/web_tests/platform/mac/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/spv2/selection-within-composited-scroller-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/composite-after-paint/selection-within-composited-scroller-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/paint/invalidation/spv2/selection-within-composited-scroller-expected.png
rename to third_party/blink/web_tests/platform/mac/paint/invalidation/composite-after-paint/selection-within-composited-scroller-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/spv2/text-match-highlight-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/paint/invalidation/spv2/text-match-highlight-expected.png
rename to third_party/blink/web_tests/platform/mac/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/block/basic/018-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/block/basic/018-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/block/basic/018-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/block/basic/018-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/001-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/001-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/001-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/002-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/002-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/002-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/002-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/002-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/002-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/002-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/003-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/003-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/003-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/003-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/003-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/003-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/003-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/004-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/004-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/004-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/004-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/004-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/004-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/004-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/005-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/005-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/005-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/005-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/005-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/005-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/005-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/006-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/006-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/006-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/006-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/006-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/006-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/006-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/006-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/007-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/007-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/007-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/008-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/008-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/008-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/008-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/008-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/008-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/008-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/009-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/009-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/009-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/009-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/009-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/009-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/009-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/009-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/011-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/011-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/011-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/012-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/012-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/012-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/012-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/012-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/012-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/012-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/012-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/013-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/013-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/013-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/013-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/014-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/014-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/014-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/014-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/014-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/014-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/014-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/014-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/015-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/015-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/015-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/015-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/015-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/015-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/015-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/015-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/016-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/016-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/016-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/016-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/016-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/016-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/clip/016-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/clip/016-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/004-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/004-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/004-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/004-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/004-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/004-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/004-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/line-clamp-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/line-clamp-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/line-clamp-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/line-clamp-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/overflow-auto-table-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/overflow-auto-table-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/overflow-auto-table-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/overflow/overflow-auto-table-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/block-layout-inline-children-float-positioned-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/box-inline-resize-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/box-inline-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/box-inline-resize-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/box-inline-resize-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/button-checkbox-click-method-repaint-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/button-checkbox-click-method-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/button-checkbox-click-method-repaint-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/button-checkbox-click-method-repaint-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/control-clip-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/control-clip-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/control-clip-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/control-clip-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/focus-continuations-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/focus-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/focus-continuations-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/focus-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/focus-enable-continuations-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/focus-enable-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/focus-enable-continuations-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/focus-enable-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/focus-ring-on-continuation-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/focus-ring-on-continuation-move-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/focus-ring-on-continuation-move-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/inline-outline-repaint-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/inline-outline-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/inline-outline-repaint-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/inline-outline-repaint-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-1-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-1-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-1-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-10-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-10-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-10-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-10-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-2-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-2-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-2-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-3-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-3-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-3-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-4-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-4-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-4-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-4-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-6-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-6-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-6-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-8-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-8-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-8-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-8-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-9-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-flow-with-floats-9-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-9-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-overflow-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-overflow-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/line-overflow-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/line-overflow-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/outline-change-offset-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/outline-change-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/outline-change-offset-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/outline-change-offset-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/outline-continuations-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/outline-continuations-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/outline-continuations-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/outline-continuations-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/remove-inline-after-layout-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/remove-inline-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/remove-inline-after-layout-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/remove-inline-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/remove-inline-layer-after-layout-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/remove-inline-layer-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/remove-inline-layer-after-layout-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/remove-inline-layer-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/repaint-across-writing-mode-boundary-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/repaint-across-writing-mode-boundary-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/repaint-across-writing-mode-boundary-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/repaint-across-writing-mode-boundary-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/repaint-during-scroll-with-zoom-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/select-option-background-color-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/select-option-background-color-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/fast/repaint/select-option-background-color-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/fast/repaint/select-option-background-color-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/inline/outline-offset-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/inline/outline-offset-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/inline/outline-offset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/inline/outline-offset-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/inline/outline-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/inline/outline-offset-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/inline/outline-offset-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/animated-gif-background-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/animated-gif-background-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/animated-gif-background-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/animated-gif-background-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/animated-gif-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/animated-gif-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/animated-gif-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/animated-gif-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/image-resize-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/image-resize-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/percent-size-image-resize-container-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/percent-size-image-resize-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/roundedrects/circle-with-shadow-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/roundedrects/circle-with-shadow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/roundedrects/circle-with-shadow-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/roundedrects/circle-with-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/selection-within-composited-scroller-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/selection-within-composited-scroller-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/selection-within-composited-scroller-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-across-blocks-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-across-blocks-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-across-blocks-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-across-blocks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-br-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-br-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-br-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-rtl-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-rtl-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-span-across-line-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-span-across-line-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-span-across-line-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-span-across-line-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-span-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-span-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-span-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-span-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-vertical-lr-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-lr-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-vertical-lr-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-lr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-vertical-rl-expected.png b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-rl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-vertical-rl-expected.png
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-rl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/mac/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.txt
rename to third_party/blink/web_tests/platform/mac/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.txt
diff --git a/third_party/blink/web_tests/platform/mac/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt
deleted file mode 100644
index c2b5c6e4..0000000
--- a/third_party/blink/web_tests/platform/mac/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL setRemoteDescription with an SDP without a=msid lines triggers ontrack with a default stream. assert_equals: expected 1 but got 0
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png
rename to third_party/blink/web_tests/platform/win/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/spv2/selection-within-composited-scroller-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/composite-after-paint/selection-within-composited-scroller-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/paint/invalidation/spv2/selection-within-composited-scroller-expected.png
rename to third_party/blink/web_tests/platform/win/paint/invalidation/composite-after-paint/selection-within-composited-scroller-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/spv2/text-match-highlight-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/paint/invalidation/spv2/text-match-highlight-expected.png
rename to third_party/blink/web_tests/platform/win/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/block/basic/018-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/block/basic/018-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/block/basic/018-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/block/basic/018-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/001-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/001-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/001-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/002-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/002-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/002-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/002-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/002-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/002-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/002-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/003-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/003-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/003-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/003-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/003-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/003-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/003-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/004-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/004-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/004-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/004-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/004-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/004-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/004-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/005-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/005-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/005-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/005-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/005-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/005-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/005-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/006-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/006-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/006-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/006-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/006-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/006-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/006-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/006-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/007-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/007-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/007-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/008-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/008-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/008-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/008-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/008-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/008-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/008-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/009-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/009-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/009-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/009-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/009-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/009-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/009-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/009-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/011-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/011-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/011-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/012-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/012-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/012-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/012-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/012-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/012-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/012-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/012-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/013-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/013-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/013-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/013-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/014-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/014-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/014-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/014-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/014-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/014-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/014-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/014-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/015-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/015-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/015-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/015-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/015-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/015-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/015-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/015-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/016-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/016-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/016-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/016-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/016-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/016-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/clip/016-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/clip/016-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/004-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/004-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/004-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/004-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/004-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/004-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/004-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/005-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/005-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/005-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/008-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/008-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/008-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/line-clamp-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/line-clamp-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/line-clamp-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/line-clamp-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-position-absolute-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-position-absolute-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-table-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-table-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-table-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/overflow-auto-table-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/overflow-auto-table-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/unreachable-overflow-rtl-bug-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/unreachable-overflow-rtl-bug-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/overflow/unreachable-overflow-rtl-bug-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/overflow/unreachable-overflow-rtl-bug-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/block-layout-inline-children-float-positioned-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/block-layout-inline-children-float-positioned-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/box-inline-resize-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/box-inline-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/box-inline-resize-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/box-inline-resize-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/caret-invalidation-in-overflow-scroll-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/focus-continuations-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/focus-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/focus-continuations-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/focus-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/focus-enable-continuations-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/focus-enable-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/focus-enable-continuations-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/focus-enable-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-1-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-1-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-1-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-1-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-10-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-10-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-10-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-10-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-2-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-2-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-2-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-2-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-3-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-3-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-3-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-3-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-4-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-4-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-4-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-4-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-6-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-6-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-6-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-8-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-8-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-8-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-8-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-9-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/line-flow-with-floats-9-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/line-flow-with-floats-9-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/outline-continuations-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/outline-continuations-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/remove-inline-after-layout-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/remove-inline-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/remove-inline-after-layout-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/remove-inline-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/remove-inline-layer-after-layout-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/remove-inline-layer-after-layout-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/remove-inline-layer-after-layout-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/remove-inline-layer-after-layout-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/repaint-across-writing-mode-boundary-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/repaint-across-writing-mode-boundary-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/repaint-across-writing-mode-boundary-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/repaint-across-writing-mode-boundary-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/repaint-during-scroll-with-zoom-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/fast/repaint/repaint-during-scroll-with-zoom-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/inline/outline-offset-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/inline/outline-offset-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/inline/outline-offset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/image-resize-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/image-resize-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/percent-size-image-resize-container-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/percent-size-image-resize-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/selection-change-in-iframe-with-relative-parent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/non-text-link-invalidation-optimization-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/roundedrects/circle-with-shadow-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/roundedrects/circle-with-shadow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/roundedrects/circle-with-shadow-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/roundedrects/circle-with-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/selection-within-composited-scroller-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/selection-within-composited-scroller-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/selection-within-composited-scroller-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-across-blocks-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-across-blocks-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-across-blocks-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-across-blocks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-br-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-br-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-br-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-double-linebreak-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-rtl-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-span-across-line-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-span-across-line-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-span-across-line-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-span-across-line-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-span-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-span-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-span-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-span-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-vertical-lr-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-lr-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-vertical-lr-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-lr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-vertical-rl-expected.png b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-rl-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/paint/selection/text-selection-newline-vertical-rl-expected.png
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/paint/selection/text-selection-newline-vertical-rl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.txt b/third_party/blink/web_tests/platform/win/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.txt
rename to third_party/blink/web_tests/platform/win/virtual/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.txt
diff --git a/third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/focus-ring-on-continuation-move-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/focus-ring-on-continuation-move-expected.txt
rename to third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/focus-ring-on-continuation-move-expected.txt
diff --git a/third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/inline-outline-repaint-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/inline-outline-repaint-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/inline-outline-repaint-expected.txt
rename to third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/inline-outline-repaint-expected.txt
diff --git a/third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/outline-change-offset-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/outline-change-offset-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/outline-change-offset-expected.txt
rename to third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/outline-change-offset-expected.txt
diff --git a/third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/outline-continuations-expected.png b/third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win7/virtual/spv2/fast/repaint/outline-continuations-expected.png
rename to third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/fast/repaint/outline-continuations-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/spv2/paint/invalidation/spv2/image-resize-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win7/virtual/spv2/paint/invalidation/spv2/image-resize-expected.txt
rename to third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/paint/invalidation/composite-after-paint/image-resize-expected.txt
diff --git a/third_party/blink/web_tests/platform/win7/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png b/third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/win7/virtual/spv2/paint/invalidation/spv2/text-match-highlight-expected.png
rename to third_party/blink/web_tests/platform/win7/virtual/composite-after-paint/paint/invalidation/composite-after-paint/text-match-highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt
deleted file mode 100644
index c2b5c6e4..0000000
--- a/third_party/blink/web_tests/platform/win7/virtual/webrtc-wpt-unified-plan/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-nomsid-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL setRemoteDescription with an SDP without a=msid lines triggers ontrack with a default stream. assert_equals: expected 1 but got 0
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/borders/border-image-scale-transform-expected.png b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/borders/border-image-scale-transform-expected.png
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/fast/borders/border-image-scale-transform-expected.png
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/borders/border-image-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/repaint/line-flow-with-floats-5-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/line-flow-with-floats-5-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/fast/repaint/line-flow-with-floats-5-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/line-flow-with-floats-5-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/repaint/outline-change-continuations-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/outline-change-continuations-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/fast/repaint/outline-change-continuations-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/outline-change-continuations-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/repaint/positioned-document-element-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/positioned-document-element-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/fast/repaint/positioned-document-element-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/positioned-document-element-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/repaint/transform-translate-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/transform-translate-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/fast/repaint/transform-translate-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/transform-translate-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/repaint/window-resize-percent-html-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/window-resize-percent-html-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/fast/repaint/window-resize-percent-html-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/fast/repaint/window-resize-percent-html-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/background-resize-height-expected.png b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/background-resize-height-expected.png
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/background-resize-height-expected.png
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/background-resize-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/background-resize-width-expected.png b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/background-resize-width-expected.png
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/background-resize-width-expected.png
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/background-resize-width-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/percent-size-image-resize-container-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/percent-size-image-resize-container-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/percent-size-image-resize-container-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/selection-within-composited-scroller-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/paint/invalidation/spv2/selection-within-composited-scroller-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/paint/invalidation/spv2/selection-within-composited-scroller-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.png b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.png
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.png
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/svg/custom/object-sizing-explicit-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/spv2/svg/custom/object-sizing-no-width-height-change-content-box-size-expected.txt b/third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/svg/custom/object-sizing-no-width-height-change-content-box-size-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/virtual/spv2/svg/custom/object-sizing-no-width-height-change-content-box-size-expected.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/composite-after-paint/svg/custom/object-sizing-no-width-height-change-content-box-size-expected.txt
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/compositing/README.txt
similarity index 60%
rename from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
rename to third_party/blink/web_tests/virtual/composite-after-paint/compositing/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/compositing/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/fast/block/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/fast/block/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/fast/block/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/fast/borders/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/fast/borders/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/fast/borders/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/fast/clip/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/fast/clip/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/fast/clip/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/fast/css/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/fast/css/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/fast/css/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/fast/overflow/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/fast/overflow/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/fast/overflow/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/fast/repaint/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/fast/repaint/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/fast/repaint/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/paint/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/paint/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/paint/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/paint/subpixel/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/paint/subpixel/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/paint/subpixel/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt b/third_party/blink/web_tests/virtual/composite-after-paint/svg/README.txt
similarity index 60%
copy from third_party/blink/web_tests/virtual/spv2/compositing/README.txt
copy to third_party/blink/web_tests/virtual/composite-after-paint/svg/README.txt
index 89dba61c..488f68c 100644
--- a/third_party/blink/web_tests/virtual/spv2/compositing/README.txt
+++ b/third_party/blink/web_tests/virtual/composite-after-paint/svg/README.txt
@@ -1,3 +1,3 @@
-# This suite runs tests with --enable-slimming-paint-v2
+# This suite runs tests with --enable-blink-features=CompositeAfterPaint
 # We also have try bots running full set of layout tests for spv2:
 # https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/block/README.txt b/third_party/blink/web_tests/virtual/spv2/fast/block/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/fast/block/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/borders/README.txt b/third_party/blink/web_tests/virtual/spv2/fast/borders/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/fast/borders/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/clip/README.txt b/third_party/blink/web_tests/virtual/spv2/fast/clip/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/fast/clip/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/css/README.txt b/third_party/blink/web_tests/virtual/spv2/fast/css/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/fast/css/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/overflow/README.txt b/third_party/blink/web_tests/virtual/spv2/fast/overflow/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/fast/overflow/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/fast/repaint/README.txt b/third_party/blink/web_tests/virtual/spv2/fast/repaint/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/fast/repaint/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/README.txt b/third_party/blink/web_tests/virtual/spv2/paint/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/paint/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/paint/subpixel/README.txt b/third_party/blink/web_tests/virtual/spv2/paint/subpixel/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/paint/subpixel/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/virtual/spv2/svg/README.txt b/third_party/blink/web_tests/virtual/spv2/svg/README.txt
deleted file mode 100644
index 89dba61c..0000000
--- a/third_party/blink/web_tests/virtual/spv2/svg/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs tests with --enable-slimming-paint-v2
-# We also have try bots running full set of layout tests for spv2:
-# https://codereview.chromium.org/1283823002
diff --git a/third_party/blink/web_tests/xr/events_session_resetpose.html b/third_party/blink/web_tests/xr/events_session_resetpose.html
index 11d18956..47f4194b 100644
--- a/third_party/blink/web_tests/xr/events_session_resetpose.html
+++ b/third_party/blink/web_tests/xr/events_session_resetpose.html
@@ -52,7 +52,9 @@
   session.addEventListener("resetpose", onPoseReset, false);
 
   // Trigger the reset pose.
-  session.requestAnimationFrame((time, xrFrame) => {});
+  session.requestAnimationFrame(() => {
+    session.requestAnimationFrame(() => {});
+  });
 
   return eventPromise;
 };
diff --git a/third_party/blink/web_tests/xr/xrFrameOfReference_stage_updates.html b/third_party/blink/web_tests/xr/xrFrameOfReference_stage_updates.html
index 31c1a55..81f3693 100644
--- a/third_party/blink/web_tests/xr/xrFrameOfReference_stage_updates.html
+++ b/third_party/blink/web_tests/xr/xrFrameOfReference_stage_updates.html
@@ -38,12 +38,11 @@
   return session.requestFrameOfReference("stage")
     .then((frameOfRef) => new Promise((resolve, reject) => {
       function onFirstFrame(time, xrFrame) {
-        // On the first frame, the stage should be using an emulated frame of
-        // reference because it has no stageParameters yet. So the pose should
-        // be ~1.5 meters off the floor.
+        // On the first frame where the pose has been initialized, the stage
+        // should be using an emulated frame of reference because it has no
+        // stageParameters yet. So the pose should be ~1.5 meters off the floor.
         t.step( () => {
           let pose = xrFrame.getDevicePose(frameOfRef);
-          assert_not_equals(pose, null);
 
           let poseMatrix = pose.poseModelMatrix;
           assert_approx_equals(poseMatrix[12], 0.0, FLOAT_EPSILON);
@@ -51,9 +50,10 @@
           assert_approx_equals(poseMatrix[14], 0.0, FLOAT_EPSILON);
 
           fakeDeviceController.setStageTransform(VALID_STAGE_TRANSFORM);
+          session.requestAnimationFrame(() => {
+            session.requestAnimationFrame(onFrame);
+          });
         });
-
-        session.requestAnimationFrame(onFrame);
       }
 
       function onFrame(time, xrFrame) {
@@ -70,7 +70,9 @@
         resolve();
       }
 
-      session.requestAnimationFrame(onFirstFrame);
+      session.requestAnimationFrame(() => {
+        session.requestAnimationFrame(onFirstFrame);
+      });
     }));
 };
 
diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
index 02cddf7..578c3a31 100644
--- a/third_party/harfbuzz-ng/BUILD.gn
+++ b/third_party/harfbuzz-ng/BUILD.gn
@@ -66,6 +66,11 @@
       "src/src/hb-buffer.h",
       "src/src/hb-buffer.hh",
       "src/src/hb-cache.hh",
+      "src/src/hb-cff-interp-common.hh",
+      "src/src/hb-cff-interp-cs-common.hh",
+      "src/src/hb-cff-interp-dict-common.hh",
+      "src/src/hb-cff1-interp-cs.hh",
+      "src/src/hb-cff2-interp-cs.hh",
       "src/src/hb-common.cc",
       "src/src/hb-common.h",
       "src/src/hb-debug.hh",
@@ -85,9 +90,15 @@
       "src/src/hb-object.hh",
       "src/src/hb-open-file.hh",
       "src/src/hb-open-type.hh",
+      "src/src/hb-ot-cff-common.hh",
+      "src/src/hb-ot-cff1-table.cc",
+      "src/src/hb-ot-cff1-table.hh",
+      "src/src/hb-ot-cff2-table.cc",
+      "src/src/hb-ot-cff2-table.hh",
       "src/src/hb-ot-color-cbdt-table.hh",
       "src/src/hb-ot-color-colr-table.hh",
       "src/src/hb-ot-color-cpal-table.hh",
+      "src/src/hb-ot-deprecated.h",
       "src/src/hb-ot-face.cc",
       "src/src/hb-ot-face.hh",
       "src/src/hb-ot-font.cc",
@@ -174,6 +185,10 @@
       "src/src/hb-shaper.hh",
       "src/src/hb-static.cc",
       "src/src/hb-string-array.hh",
+      "src/src/hb-subset-cff-common.cc",
+      "src/src/hb-subset-cff-common.hh",
+      "src/src/hb-subset-cff1.cc",
+      "src/src/hb-subset-cff2.cc",
       "src/src/hb-subset-glyf.hh",
       "src/src/hb-subset-plan.hh",
       "src/src/hb-subset.h",
diff --git a/third_party/harfbuzz-ng/README.chromium b/third_party/harfbuzz-ng/README.chromium
index a3ee481a..ac74112 100644
--- a/third_party/harfbuzz-ng/README.chromium
+++ b/third_party/harfbuzz-ng/README.chromium
@@ -1,9 +1,9 @@
 Name: harfbuzz-ng
 Short Name: harfbuzz-ng
 URL: http://harfbuzz.org
-Version: 2.2.0-3
-Date: 20181201
-Revision: 000d4b128eba58677acdc3b361829ff2f9a257b1
+Version: 2.2.0-265
+Date: 20181205
+Revision: 79e7e3445efef2dc57f8a10c7e355e802af08868
 Security Critical: yes
 License: MIT
 License File: src/COPYING
diff --git a/third_party/r8/README.chromium b/third_party/r8/README.chromium
index faf25dd..e7cdbf8 100644
--- a/third_party/r8/README.chromium
+++ b/third_party/r8/README.chromium
@@ -1,6 +1,6 @@
 Name: R8
 URL: https://r8.googlesource.com/r8
-Revision: 11730a66460823ab762a309e266b2ad27d4554bc
+Revision: 6116972ceac511b57c91aabd9e9fc0ed6e58381f
 Version: 1.4.13-dev
 License: BSD 3-Clause
 License File: NOT_SHIPPED
diff --git a/third_party/unrar/patches/5.6.8.patch b/third_party/unrar/patches/5.6.8.patch
new file mode 100644
index 0000000..e1cc15e
--- /dev/null
+++ b/third_party/unrar/patches/5.6.8.patch
@@ -0,0 +1,1882 @@
+diff --git a/third_party/unrar/src/arccmt.cpp b/third_party/unrar/src/arccmt.cpp
+index ca98b10706f4..487e2fc5068a 100644
+--- a/third_party/unrar/src/arccmt.cpp
++++ b/third_party/unrar/src/arccmt.cpp
+@@ -1,5 +1,3 @@
+-static bool IsAnsiEscComment(const wchar *Data,size_t Size);
+-
+ bool Archive::GetComment(Array<wchar> *CmtData)
+ {
+   if (!MainComment)
+@@ -43,7 +41,7 @@ bool Archive::GetComment(Array<wchar> *CmtData)
+ #endif
+   }
+ #ifndef SFX_MODULE
+-  if (Format==RARFMT14 && MainHead.PackComment || Format!=RARFMT14 && CommHead.Method!=0x30)
++  if ((Format==RARFMT14 && MainHead.PackComment) || (Format!=RARFMT14 && CommHead.Method!=0x30))
+   {
+     if (Format!=RARFMT14 && (CommHead.UnpVer < 15 || CommHead.UnpVer > VER_UNPACK || CommHead.Method > 0x35))
+       return false;
+diff --git a/third_party/unrar/src/archive.cpp b/third_party/unrar/src/archive.cpp
+index f07ed05c1666..5630ad063aac 100644
+--- a/third_party/unrar/src/archive.cpp
++++ b/third_party/unrar/src/archive.cpp
+@@ -100,6 +100,7 @@ RARFORMAT Archive::IsSignature(const byte *D,size_t Size)
+ {
+   RARFORMAT Type=RARFMT_NONE;
+   if (Size>=1 && D[0]==0x52)
++  {
+ #ifndef SFX_MODULE
+     if (Size>=4 && D[1]==0x45 && D[2]==0x7e && D[3]==0x5e)
+       Type=RARFMT14;
+@@ -119,6 +120,7 @@ RARFORMAT Archive::IsSignature(const byte *D,size_t Size)
+             if (D[6]>1 && D[6]<5)
+               Type=RARFMT_FUTURE;
+       }
++  }
+   return Type;
+ }
+ 
+@@ -203,7 +205,7 @@ bool Archive::IsArchive(bool EnableBroken)
+     HEADER_TYPE Type=GetHeaderType();
+     // In RAR 5.0 we need to quit after reading HEAD_CRYPT if we wish to
+     // avoid the password prompt.
+-    StartFound=Type==HEAD_MAIN || SilentOpen && Type==HEAD_CRYPT;
++    StartFound=Type==HEAD_MAIN || (SilentOpen && Type==HEAD_CRYPT);
+     if (StartFound)
+       break;
+   }
+diff --git a/third_party/unrar/src/arcread.cpp b/third_party/unrar/src/arcread.cpp
+index c8cb1ee53aba..7eec01d7eb0f 100644
+--- a/third_party/unrar/src/arcread.cpp
++++ b/third_party/unrar/src/arcread.cpp
+@@ -10,7 +10,7 @@ size_t Archive::ReadHeader()
+ 
+   CurBlockPos=Tell();
+ 
+-  size_t ReadSize;
++  size_t ReadSize = 0;
+   switch(Format)
+   {
+ #ifndef SFX_MODULE
+@@ -24,6 +24,9 @@ size_t Archive::ReadHeader()
+     case RARFMT50:
+       ReadSize=ReadHeader50();
+       break;
++    case RARFMT_NONE:
++    case RARFMT_FUTURE:
++      break;
+   }
+ 
+   // It is important to check ReadSize>0 here, because it is normal
+@@ -139,7 +142,8 @@ size_t Archive::ReadHeader15()
+ 
+   if (Decrypt)
+   {
+-#ifdef RAR_NOCRYPT // For rarext.dll and unrar_nocrypt.dll.
++#if defined(RAR_NOCRYPT) || \
++    defined(CHROMIUM_UNRAR)  // For rarext.dll and unrar_nocrypt.dll.
+     return 0;
+ #else
+     RequestArcPassword();
+@@ -187,6 +191,7 @@ size_t Archive::ReadHeader15()
+     case HEAD3_FILE:    ShortBlock.HeaderType=HEAD_FILE;     break;
+     case HEAD3_SERVICE: ShortBlock.HeaderType=HEAD_SERVICE;  break;
+     case HEAD3_ENDARC:  ShortBlock.HeaderType=HEAD_ENDARC;   break;
++    default:                                                 break;
+   }
+   CurHeaderType=ShortBlock.HeaderType;
+ 
+@@ -201,7 +206,7 @@ size_t Archive::ReadHeader15()
+     if (ShortBlock.HeaderType==HEAD_MAIN && (ShortBlock.Flags & MHD_COMMENT)!=0)
+     {
+       // Old style (up to RAR 2.9) main archive comment embedded into
+-      // the main archive header found. While we can read the entire 
++      // the main archive header found. While we can read the entire
+       // ShortBlock.HeadSize here and remove this part of "if", it would be
+       // waste of memory, because we'll read and process this comment data
+       // in other function anyway and we do not need them here now.
+@@ -227,7 +232,7 @@ size_t Archive::ReadHeader15()
+       Encrypted=(MainHead.Flags & MHD_PASSWORD)!=0;
+       Signed=MainHead.PosAV!=0 || MainHead.HighPosAV!=0;
+       MainHead.CommentInHeader=(MainHead.Flags & MHD_COMMENT)!=0;
+-    
++
+       // Only for encrypted 3.0+ archives. 2.x archives did not have this
+       // flag, so for non-encrypted archives, we'll set it later based on
+       // file attributes.
+@@ -254,7 +259,7 @@ size_t Archive::ReadHeader15()
+         hd->WinSize=hd->Dir ? 0:0x10000<<((hd->Flags & LHD_WINDOWMASK)>>5);
+         hd->CommentInHeader=(hd->Flags & LHD_COMMENT)!=0;
+         hd->Version=(hd->Flags & LHD_VERSION)!=0;
+-        
++
+         hd->DataSize=Raw.Get4();
+         uint LowUnpSize=Raw.Get4();
+         hd->HostOS=Raw.Get1();
+@@ -279,7 +284,7 @@ size_t Archive::ReadHeader15()
+           {
+             case 13: hd->CryptMethod=CRYPT_RAR13; break;
+             case 15: hd->CryptMethod=CRYPT_RAR15; break;
+-            case 20: 
++            case 20:
+             case 26: hd->CryptMethod=CRYPT_RAR20; break;
+             default: hd->CryptMethod=CRYPT_RAR30; break;
+           }
+@@ -301,7 +306,7 @@ size_t Archive::ReadHeader15()
+         }
+ 
+         hd->Inherited=!FileBlock && (hd->SubFlags & SUBHEAD_FLAGS_INHERITED)!=0;
+-        
++
+         hd->LargeFile=(hd->Flags & LHD_LARGE)!=0;
+ 
+         uint HighPackSize,HighUnpSize;
+@@ -311,7 +316,7 @@ size_t Archive::ReadHeader15()
+           HighUnpSize=Raw.Get4();
+           hd->UnknownUnpSize=(LowUnpSize==0xffffffff && HighUnpSize==0xffffffff);
+         }
+-        else 
++        else
+         {
+           HighPackSize=HighUnpSize=0;
+           // UnpSize equal to 0xffffffff without LHD_LARGE flag indicates
+@@ -506,7 +511,7 @@ size_t Archive::ReadHeader15()
+         NextBlockPos+=Raw.Get4();
+       break;
+   }
+-  
++
+   ushort HeaderCRC=Raw.GetCRC15(false);
+ 
+   // Old AV header does not have header CRC properly set.
+@@ -552,7 +557,7 @@ size_t Archive::ReadHeader50()
+ 
+   if (Decrypt)
+   {
+-#if defined(RAR_NOCRYPT)
++#if defined(RAR_NOCRYPT) || defined(CHROMIUM_UNRAR)
+     return 0;
+ #else
+ 
+@@ -641,7 +646,7 @@ size_t Archive::ReadHeader50()
+     BrokenHeaderMsg();
+     return 0;
+   }
+-  
++
+   Raw.Read(SizeToRead);
+ 
+   if (Raw.Size()<HeaderSize)
+@@ -674,7 +679,7 @@ size_t Archive::ReadHeader50()
+       return 0;
+     }
+   }
+-  
++
+   uint64 ExtraSize=0;
+   if ((ShortBlock.Flags & HFL_EXTRA)!=0)
+   {
+@@ -763,7 +768,7 @@ size_t Archive::ReadHeader50()
+           // to not break normal archive processing by calling function.
+           int64 SaveCurBlockPos=CurBlockPos,SaveNextBlockPos=NextBlockPos;
+           HEADER_TYPE SaveCurHeaderType=CurHeaderType;
+-          
++
+           QOpen.Init(this,false);
+           QOpen.Load(MainHead.QOpenOffset);
+ 
+@@ -788,7 +793,7 @@ size_t Archive::ReadHeader50()
+         hd->PackSize=DataSize;
+         hd->FileFlags=(uint)Raw.GetV();
+         hd->UnpSize=Raw.GetV();
+-        
++
+         hd->UnknownUnpSize=(hd->FileFlags & FHFL_UNPUNKNOWN)!=0;
+         if (hd->UnknownUnpSize)
+           hd->UnpSize=INT64NDF;
+@@ -875,7 +880,7 @@ size_t Archive::ReadHeader50()
+           RecoverySize=Header.RecSectionSize*Header.RecCount;
+         }
+ #endif
+-          
++
+         if (BadCRC) // Add the file name to broken header message displayed above.
+           uiMsg(UIERROR_FHEADERBROKEN,Archive::FileName,hd->FileName);
+       }
+@@ -890,6 +895,8 @@ size_t Archive::ReadHeader50()
+         EndArcHead.RevSpace=false;
+       }
+       break;
++    default:
++      break;
+   }
+ 
+   return Raw.Size();
+@@ -1054,20 +1061,26 @@ void Archive::ProcessExtra50(RawRead *Raw,size_t ExtraSize,BaseBlock *bb)
+             byte Flags=(byte)Raw->GetV();
+             bool UnixTime=(Flags & FHEXTRA_HTIME_UNIXTIME)!=0;
+             if ((Flags & FHEXTRA_HTIME_MTIME)!=0)
++            {
+               if (UnixTime)
+                 hd->mtime.SetUnix(Raw->Get4());
+               else
+                 hd->mtime.SetWin(Raw->Get8());
++            }
+             if ((Flags & FHEXTRA_HTIME_CTIME)!=0)
++            {
+               if (UnixTime)
+                 hd->ctime.SetUnix(Raw->Get4());
+               else
+                 hd->ctime.SetWin(Raw->Get8());
++            }
+             if ((Flags & FHEXTRA_HTIME_ATIME)!=0)
++            {
+               if (UnixTime)
+                 hd->atime.SetUnix((time_t)Raw->Get4());
+               else
+                 hd->atime.SetWin(Raw->Get8());
++            }
+             if (UnixTime && (Flags & FHEXTRA_HTIME_UNIX_NS)!=0) // Add nanoseconds.
+             {
+               uint ns;
+@@ -1292,7 +1305,7 @@ void Archive::ConvertAttributes()
+ 
+   if (mask == (mode_t) -1)
+   {
+-    // umask call returns the current umask value. Argument (022) is not 
++    // umask call returns the current umask value. Argument (022) is not
+     // really important here.
+     mask = umask(022);
+ 
+@@ -1341,10 +1354,12 @@ void Archive::ConvertAttributes()
+ void Archive::ConvertFileHeader(FileHeader *hd)
+ {
+   if (hd->HSType==HSYS_UNKNOWN)
++  {
+     if (hd->Dir)
+       hd->FileAttr=0x10;
+     else
+       hd->FileAttr=0x20;
++  }
+ 
+ #ifdef _WIN_ALL
+   if (hd->HSType==HSYS_UNIX) // Convert Unix, OS X and Android decomposed chracters to Windows precomposed.
+@@ -1369,8 +1384,8 @@ void Archive::ConvertFileHeader(FileHeader *hd)
+ 
+     // ':' in file names is allowed in Unix, but not in Windows.
+     // Even worse, file data will be written to NTFS stream on NTFS,
+-    // so automatic name correction on file create error in extraction 
+-    // routine does not work. In Windows and DOS versions we better 
++    // so automatic name correction on file create error in extraction
++    // routine does not work. In Windows and DOS versions we better
+     // replace ':' now.
+     if (*s==':')
+       *s='_';
+@@ -1382,7 +1397,7 @@ void Archive::ConvertFileHeader(FileHeader *hd)
+     // Still, RAR 4.x uses backslashes as path separator even in Unix.
+     // Forward slash is not allowed in both systems. In RAR 5.0 we use
+     // the forward slash as universal path separator.
+-    if (*s=='/' || *s=='\\' && Format!=RARFMT50)
++    if (*s=='/' || (*s=='\\' && Format!=RARFMT50))
+       *s=CPATHDIVIDER;
+   }
+ }
+@@ -1437,12 +1452,14 @@ bool Archive::ReadSubData(Array<byte> *UnpData,File *DestFile)
+     }
+   }
+   if (SubHead.Encrypted)
++  {
+     if (Cmd->Password.IsSet())
+       SubDataIO.SetEncryption(false,SubHead.CryptMethod,&Cmd->Password,
+                 SubHead.SaltSet ? SubHead.Salt:NULL,SubHead.InitV,
+                 SubHead.Lg2Count,SubHead.HashKey,SubHead.PswCheck);
+     else
+       return false;
++  }
+   SubDataIO.UnpHash.Init(SubHead.FileHash.Type,1);
+   SubDataIO.SetPackedSizeToRead(SubHead.PackSize);
+   SubDataIO.EnableShowProgress(false);
+diff --git a/third_party/unrar/src/cmddata.cpp b/third_party/unrar/src/cmddata.cpp
+index 32b841241e1d..e0c286df6ed4 100644
+--- a/third_party/unrar/src/cmddata.cpp
++++ b/third_party/unrar/src/cmddata.cpp
+@@ -766,10 +766,11 @@ void CommandData::ProcessSwitch(const wchar *Switch)
+                   AlreadyBad=true;
+                   break;
+               };
+-              if (!AlreadyBad)
++              if (!AlreadyBad) {
+                 if (Switch[3]==0)
+                   CommentCharset=FilelistCharset=ErrlogCharset=RedirectCharset=rch;
+                 else
++                {
+                   for (uint I=3;Switch[I]!=0 && !AlreadyBad;I++)
+                     switch(toupperw(Switch[I]))
+                     {
+@@ -787,6 +788,8 @@ void CommandData::ProcessSwitch(const wchar *Switch)
+                         AlreadyBad=true;
+                         break;
+                     }
++                }
++              }
+               // Set it immediately when parsing the command line, so it also
+               // affects messages issued while parsing the command line.
+               SetConsoleRedirectCharset(RedirectCharset);
+@@ -1205,7 +1208,7 @@ int CommandData::IsProcessFile(FileHeader &FileHead,bool *ExactMatch,int MatchTy
+ #ifndef SFX_MODULE
+   if (TimeCheck(FileHead.mtime))
+     return 0;
+-  if ((FileHead.FileAttr & ExclFileAttr)!=0 || InclAttrSet && (FileHead.FileAttr & InclFileAttr)==0)
++  if ((FileHead.FileAttr & ExclFileAttr)!=0 || (InclAttrSet && (FileHead.FileAttr & InclFileAttr)==0))
+     return 0;
+   if (!Dir && SizeCheck(FileHead.UnpSize))
+     return 0;
+@@ -1230,7 +1233,7 @@ void CommandData::ProcessCommand()
+ #ifndef SFX_MODULE
+ 
+   const wchar *SingleCharCommands=L"FUADPXETK";
+-  if (Command[0]!=0 && Command[1]!=0 && wcschr(SingleCharCommands,Command[0])!=NULL || *ArcName==0)
++  if ((Command[0]!=0 && Command[1]!=0 && wcschr(SingleCharCommands,Command[0])!=NULL) || *ArcName==0)
+     OutHelp(*Command==0 ? RARX_SUCCESS:RARX_USERERROR); // Return 'success' for 'rar' without parameters.
+ 
+   const wchar *ArcExt=GetExt(ArcName);
+diff --git a/third_party/unrar/src/consio.cpp b/third_party/unrar/src/consio.cpp
+index 196066ec9630..39c9014503ae 100644
+--- a/third_party/unrar/src/consio.cpp
++++ b/third_party/unrar/src/consio.cpp
+@@ -70,7 +70,7 @@ static void cvt_wprintf(FILE *dest,const wchar *fmt,va_list arglist)
+   PrintfPrepareFmt(fmt,fmtw,ASIZE(fmtw));
+ #ifdef _WIN_ALL
+   safebuf wchar Msg[MaxMsgSize];
+-  if (dest==stdout && StdoutRedirected || dest==stderr && StderrRedirected)
++  if ((dest==stdout && StdoutRedirected) || (dest==stderr && StderrRedirected))
+   {
+     HANDLE hOut=GetStdHandle(dest==stdout ? STD_OUTPUT_HANDLE:STD_ERROR_HANDLE);
+     vswprintf(Msg,ASIZE(Msg),fmtw,arglist);
+@@ -191,10 +191,16 @@ bool GetConsolePassword(UIPASSWORD_TYPE Type,const wchar *FileName,SecPassword *
+   while (true)
+   {
+     if (!StdinRedirected)
++    {
+       if (Type==UIPASSWORD_GLOBAL)
++      {
+         eprintf(L"\n%s: ",St(MAskPsw));
++      }
+       else
++      {
+         eprintf(St(MAskPswFor),FileName);
++      }
++    }
+ 
+     wchar PlainPsw[MAXPASSWORD];
+     GetPasswordText(PlainPsw,ASIZE(PlainPsw));
+diff --git a/third_party/unrar/src/crc.cpp b/third_party/unrar/src/crc.cpp
+index 1097f4cd00d1..8488e102c28e 100644
+--- a/third_party/unrar/src/crc.cpp
++++ b/third_party/unrar/src/crc.cpp
+@@ -15,6 +15,7 @@
+ #include "rar.hpp"
+ 
+ static uint crc_tables[8][256]; // Tables for Slicing-by-8.
++static bool is_initialized = false;
+ 
+ 
+ // Build the classic CRC32 lookup table.
+@@ -49,10 +50,13 @@ static void InitTables()
+ }
+ 
+ 
+-struct CallInitCRC {CallInitCRC() {InitTables();}} static CallInit32;
+-
+ uint CRC32(uint StartCRC,const void *Addr,size_t Size)
+ {
++  if (!is_initialized) {
++    is_initialized = true;
++    InitTables();
++  }
++
+   byte *Data=(byte *)Addr;
+ 
+   // Align Data to 8 for better performance.
+diff --git a/third_party/unrar/src/crypt.cpp b/third_party/unrar/src/crypt.cpp
+index fc2126d46c17..785b5faea53d 100644
+--- a/third_party/unrar/src/crypt.cpp
++++ b/third_party/unrar/src/crypt.cpp
+@@ -48,6 +48,8 @@ void CryptData::DecryptBlock(byte *Buf,size_t Size)
+     case CRYPT_RAR50:
+       rin.blockDecrypt(Buf,Size,Buf);
+       break;
++    case CRYPT_NONE:
++      break;
+   }
+ }
+ 
+@@ -85,6 +87,8 @@ bool CryptData::SetCryptKeys(bool Encrypt,CRYPT_METHOD Method,
+     case CRYPT_RAR50:
+       SetKey50(Encrypt,Password,PwdW,Salt,InitV,Lg2Cnt,HashKey,PswCheck);
+       break;
++    case CRYPT_NONE:
++      break;
+   }
+   cleandata(PwdA,sizeof(PwdA));
+   cleandata(PwdW,sizeof(PwdW));
+diff --git a/third_party/unrar/src/crypt3.cpp b/third_party/unrar/src/crypt3.cpp
+index 48406487e7bf..93467aa3b92d 100644
+--- a/third_party/unrar/src/crypt3.cpp
++++ b/third_party/unrar/src/crypt3.cpp
+@@ -5,8 +5,8 @@ void CryptData::SetKey30(bool Encrypt,SecPassword *Password,const wchar *PwdW,co
+   bool Cached=false;
+   for (uint I=0;I<ASIZE(KDF3Cache);I++)
+     if (KDF3Cache[I].Pwd==*Password &&
+-        (Salt==NULL && !KDF3Cache[I].SaltPresent || Salt!=NULL &&
+-        KDF3Cache[I].SaltPresent && memcmp(KDF3Cache[I].Salt,Salt,SIZE_SALT30)==0))
++        ((Salt==NULL && !KDF3Cache[I].SaltPresent) || (Salt!=NULL &&
++        KDF3Cache[I].SaltPresent && memcmp(KDF3Cache[I].Salt,Salt,SIZE_SALT30)==0)))
+     {
+       memcpy(AESKey,KDF3Cache[I].Key,sizeof(AESKey));
+       SecHideData(AESKey,sizeof(AESKey),false,false);
+@@ -65,4 +65,3 @@ void CryptData::SetKey30(bool Encrypt,SecPassword *Password,const wchar *PwdW,co
+   cleandata(AESKey,sizeof(AESKey));
+   cleandata(AESInit,sizeof(AESInit));
+ }
+-
+diff --git a/third_party/unrar/src/errhnd.cpp b/third_party/unrar/src/errhnd.cpp
+index c867f1fca194..acd2d510384d 100644
+--- a/third_party/unrar/src/errhnd.cpp
++++ b/third_party/unrar/src/errhnd.cpp
+@@ -1,10 +1,11 @@
+-#include "rar.hpp"
+-
+-ErrorHandler::ErrorHandler()
+-{
+-  Clean();
+-}
++// NOTE(vakh): The process.h file needs to be included first because "rar.hpp"
++// defines certain macros that cause symbol redefinition errors
++#if defined(UNRAR_NO_EXCEPTIONS)
++#include "base/logging.h"
++#include "base/process/process.h"
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
+ 
++#include "rar.hpp"
+ 
+ void ErrorHandler::Clean()
+ {
+@@ -322,7 +323,11 @@ void ErrorHandler::Throw(RAR_EXIT Code)
+     mprintf(L"\n%s\n",St(MProgAborted));
+ #endif
+   SetErrorCode(Code);
++#if defined(UNRAR_NO_EXCEPTIONS)
++  CHECK(false) << "Failed with RAR_EXIT code: " << Code;
++#else
+   throw Code;
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
+ }
+ 
+ 
+diff --git a/third_party/unrar/src/errhnd.hpp b/third_party/unrar/src/errhnd.hpp
+index eae591406ac2..24f7962159f9 100644
+--- a/third_party/unrar/src/errhnd.hpp
++++ b/third_party/unrar/src/errhnd.hpp
+@@ -21,13 +21,12 @@ enum RAR_EXIT // RAR exit code.
+ class ErrorHandler
+ {
+   private:
+-    RAR_EXIT ExitCode;
+-    uint ErrCount;
+-    bool EnableBreak;
+-    bool Silent;
+-    bool DisableShutdown; // Shutdown is not suitable after last error.
++    RAR_EXIT ExitCode = RARX_SUCCESS;
++    uint ErrCount = 0;
++    bool EnableBreak = true;
++    bool Silent = false;
++    bool DisableShutdown = false; // Shutdown is not suitable after last error.
+   public:
+-    ErrorHandler();
+     void Clean();
+     void MemoryError();
+     void OpenError(const wchar *FileName);
+@@ -64,8 +63,8 @@ class ErrorHandler
+     void SetDisableShutdown() {DisableShutdown=true;}
+     bool IsShutdownEnabled() {return !DisableShutdown;}
+ 
+-    bool UserBreak; // Ctrl+Break is pressed.
+-    bool MainExit; // main() is completed.
++    bool UserBreak = false; // Ctrl+Break is pressed.
++    bool MainExit = false; // main() is completed.
+ };
+ 
+ 
+diff --git a/third_party/unrar/src/extract.cpp b/third_party/unrar/src/extract.cpp
+index 4540bd398452..f4835067514c 100644
+--- a/third_party/unrar/src/extract.cpp
++++ b/third_party/unrar/src/extract.cpp
+@@ -67,6 +67,7 @@ void CmdExtract::DoExtract()
+   }
+   else
+     if (!Cmd->DisableDone)
++    {
+       if (Cmd->Command[0]=='I')
+         mprintf(St(MDone));
+       else
+@@ -74,6 +75,7 @@ void CmdExtract::DoExtract()
+           mprintf(St(MExtrAllOk));
+         else
+           mprintf(St(MExtrTotalErr),ErrHandler.GetErrorCount());
++    }
+ }
+ 
+ 
+@@ -201,6 +203,7 @@ EXTRACT_ARC_CODE CmdExtract::ExtractArchive()
+ 
+     bool Repeat=false;
+     if (!ExtractCurrentFile(Arc,Size,Repeat))
++    {
+       if (Repeat)
+       {
+         // If we started extraction from not first volume and need to
+@@ -216,6 +219,7 @@ EXTRACT_ARC_CODE CmdExtract::ExtractArchive()
+       }
+       else
+         break;
++    }
+   }
+ 
+ 
+@@ -232,6 +236,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+ {
+   wchar Command=Cmd->Command[0];
+   if (HeaderSize==0)
++  {
+     if (DataIO.UnpVolume)
+     {
+ #ifdef NOVOLUME
+@@ -248,6 +253,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+     }
+     else
+       return false;
++  }
+ 
+   HEADER_TYPE HeaderType=Arc.GetHeaderType();
+   if (HeaderType!=HEAD_FILE)
+@@ -259,6 +265,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+     if (HeaderType==HEAD_SERVICE && PrevProcessed)
+       SetExtraInfo(Cmd,Arc,DestFileName);
+     if (HeaderType==HEAD_ENDARC)
++    {
+       if (Arc.EndArcHead.NextVolume)
+       {
+ #ifndef NOVOLUME
+@@ -273,6 +280,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+       }
+       else
+         return false;
++    }
+     Arc.SeekToNext();
+     return true;
+   }
+@@ -573,6 +581,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+       }
+       FileCount++;
+       if (Command!='I')
++      {
+         if (SkipSolid)
+           mprintf(St(MExtrSkipFile),ArcFileName);
+         else
+@@ -591,6 +600,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+               mprintf(St(MExtrFile),DestFileName);
+               break;
+           }
++      }
+       if (!Cmd->DisablePercentage)
+         mprintf(L"     ");
+ 
+@@ -634,10 +644,12 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+           wchar NameExisting[NM];
+           ExtrPrepareName(Arc,Arc.FileHead.RedirName,NameExisting,ASIZE(NameExisting));
+           if (FileCreateMode && *NameExisting!=0) // *NameExisting can be 0 in case of excessive -ap switch.
++          {
+             if (Type==FSREDIR_HARDLINK)
+               LinkSuccess=ExtractHardlink(DestFileName,NameExisting,ASIZE(NameExisting));
+             else
+               LinkSuccess=ExtractFileCopy(CurFile,Arc.FileName,DestFileName,NameExisting,ASIZE(NameExisting));
++          }
+         }
+         else
+           if (Type==FSREDIR_UNIXSYMLINK || Type==FSREDIR_WINSYMLINK || Type==FSREDIR_JUNCTION)
+@@ -651,7 +663,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+             LinkSuccess=false;
+           }
+           
+-          if (!LinkSuccess || Arc.Format==RARFMT15 && !FileCreateMode)
++          if (!LinkSuccess || (Arc.Format==RARFMT15 && !FileCreateMode))
+           {
+             // RAR 5.x links have a valid data checksum even in case of
+             // failure, because they do not store any data.
+@@ -664,6 +676,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+       }
+       else
+         if (!Arc.FileHead.SplitBefore)
++        {
+           if (Arc.FileHead.Method==0)
+             UnstoreFile(DataIO,Arc.FileHead.UnpSize);
+           else
+@@ -677,6 +690,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+ #endif
+               Unp->DoUnpack(Arc.FileHead.UnpVer,Arc.FileHead.Solid);
+           }
++        }
+ 
+       Arc.SeekToNext();
+ 
+@@ -731,7 +745,7 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+         mprintf(L"\b\b\b\b\b     ");
+ 
+       if (!TestMode && (Command=='X' || Command=='E') &&
+-          (!LinkEntry || Arc.FileHead.RedirType==FSREDIR_FILECOPY && LinkSuccess) && 
++          (!LinkEntry || (Arc.FileHead.RedirType==FSREDIR_FILECOPY && LinkSuccess)) && 
+           (!BrokenFile || Cmd->KeepBroken))
+       {
+         // We could preallocate more space that really written to broken file.
+@@ -774,11 +788,13 @@ bool CmdExtract::ExtractCurrentFile(Archive &Arc,size_t HeaderSize,bool &Repeat)
+   if (DataIO.NextVolumeMissing)
+     return false;
+   if (!ExtrFile)
++  {
+     if (!Arc.Solid)
+       Arc.SeekToNext();
+     else
+       if (!SkipSolid)
+         return false;
++  }
+   return true;
+ }
+ 
+diff --git a/third_party/unrar/src/file.cpp b/third_party/unrar/src/file.cpp
+index e2bb42a616ad..5188dbff715c 100644
+--- a/third_party/unrar/src/file.cpp
++++ b/third_party/unrar/src/file.cpp
+@@ -23,10 +23,12 @@ File::File()
+ File::~File()
+ {
+   if (hFile!=FILE_BAD_HANDLE && !SkipClose)
++  {
+     if (NewFile)
+       Delete();
+     else
+       Close();
++  }
+ }
+ 
+ 
+@@ -49,6 +51,11 @@ bool File::Open(const wchar *Name,uint Mode)
+   bool UpdateMode=(Mode & FMF_UPDATE)!=0;
+   bool WriteMode=(Mode & FMF_WRITE)!=0;
+ #ifdef _WIN_ALL
++#if defined(CHROMIUM_UNRAR)
++  // Do not open a file handle since the sandbox doesn't allow it. Use the
++  // handle provided by the caller.
++  hNewFile = hOpenFile;
++#else
+   uint Access=WriteMode ? GENERIC_WRITE:GENERIC_READ;
+   if (UpdateMode)
+     Access|=GENERIC_WRITE;
+@@ -87,6 +94,14 @@ bool File::Open(const wchar *Name,uint Mode)
+   if (hNewFile==FILE_BAD_HANDLE && LastError==ERROR_FILE_NOT_FOUND)
+     ErrorType=FILE_NOTFOUND;
+ 
++#endif  // defined(CHROMIUM_UNRAR)
++
++#else
++
++#if defined(CHROMIUM_UNRAR)
++  // Do not open a file handle since the sandbox doesn't allow it. Use the
++  // handle provided by the caller.
++  int handle = hOpenFile;
+ #else
+   int flags=UpdateMode ? O_RDWR:(WriteMode ? O_WRONLY:O_RDONLY);
+ #ifdef O_BINARY
+@@ -97,8 +112,9 @@ bool File::Open(const wchar *Name,uint Mode)
+ #endif
+   char NameA[NM];
+   WideToChar(Name,NameA,ASIZE(NameA));
+-
+   int handle=open(NameA,flags);
++#endif  // defined(CHROMIUM_UNRAR)
++
+ #ifdef LOCK_EX
+ 
+ #ifdef _OSF_SOURCE
+@@ -228,6 +244,8 @@ bool File::Close()
+   {
+     if (!SkipClose)
+     {
++#if !defined(CHROMIUM_UNRAR)
++// unrar should not close the file handle since it wasn't opened by unrar.
+ #ifdef _WIN_ALL
+       // We use the standard system handle for stdout in Windows
+       // and it must not  be closed here.
+@@ -240,6 +258,7 @@ bool File::Close()
+       Success=fclose(hFile)!=EOF;
+ #endif
+ #endif
++#endif  // defined(CHROMIUM_UNRAR)
+     }
+     hFile=FILE_BAD_HANDLE;
+   }
+@@ -367,6 +386,7 @@ int File::Read(void *Data,size_t Size)
+     {
+       ErrorType=FILE_READERROR;
+       if (AllowExceptions)
++      {
+         if (IgnoreReadErrors)
+         {
+           ReadSize=0;
+@@ -384,6 +404,7 @@ int File::Read(void *Data,size_t Size)
+             continue;
+           ErrHandler.ReadError(FileName);
+         }
++      }
+     }
+     break;
+   }
+@@ -499,18 +520,22 @@ bool File::RawSeek(int64 Offset,int Method)
+ int64 File::Tell()
+ {
+   if (hFile==FILE_BAD_HANDLE)
++  {
+     if (AllowExceptions)
+       ErrHandler.SeekError(FileName);
+     else
+       return -1;
++  }
+ #ifdef _WIN_ALL
+   LONG HighDist=0;
+   uint LowDist=SetFilePointer(hFile,0,&HighDist,FILE_CURRENT);
+   if (LowDist==0xffffffff && GetLastError()!=NO_ERROR)
++  {
+     if (AllowExceptions)
+       ErrHandler.SeekError(FileName);
+     else
+       return -1;
++  }
+   return INT32TO64(HighDist,LowDist);
+ #else
+ #ifdef FILE_USE_OPEN
+@@ -727,3 +752,9 @@ int64 File::Copy(File &Dest,int64 Length)
+   return CopySize;
+ }
+ #endif
++
++#if defined(CHROMIUM_UNRAR)
++void File::SetFileHandle(FileHandle hF) {
++  hOpenFile = hF;
++}
++#endif  // defined(CHROMIUM_UNRAR)
+diff --git a/third_party/unrar/src/file.hpp b/third_party/unrar/src/file.hpp
+index f99336a7d0e2..a1d42a05b6cc 100644
+--- a/third_party/unrar/src/file.hpp
++++ b/third_party/unrar/src/file.hpp
+@@ -68,6 +68,10 @@ class File
+     wchar FileName[NM];
+ 
+     FILE_ERRORTYPE ErrorType;
++
++#if defined(CHROMIUM_UNRAR)
++    FileHandle hOpenFile;
++#endif  // defined(CHROMIUM_UNRAR)
+   public:
+     File();
+     virtual ~File();
+@@ -114,6 +118,14 @@ class File
+ #ifdef _WIN_ALL
+     void RemoveSequentialFlag() {NoSequentialRead=true;}
+ #endif
++
++#if defined(CHROMIUM_UNRAR)
++    // Since unrar runs in a sandbox, it doesn't have the permission to open
++    // files on the filesystem. Instead, the caller opens the file and passes
++    // the file handle to unrar. This handle is then used to read the file.
++    void SetFileHandle(FileHandle file);
++#endif  // defined(CHROMIUM_UNRAR)
++
+ #ifdef _UNIX
+     int GetFD()
+     {
+diff --git a/third_party/unrar/src/filestr.cpp b/third_party/unrar/src/filestr.cpp
+index a5d29d74bcfa..d25cf09b5f4f 100644
+--- a/third_party/unrar/src/filestr.cpp
++++ b/third_party/unrar/src/filestr.cpp
+@@ -14,10 +14,12 @@ bool ReadTextFile(
+   *FileName=0;
+ 
+   if (Name!=NULL)
++  {
+     if (Config)
+       GetConfigName(Name,FileName,ASIZE(FileName),true,false);
+     else
+       wcsncpyz(FileName,Name,ASIZE(FileName));
++  }
+ 
+   File SrcFile;
+   if (*FileName!=0)
+diff --git a/third_party/unrar/src/hash.cpp b/third_party/unrar/src/hash.cpp
+index 42791f4f437a..899b0ed1ab07 100644
+--- a/third_party/unrar/src/hash.cpp
++++ b/third_party/unrar/src/hash.cpp
+@@ -30,8 +30,8 @@ bool HashValue::operator == (const HashValue &cmp)
+ {
+   if (Type==HASH_NONE || cmp.Type==HASH_NONE)
+     return true;
+-  if (Type==HASH_RAR14 && cmp.Type==HASH_RAR14 || 
+-      Type==HASH_CRC32 && cmp.Type==HASH_CRC32)
++  if ((Type==HASH_RAR14 && cmp.Type==HASH_RAR14) || 
++      (Type==HASH_CRC32 && cmp.Type==HASH_CRC32))
+     return CRC32==cmp.CRC32;
+   if (Type==HASH_BLAKE2 && cmp.Type==HASH_BLAKE2)
+     return memcmp(Digest,cmp.Digest,sizeof(Digest))==0;
+diff --git a/third_party/unrar/src/isnt.cpp b/third_party/unrar/src/isnt.cpp
+index 6fadec049fe4..d30adf550925 100644
+--- a/third_party/unrar/src/isnt.cpp
++++ b/third_party/unrar/src/isnt.cpp
+@@ -1,24 +1,18 @@
+ #include "rar.hpp"
+ 
+ #ifdef _WIN_ALL
++#include "versionhelpers.h"
++
+ DWORD WinNT()
+ {
+-  static int dwPlatformId=-1;
+-  static DWORD dwMajorVersion,dwMinorVersion;
+-  if (dwPlatformId==-1)
+-  {
+-    OSVERSIONINFO WinVer;
+-    WinVer.dwOSVersionInfoSize=sizeof(WinVer);
+-    GetVersionEx(&WinVer);
+-    dwPlatformId=WinVer.dwPlatformId;
+-    dwMajorVersion=WinVer.dwMajorVersion;
+-    dwMinorVersion=WinVer.dwMinorVersion;
+-  }
+-  DWORD Result=0;
+-  if (dwPlatformId==VER_PLATFORM_WIN32_NT)
+-    Result=dwMajorVersion*0x100+dwMinorVersion;
+-
+-
+-  return Result;
++  if (!IsWindowsXPOrGreater())
++    return WNT_NONE;
++  if (!IsWindowsVistaOrGreater())
++    return WNT_WXP;
++  if (!IsWindows7OrGreater()) return WNT_VISTA;
++  if (!IsWindows8OrGreater()) return WNT_W7;
++  if (!IsWindows8Point1OrGreater()) return WNT_W8;
++  if (!IsWindows10OrGreater()) return WNT_W81;
++  return WNT_W10;
+ }
+ #endif
+diff --git a/third_party/unrar/src/isnt.hpp b/third_party/unrar/src/isnt.hpp
+index 85790da46290..a02174447e29 100644
+--- a/third_party/unrar/src/isnt.hpp
++++ b/third_party/unrar/src/isnt.hpp
+@@ -1,6 +1,8 @@
+ #ifndef _RAR_ISNT_
+ #define _RAR_ISNT_
+ 
++#include "windows.h"
++
+ enum WINNT_VERSION {
+   WNT_NONE=0,WNT_NT351=0x0333,WNT_NT4=0x0400,WNT_W2000=0x0500,
+   WNT_WXP=0x0501,WNT_W2003=0x0502,WNT_VISTA=0x0600,WNT_W7=0x0601,
+@@ -9,5 +11,4 @@ enum WINNT_VERSION {
+ 
+ DWORD WinNT();
+ 
+-
+ #endif
+diff --git a/third_party/unrar/src/list.cpp b/third_party/unrar/src/list.cpp
+index b957f161bfad..3a17b6cbfa9d 100644
+--- a/third_party/unrar/src/list.cpp
++++ b/third_party/unrar/src/list.cpp
+@@ -1,10 +1,7 @@
+ #include "rar.hpp"
+ 
+ static void ListFileHeader(Archive &Arc,FileHeader &hd,bool &TitleShown,bool Verbose,bool Technical,bool Bare);
+-static void ListSymLink(Archive &Arc);
+ static void ListFileAttr(uint A,HOST_SYSTEM_TYPE HostType,wchar *AttrStr,size_t AttrSize);
+-static void ListOldSubHeader(Archive &Arc);
+-static void ListNewSubHeader(CommandData *Cmd,Archive &Arc);
+ 
+ void ListArchive(CommandData *Cmd)
+ {
+@@ -48,6 +45,7 @@ void ListArchive(CommandData *Cmd)
+           if (Arc.SFXSize>0)
+             mprintf(L"%s%s", SetCount++ > 0 ? L", ":L"", St(MListSFX));
+           if (Arc.Volume)
++          {
+             if (Arc.Format==RARFMT50)
+             {
+               // RAR 5.0 archives store the volume number in main header,
+@@ -58,6 +56,7 @@ void ListArchive(CommandData *Cmd)
+             }
+             else
+               mprintf(L"%s%s", SetCount++ > 0 ? L", ":L"", St(MListVolume));
++          }
+           if (Arc.Protected)
+             mprintf(L"%s%s", SetCount++ > 0 ? L", ":L"", St(MListRR));
+           if (Arc.Locked)
+@@ -110,10 +109,13 @@ void ListArchive(CommandData *Cmd)
+                   ListFileHeader(Arc,Arc.SubHead,TitleShown,Verbose,true,false);
+               }
+               break;
++            default:
++              break;
+           }
+           Arc.SeekToNext();
+         }
+         if (!Bare && !Technical)
++        {
+           if (TitleShown)
+           {
+             wchar UnpSizeText[20];
+@@ -142,12 +144,13 @@ void ListArchive(CommandData *Cmd)
+           }
+           else
+             mprintf(St(MListNoFiles));
++        }
+ 
+         ArcCount++;
+ 
+ #ifndef NOVOLUME
+         if (Cmd->VolSize!=0 && (Arc.FileHead.SplitAfter ||
+-            Arc.GetHeaderType()==HEAD_ENDARC && Arc.EndArcHead.NextVolume) &&
++            (Arc.GetHeaderType()==HEAD_ENDARC && Arc.EndArcHead.NextVolume)) &&
+             MergeArchive(Arc,NULL,false,Cmd->Command[0]))
+           Arc.Seek(0,SEEK_SET);
+         else
+@@ -272,9 +275,12 @@ void ListFileHeader(Archive &Arc,FileHeader &hd,bool &TitleShown,bool Verbose,bo
+             Type=St(MListHardlink); break;
+           case FSREDIR_FILECOPY:
+             Type=St(MListCopy);     break;
++          case FSREDIR_NONE:
++            break;
+         }
+       mprintf(L"\n%12ls: %ls",St(MListType),Type);
+       if (hd.RedirType!=FSREDIR_NONE)
++      {
+         if (Format==RARFMT15)
+         {
+           char LinkTargetA[NM];
+@@ -296,6 +302,7 @@ void ListFileHeader(Archive &Arc,FileHeader &hd,bool &TitleShown,bool Verbose,bo
+         }
+         else
+           mprintf(L"\n%12ls: %ls",St(MListTarget),hd.RedirName);
++      }
+     }
+     if (!hd.Dir)
+     {
+diff --git a/third_party/unrar/src/match.cpp b/third_party/unrar/src/match.cpp
+index 4369a578c3ab..146a3b62a6fd 100644
+--- a/third_party/unrar/src/match.cpp
++++ b/third_party/unrar/src/match.cpp
+@@ -47,6 +47,7 @@ bool CmpName(const wchar *Wildcard,const wchar *Name,int CmpMode)
+         mwcsicompc(Path1,Path2,ForceCase)!=0)
+       return(false);
+     if (CmpMode==MATCH_SUBPATH || CmpMode==MATCH_WILDSUBPATH)
++    {
+       if (IsWildcard(Path1))
+         return(match(Wildcard,Name,ForceCase));
+       else
+@@ -58,6 +59,7 @@ bool CmpName(const wchar *Wildcard,const wchar *Name,int CmpMode)
+         else
+           if (mwcsicompc(Path1,Path2,ForceCase)!=0)
+             return(false);
++    }
+   }
+   wchar *Name1=PointToName(Wildcard);
+   wchar *Name2=PointToName(Name);
+diff --git a/third_party/unrar/src/model.cpp b/third_party/unrar/src/model.cpp
+index 83391c5a4510..1ca9f03e9bcc 100644
+--- a/third_party/unrar/src/model.cpp
++++ b/third_party/unrar/src/model.cpp
+@@ -43,13 +43,27 @@ void ModelPPM::RestartModelRare()
+   InitRL=-(MaxOrder < 12 ? MaxOrder:12)-1;
+   MinContext = MaxContext = (RARPPM_CONTEXT*) SubAlloc.AllocContext();
+   if (MinContext == NULL)
++  {
++#if defined(UNRAR_NO_EXCEPTIONS)
++    base::TerminateBecauseOutOfMemory(0);
++#else
+     throw std::bad_alloc();
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
++  }
++
+   MinContext->Suffix=NULL;
+   OrderFall=MaxOrder;
+   MinContext->U.SummFreq=(MinContext->NumStats=256)+1;
+   FoundState=MinContext->U.Stats=(RARPPM_STATE*)SubAlloc.AllocUnits(256/2);
+   if (FoundState == NULL)
++  {
++#if defined(UNRAR_NO_EXCEPTIONS)
++    base::TerminateBecauseOutOfMemory(0);
++#else
+     throw std::bad_alloc();
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
++  }
++
+   for (RunLength=InitRL, PrevSuccess=i=0;i < 256;i++) 
+   {
+     MinContext->U.Stats[i].Symbol=i;      
+diff --git a/third_party/unrar/src/os.hpp b/third_party/unrar/src/os.hpp
+index d4a7426d9ec4..bc1112633f7d 100644
+--- a/third_party/unrar/src/os.hpp
++++ b/third_party/unrar/src/os.hpp
+@@ -32,17 +32,21 @@
+ #define STRICT 1
+ #endif
+ 
++#if !defined(CHROMIUM_UNRAR)
+ #define UNICODE
+ #undef WINVER
+ #undef _WIN32_WINNT
+ #define WINVER 0x0501
+ #define _WIN32_WINNT 0x0501
++#endif  // CHROMIUM_UNRAR
+ 
+-#if !defined(ZIPSFX)
++#if !defined(ZIPSFX) && !defined(CHROMIUM_UNRAR)
+ #define RAR_SMP
+ #endif
+ 
++#if !defined(CHROMIUM_UNRAR)
+ #define WIN32_LEAN_AND_MEAN
++#endif  // CHROMIUM_UNRAR
+ 
+ #include <windows.h>
+ #include <prsht.h>
+@@ -74,8 +78,11 @@
+   #include <direct.h>
+   #include <intrin.h>
+ 
++#if !defined(CHROMIUM_UNRAR)
+   #define USE_SSE
+   #define SSE_ALIGNMENT 16
++#endif  // CHROMIUM_UNRAR
++
+ #else
+   #include <dirent.h>
+ #endif // _MSC_VER
+diff --git a/third_party/unrar/src/pathfn.cpp b/third_party/unrar/src/pathfn.cpp
+index 28680672efef..69d648e95871 100644
+--- a/third_party/unrar/src/pathfn.cpp
++++ b/third_party/unrar/src/pathfn.cpp
+@@ -346,7 +346,7 @@ void NextVolumeName(wchar *ArcName,uint MaxLength,bool OldNumbering)
+     ChPtr=GetExt(ArcName);
+   }
+   else
+-    if (ChPtr[1]==0 && wcslen(ArcName)<MaxLength-3 || wcsicomp(ChPtr+1,L"exe")==0 || wcsicomp(ChPtr+1,L"sfx")==0)
++    if ((ChPtr[1]==0 && wcslen(ArcName)<MaxLength-3) || wcsicomp(ChPtr+1,L"exe")==0 || wcsicomp(ChPtr+1,L"sfx")==0)
+       wcscpy(ChPtr+1,L"rar");
+   if (!OldNumbering)
+   {
+@@ -417,7 +417,7 @@ void MakeNameUsable(char *Name,bool Extended)
+ #endif
+   for (char *s=Name;*s!=0;s=charnext(s))
+   {
+-    if (strchr(Extended ? "?*<>|\"":"?*",*s)!=NULL || Extended && (byte)*s<32)
++    if (strchr(Extended ? "?*<>|\"":"?*",*s)!=NULL || (Extended && (byte)*s<32))
+       *s='_';
+ #ifdef _EMX
+     if (*s=='=')
+@@ -427,7 +427,7 @@ void MakeNameUsable(char *Name,bool Extended)
+     if (s-Name>1 && *s==':')
+       *s='_';
+     // Remove ' ' and '.' before path separator, but allow .\ and ..\.
+-    if ((*s==' ' || *s=='.' && s>Name && !IsPathDiv(s[-1]) && s[-1]!='.') && IsPathDiv(s[1]))
++    if ((*s==' ' || (*s=='.' && s>Name && !IsPathDiv(s[-1]) && s[-1]!='.')) && IsPathDiv(s[1]))
+       *s='_';
+ #endif
+   }
+@@ -438,7 +438,7 @@ void MakeNameUsable(wchar *Name,bool Extended)
+ {
+   for (wchar *s=Name;*s!=0;s++)
+   {
+-    if (wcschr(Extended ? L"?*<>|\"":L"?*",*s)!=NULL || Extended && (uint)*s<32)
++    if (wcschr(Extended ? L"?*<>|\"":L"?*",*s)!=NULL || (Extended && (uint)*s<32))
+       *s='_';
+ #ifndef _UNIX
+     if (s-Name>1 && *s==':')
+@@ -541,7 +541,7 @@ bool IsFullPath(const wchar *Path)
+     return true;
+ */
+ #if defined(_WIN_ALL) || defined(_EMX)
+-  return Path[0]=='\\' && Path[1]=='\\' || IsDriveLetter(Path) && IsPathDiv(Path[2]);
++  return (Path[0]=='\\' && Path[1]=='\\') || (IsDriveLetter(Path) && IsPathDiv(Path[2]));
+ #else
+   return IsPathDiv(Path[0]);
+ #endif
+@@ -722,11 +722,12 @@ static void GenArcName(wchar *ArcName,const wchar *GenerateMask,uint ArcNumber,b
+ 
+   int WeekDay=rlt.wDay==0 ? 6:rlt.wDay-1;
+   int StartWeekDay=rlt.yDay-WeekDay;
+-  if (StartWeekDay<0)
++  if (StartWeekDay<0) {
+     if (StartWeekDay<=-4)
+       StartWeekDay+=IsLeapYear(rlt.Year-1) ? 366:365;
+     else
+       StartWeekDay=0;
++  }
+   int CurWeek=StartWeekDay/7+1;
+   if (StartWeekDay%7>=4)
+     CurWeek++;
+@@ -970,7 +971,7 @@ void MakeNameCompatible(wchar *Name)
+       for (int I=Dest-1;I>0 && (Name[I]==' ' || Name[I]=='.');I--)
+       {
+         // Permit path1/./path2 and ../path1 paths.
+-        if (Name[I]=='.' && (IsPathDiv(Name[I-1]) || Name[I-1]=='.' && I==1))
++        if (Name[I]=='.' && (IsPathDiv(Name[I-1]) || (Name[I-1]=='.' && I==1)))
+           break;
+         Dest--;
+       }
+diff --git a/third_party/unrar/src/rarvm.cpp b/third_party/unrar/src/rarvm.cpp
+index 8d8675a39bd7..bcb0a0e68089 100644
+--- a/third_party/unrar/src/rarvm.cpp
++++ b/third_party/unrar/src/rarvm.cpp
+@@ -52,12 +52,12 @@ void RarVM::Prepare(byte *Code,uint CodeSize,VM_PreparedProgram *Prg)
+     uint CRC;
+     VM_StandardFilters Type;
+   } static StdList[]={
+-    53, 0xad576887, VMSF_E8,
+-    57, 0x3cd7e57e, VMSF_E8E9,
+-   120, 0x3769893f, VMSF_ITANIUM,
+-    29, 0x0e06077d, VMSF_DELTA,
+-   149, 0x1c2c5dc8, VMSF_RGB,
+-   216, 0xbc85e701, VMSF_AUDIO
++    {53, 0xad576887, VMSF_E8},
++    {57, 0x3cd7e57e, VMSF_E8E9},
++   {120, 0x3769893f, VMSF_ITANIUM},
++    {29, 0x0e06077d, VMSF_DELTA},
++   {149, 0x1c2c5dc8, VMSF_RGB},
++   {216, 0xbc85e701, VMSF_AUDIO}
+   };
+   uint CodeCRC=CRC32(0xffffffff,Code,CodeSize)^0xffffffff;
+   for (uint I=0;I<ASIZE(StdList);I++)
+@@ -327,6 +327,8 @@ bool RarVM::ExecuteStandardFilter(VM_StandardFilters FilterType)
+         }
+       }
+       break;
++    case VMSF_NONE:
++      break;
+   }
+   return true;
+ }
+diff --git a/third_party/unrar/src/rdwrfn.cpp b/third_party/unrar/src/rdwrfn.cpp
+index f75f66450b2b..001363090bc3 100644
+--- a/third_party/unrar/src/rdwrfn.cpp
++++ b/third_party/unrar/src/rdwrfn.cpp
+@@ -118,7 +118,7 @@ int ComprDataIO::UnpRead(byte *Addr,size_t Count)
+     // Since we adjust data size for decryption earlier above,
+     // it does not hurt "Keep broken files" mode efficiency.
+     if (UnpVolume && UnpPackedSize == 0 && 
+-        (ReadSize==0 || Decryption && (TotalRead & CRYPT_BLOCK_MASK) != 0) )
++        (ReadSize==0 || (Decryption && (TotalRead & CRYPT_BLOCK_MASK) != 0)) )
+     {
+ #ifndef NOVOLUME
+       if (!MergeArchive(*SrcArc,this,true,CurrentCommand))
+diff --git a/third_party/unrar/src/recvol3.cpp b/third_party/unrar/src/recvol3.cpp
+index 0d18f079b332..1b3b66caa99c 100644
+--- a/third_party/unrar/src/recvol3.cpp
++++ b/third_party/unrar/src/recvol3.cpp
+@@ -89,12 +89,16 @@ static bool IsNewStyleRev(const wchar *Name)
+   if (Ext==NULL)
+     return true;
+   int DigitGroup=0;
+-  for (Ext--;Ext>Name;Ext--)
+-    if (!IsDigit(*Ext))
+-      if (*Ext=='_' && IsDigit(*(Ext-1)))
++  for (Ext--;Ext>Name;Ext--) {
++    if (!IsDigit(*Ext)) {
++      if (*Ext=='_' && IsDigit(*(Ext-1))) {
+         DigitGroup++;
+-      else
++      }
++      else {
+         break;
++      }
++    }
++  }
+   return DigitGroup<2;
+ }
+ 
+@@ -228,7 +232,7 @@ bool RecVolumes3::Restore(RAROptions *Cmd,const wchar *Name,bool Silent)
+     }
+     if (P[1]+P[2]>255)
+       continue;
+-    if (RecVolNumber!=0 && RecVolNumber!=P[1] || FileNumber!=0 && FileNumber!=P[2])
++    if ((RecVolNumber!=0 && RecVolNumber!=P[1]) || (FileNumber!=0 && FileNumber!=P[2]))
+     {
+       uiMsg(UIERROR_RECVOLDIFFSETS,CurName,PrevName);
+       return false;
+diff --git a/third_party/unrar/src/rs16.cpp b/third_party/unrar/src/rs16.cpp
+index f23cff8574db..335d342768a6 100644
+--- a/third_party/unrar/src/rs16.cpp
++++ b/third_party/unrar/src/rs16.cpp
+@@ -27,7 +27,7 @@ RSCoder16::~RSCoder16()
+   delete[] MX;
+   delete[] ValidFlags;
+ }
+-    
++
+ 
+ // Initialize logarithms and exponents Galois field tables.
+ void RSCoder16::gfInit()
+@@ -41,7 +41,7 @@ void RSCoder16::gfInit()
+     gfExp[L]=E;
+     gfExp[L+gfSize]=E;  // Duplicate the table to avoid gfExp overflow check.
+     E<<=1;
+-    if (E>gfSize) 
++    if (E>gfSize)
+       E^=0x1100B; // Irreducible field-generator polynomial.
+   }
+ 
+@@ -59,7 +59,7 @@ uint RSCoder16::gfAdd(uint a,uint b) // Addition in Galois field.
+ }
+ 
+ 
+-uint RSCoder16::gfMul(uint a,uint b) // Multiplication in Galois field. 
++uint RSCoder16::gfMul(uint a,uint b) // Multiplication in Galois field.
+ {
+   return gfExp[gfLog[a]+gfLog[b]];
+ }
+@@ -144,7 +144,7 @@ void RSCoder16::MakeDecoderMatrix()
+ }
+ 
+ 
+-// Apply Gauss–Jordan elimination to find inverse of decoder matrix.
++// Apply Gauss-Jordan elimination to find inverse of decoder matrix.
+ // We have the square NDxND matrix, but we do not store its trivial
+ // diagonal "1" rows matching valid data, so we work with NExND matrix.
+ // Our original Cauchy matrix does not contain 0, so we skip search
+@@ -156,7 +156,7 @@ void RSCoder16::InvertDecoderMatrix()
+   for (uint Kr = 0, Kf = 0; Kr < NE; Kr++, Kf++)
+   {
+     while (ValidFlags[Kf]) // Skip trivial rows.
+-      Kf++;                 
++      Kf++;
+     MI[Kr * ND + Kf] = 1;  // Set diagonal 1.
+   }
+ 
+@@ -174,7 +174,7 @@ void RSCoder16::InvertDecoderMatrix()
+       // after MI[..]^=, but we do not need it for matrix inversion.
+       for (uint I = 0; I < NE; I++)
+         MI[I * ND + Kf] ^= MX[I * ND + Kf];
+-      Kf++;                 
++      Kf++;
+     }
+ 
+     if (Kf == ND)
+@@ -186,14 +186,14 @@ void RSCoder16::InvertDecoderMatrix()
+     uint PInv = gfInv( MXk[Kf] ); // Pivot inverse.
+     // Divide the pivot row by pivot, so pivot cell contains 1.
+     for (uint I = 0; I < ND; I++)
+-    { 
++    {
+       MXk[I] = gfMul( MXk[I], PInv );
+       MIk[I] = gfMul( MIk[I], PInv );
+     }
+ 
+     for (uint I = 0; I < NE; I++)
+       if (I != Kr) // For all rows except containing the pivot cell.
+-      { 
++      {
+         // Apply Gaussian elimination Mij -= Mkj * Mik / pivot.
+         // Since pivot is already 1, it is reduced to Mij -= Mkj * Mik.
+         uint *MXi = MX + I * ND; // i-th row of main matrix.
+@@ -361,7 +361,7 @@ bool RSCoder16::SSE_UpdateECC(uint DataNum, uint ECCNum, const byte *Data, byte
+     __m128i LowBytes1=_mm_and_si128(D[1],LowByteMask);
+     __m128i HighBytes=_mm_packus_epi16(HighBytes0,HighBytes1);
+     __m128i LowBytes=_mm_packus_epi16(LowBytes0,LowBytes1);
+-    
++
+     // Multiply bits 0..3 of low bytes. Store low and high product bytes
+     // separately in cumulative sum variables.
+     __m128i LowBytesLow4=_mm_and_si128(LowBytes,Low4Mask);
+@@ -377,7 +377,7 @@ bool RSCoder16::SSE_UpdateECC(uint DataNum, uint ECCNum, const byte *Data, byte
+     // Add new product to existing sum, low and high bytes separately.
+     LowBytesMultSum=_mm_xor_si128(LowBytesMultSum,LowBytesHigh4MultLow);
+     HighBytesMultSum=_mm_xor_si128(HighBytesMultSum,LowBytesHigh4MultHigh);
+-    
++
+     // Multiply bits 0..3 of high bytes. Store low and high product bytes separately.
+     __m128i HighBytesLow4=_mm_and_si128(HighBytes,Low4Mask);
+     __m128i HighBytesLow4MultLow=_mm_shuffle_epi8(T2L,HighBytesLow4);
+@@ -413,7 +413,7 @@ bool RSCoder16::SSE_UpdateECC(uint DataNum, uint ECCNum, const byte *Data, byte
+   // because Data and ECC can have different alignment offsets.
+   for (; Pos<BlockSize; Pos+=2)
+     *(ushort*)(ECC+Pos) ^= gfMul( M, *(ushort*)(Data+Pos) );
+-  
++
+   return true;
+ }
+ #endif
+diff --git a/third_party/unrar/src/scantree.cpp b/third_party/unrar/src/scantree.cpp
+index 8b89412415f3..d7233daf99d7 100644
+--- a/third_party/unrar/src/scantree.cpp
++++ b/third_party/unrar/src/scantree.cpp
+@@ -218,7 +218,7 @@ bool ScanTree::GetNextMask()
+   wchar *Name=PointToName(CurMask);
+   if (*Name==0)
+     wcsncatz(CurMask,MASKALL,ASIZE(CurMask));
+-  if (Name[0]=='.' && (Name[1]==0 || Name[1]=='.' && Name[2]==0))
++  if (Name[0]=='.' && (Name[1]==0 || (Name[1]=='.' && Name[2]==0)))
+   {
+     AddEndSlash(CurMask,ASIZE(CurMask));
+     wcsncatz(CurMask,MASKALL,ASIZE(CurMask));
+@@ -257,9 +257,9 @@ SCAN_CODE ScanTree::FindProc(FindData *FD)
+     // at top level in recursion mode. We always comrpess the entire directory
+     // if folder wildcard is specified.
+     bool SearchAll=!IsDir && (Depth>0 || Recurse==RECURSE_ALWAYS ||
+-                   FolderWildcards && Recurse!=RECURSE_DISABLE || 
+-                   Wildcards && Recurse==RECURSE_WILDCARDS || 
+-                   ScanEntireDisk && Recurse!=RECURSE_DISABLE);
++                   (FolderWildcards && Recurse!=RECURSE_DISABLE) || 
++                   (Wildcards && Recurse==RECURSE_WILDCARDS) || 
++                   (ScanEntireDisk && Recurse!=RECURSE_DISABLE));
+     if (Depth==0)
+       SearchAllInRoot=SearchAll;
+     if (SearchAll || Wildcards)
+diff --git a/third_party/unrar/src/strfn.cpp b/third_party/unrar/src/strfn.cpp
+index 2cf3ab972b4e..09730b6bff08 100644
+--- a/third_party/unrar/src/strfn.cpp
++++ b/third_party/unrar/src/strfn.cpp
+@@ -192,7 +192,7 @@ bool IsSpace(int ch)
+ // values, resulting in undefined behavior in standard function.
+ bool IsAlpha(int ch)
+ {
+-  return ch>='A' && ch<='Z' || ch>='a' && ch<='z';
++  return (ch>='A' && ch<='Z') || (ch>='a' && ch<='z');
+ }
+ 
+ 
+diff --git a/third_party/unrar/src/threadmisc.cpp b/third_party/unrar/src/threadmisc.cpp
+index 4ad5af2e5681..9dfd2b9bc301 100644
+--- a/third_party/unrar/src/threadmisc.cpp
++++ b/third_party/unrar/src/threadmisc.cpp
+@@ -43,17 +43,22 @@ static inline void CriticalSectionEnd(CRITSECT_HANDLE *CritSection)
+ }
+ 
+ 
+-static struct GlobalPoolCreateSync
++struct GlobalPoolCreateSync
+ {
+   CRITSECT_HANDLE CritSection;
+   GlobalPoolCreateSync()  { CriticalSectionCreate(&CritSection); }
+   ~GlobalPoolCreateSync() { CriticalSectionDelete(&CritSection); }
+-} PoolCreateSync;
++};
++
++static GlobalPoolCreateSync& GetPoolCreateSync() {
++  static GlobalPoolCreateSync PoolCreateSync;
++  return PoolCreateSync;
++}
+ 
+ 
+ ThreadPool* CreateThreadPool()
+ {
+-  CriticalSectionStart(&PoolCreateSync.CritSection); 
++  CriticalSectionStart(&(GetPoolCreateSync().CritSection));
+ 
+   if (GlobalPoolUseCount++ == 0)
+     GlobalPool=new ThreadPool(MaxPoolThreads);
+@@ -66,11 +71,11 @@ ThreadPool* CreateThreadPool()
+   if (GlobalPoolUseCount > 1)
+   {
+     ThreadPool *Pool = new ThreadPool(MaxPoolThreads);
+-    CriticalSectionEnd(&PoolCreateSync.CritSection); 
++    CriticalSectionEnd(&(GetPoolCreateSync().CritSection));
+     return Pool;
+   }
+ 
+-  CriticalSectionEnd(&PoolCreateSync.CritSection); 
++  CriticalSectionEnd(&(GetPoolCreateSync().CritSection));
+   return GlobalPool;
+ }
+ 
+@@ -79,7 +84,7 @@ void DestroyThreadPool(ThreadPool *Pool)
+ {
+   if (Pool!=NULL)
+   {
+-    CriticalSectionStart(&PoolCreateSync.CritSection); 
++    CriticalSectionStart(&(GetPoolCreateSync().CritSection));
+ 
+     if (Pool==GlobalPool && GlobalPoolUseCount > 0 && --GlobalPoolUseCount == 0)
+       delete GlobalPool;
+@@ -89,7 +94,7 @@ void DestroyThreadPool(ThreadPool *Pool)
+     if (Pool!=GlobalPool)
+       delete Pool;
+ 
+-    CriticalSectionEnd(&PoolCreateSync.CritSection); 
++    CriticalSectionEnd(&(GetPoolCreateSync().CritSection));
+   }
+ }
+ 
+diff --git a/third_party/unrar/src/timefn.cpp b/third_party/unrar/src/timefn.cpp
+index 63f466084d04..186ac4fd6f86 100644
+--- a/third_party/unrar/src/timefn.cpp
++++ b/third_party/unrar/src/timefn.cpp
+@@ -141,7 +141,7 @@ void RarTime::GetWinFT(FILETIME *ft)
+ 
+ void RarTime::SetWinFT(FILETIME *ft)
+ {
+-  _ULARGE_INTEGER ul = {ft->dwLowDateTime, ft->dwHighDateTime};
++  _ULARGE_INTEGER ul = {{ft->dwLowDateTime, ft->dwHighDateTime}};
+   SetWin(ul.QuadPart);
+ }
+ #endif
+diff --git a/third_party/unrar/src/uiconsole.cpp b/third_party/unrar/src/uiconsole.cpp
+index a37e1610a2fd..023e0917a934 100644
+--- a/third_party/unrar/src/uiconsole.cpp
++++ b/third_party/unrar/src/uiconsole.cpp
+@@ -342,6 +342,8 @@ void uiMsgStore::Msg()
+     case UIEVENT_RRTESTINGSTART:
+       mprintf(L"%s      ",St(MTestingRR));
+       break;
++    default:
++      break;
+   }
+ }
+ 
+diff --git a/third_party/unrar/src/unicode.cpp b/third_party/unrar/src/unicode.cpp
+index ffba8c11fa4b..e84d9c1de02e 100644
+--- a/third_party/unrar/src/unicode.cpp
++++ b/third_party/unrar/src/unicode.cpp
+@@ -1,7 +1,7 @@
+ #include "rar.hpp"
+ #define MBFUNCTIONS
+ 
+-#if defined(_UNIX) && defined(MBFUNCTIONS)
++#if !defined(_WIN_ALL) && !defined(_APPLE) && defined(_UNIX) && defined(MBFUNCTIONS)
+ 
+ static bool WideToCharMap(const wchar *Src,char *Dest,size_t DestSize,bool &Success);
+ static void CharToWideMap(const char *Src,wchar *Dest,size_t DestSize,bool &Success);
+@@ -30,7 +30,7 @@ bool WideToChar(const wchar *Src,char *Dest,size_t DestSize)
+ #elif defined(_APPLE)
+   WideToUtf(Src,Dest,DestSize);
+ 
+-#elif defined(MBFUNCTIONS)
++#elif defined(_UNIX) && defined(MBFUNCTIONS)
+   if (!WideToCharMap(Src,Dest,DestSize,RetCode))
+   {
+     mbstate_t ps; // Use thread safe external state based functions.
+@@ -70,7 +70,7 @@ bool WideToChar(const wchar *Src,char *Dest,size_t DestSize)
+ #endif
+   if (DestSize>0)
+     Dest[DestSize-1]=0;
+-  
++
+   // We tried to return the empty string if conversion is failed,
+   // but it does not work well. WideCharToMultiByte returns 'failed' code
+   // and partially converted string even if we wanted to convert only a part
+@@ -95,7 +95,7 @@ bool CharToWide(const char *Src,wchar *Dest,size_t DestSize)
+ #elif defined(_APPLE)
+   UtfToWide(Src,Dest,DestSize);
+ 
+-#elif defined(MBFUNCTIONS)
++#elif defined(_UNIX) && defined(MBFUNCTIONS)
+   mbstate_t ps;
+   memset (&ps, 0, sizeof(ps));
+   const char *SrcParam=Src; // mbsrtowcs can change the pointer.
+@@ -128,8 +128,8 @@ bool CharToWide(const char *Src,wchar *Dest,size_t DestSize)
+ }
+ 
+ 
+-#if defined(_UNIX) && defined(MBFUNCTIONS)
+-// Convert and restore mapped inconvertible Unicode characters. 
++#if !defined(_WIN_ALL) && !defined(_APPLE) && defined(_UNIX) && defined(MBFUNCTIONS)
++// Convert and restore mapped inconvertible Unicode characters.
+ // We use it for extended ASCII names in Unix.
+ bool WideToCharMap(const wchar *Src,char *Dest,size_t DestSize,bool &Success)
+ {
+@@ -142,7 +142,7 @@ bool WideToCharMap(const wchar *Src,char *Dest,size_t DestSize,bool &Success)
+   // can produce uninitilized output while reporting success on garbage input.
+   // So we clean the destination to calm analyzers.
+   memset(Dest,0,DestSize);
+-  
++
+   Success=true;
+   uint SrcPos=0,DestPos=0;
+   while (Src[SrcPos]!=0 && DestPos<DestSize-MB_CUR_MAX)
+@@ -177,8 +177,8 @@ bool WideToCharMap(const wchar *Src,char *Dest,size_t DestSize,bool &Success)
+ #endif
+ 
+ 
+-#if defined(_UNIX) && defined(MBFUNCTIONS)
+-// Convert and map inconvertible Unicode characters. 
++#if !defined(_WIN_ALL) && !defined(_APPLE) && defined(_UNIX) && defined(MBFUNCTIONS)
++// Convert and map inconvertible Unicode characters.
+ // We use it for extended ASCII names in Unix.
+ void CharToWideMap(const char *Src,wchar *Dest,size_t DestSize,bool &Success)
+ {
+diff --git a/third_party/unrar/src/unpack.cpp b/third_party/unrar/src/unpack.cpp
+index 0163c49fed3a..ca3c52ea792b 100644
+--- a/third_party/unrar/src/unpack.cpp
++++ b/third_party/unrar/src/unpack.cpp
+@@ -1,3 +1,9 @@
++// NOTE(vakh): The process.h file needs to be included first because "rar.hpp"
++// defines certain macros that cause symbol redefinition errors
++#if defined(UNRAR_NO_EXCEPTIONS)
++#include "base/process/memory.h"
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
++
+ #include "rar.hpp"
+ 
+ #include "coder.cpp"
+@@ -89,16 +95,27 @@ void Unpack::Init(size_t WinSize,bool Solid)
+ 
+   // We do not handle growth for existing fragmented window.
+   if (Grow && Fragmented)
++  {
++#if defined(UNRAR_NO_EXCEPTIONS)
++    base::TerminateBecauseOutOfMemory(0);
++#else
+     throw std::bad_alloc();
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
++  }
+ 
+   byte *NewWindow=Fragmented ? NULL : (byte *)malloc(WinSize);
+ 
+   if (NewWindow==NULL)
++  {
+     if (Grow || WinSize<0x1000000)
+     {
+       // We do not support growth for new fragmented window.
+       // Also exclude RAR4 and small dictionaries.
++#if defined(UNRAR_NO_EXCEPTIONS)
++      base::TerminateBecauseOutOfMemory(WinSize);
++#else
+       throw std::bad_alloc();
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
+     }
+     else
+     {
+@@ -110,6 +127,7 @@ void Unpack::Init(size_t WinSize,bool Solid)
+       FragWindow.Init(WinSize);
+       Fragmented=true;
+     }
++  }
+ 
+   if (!Fragmented)
+   {
+diff --git a/third_party/unrar/src/unpack15.cpp b/third_party/unrar/src/unpack15.cpp
+index 1e7cf76c2d77..78b0130d05b6 100644
+--- a/third_party/unrar/src/unpack15.cpp
++++ b/third_party/unrar/src/unpack15.cpp
+@@ -293,6 +293,7 @@ void Unpack::LongLZ()
+ 
+   OldAvr3=AvrLn3;
+   if (Length!=1 && Length!=4)
++  {
+     if (Length==0 && Distance <= MaxDist3)
+     {
+       AvrLn3++;
+@@ -301,12 +302,13 @@ void Unpack::LongLZ()
+     else
+       if (AvrLn3 > 0)
+         AvrLn3--;
++  }
+   Length+=3;
+   if (Distance >= MaxDist3)
+     Length++;
+   if (Distance <= 256)
+     Length+=8;
+-  if (OldAvr3 > 0xb0 || AvrPlc >= 0x2a00 && OldAvr2 < 0x40)
++  if (OldAvr3 > 0xb0 || (AvrPlc >= 0x2a00 && OldAvr2 < 0x40))
+     MaxDist3=0x7f00;
+   else
+     MaxDist3=0x2001;
+diff --git a/third_party/unrar/src/unpack20.cpp b/third_party/unrar/src/unpack20.cpp
+index 93c8ba05a20e..441b7478ca4a 100644
+--- a/third_party/unrar/src/unpack20.cpp
++++ b/third_party/unrar/src/unpack20.cpp
+@@ -257,6 +257,7 @@ bool Unpack::ReadTables20()
+ void Unpack::ReadLastTables()
+ {
+   if (ReadTop>=Inp.InAddr+5)
++  {
+     if (UnpAudioBlock)
+     {
+       if (DecodeNumber(Inp,&MD[UnpCurChannel])==256)
+@@ -265,6 +266,7 @@ void Unpack::ReadLastTables()
+     else
+       if (DecodeNumber(Inp,&BlockTables.LD)==269)
+         ReadTables20();
++  }
+ }
+ 
+ 
+diff --git a/third_party/unrar/src/unpack50.cpp b/third_party/unrar/src/unpack50.cpp
+index dac1f6fd3180..1c96b1d5b1ed 100644
+--- a/third_party/unrar/src/unpack50.cpp
++++ b/third_party/unrar/src/unpack50.cpp
+@@ -11,7 +11,7 @@ void Unpack::Unpack5(bool Solid)
+     // Check TablesRead5 to be sure that we read tables at least once
+     // regardless of current block header TablePresent flag.
+     // So we can safefly use these tables below.
+-    if (!ReadBlockHeader(Inp,BlockHeader) || 
++    if (!ReadBlockHeader(Inp,BlockHeader) ||
+         !ReadTables(Inp,BlockHeader,BlockTables) || !TablesRead5)
+       return;
+   }
+@@ -26,9 +26,9 @@ void Unpack::Unpack5(bool Solid)
+ 
+       // We use 'while', because for empty block containing only Huffman table,
+       // we'll be on the block border once again just after reading the table.
+-      while (Inp.InAddr>BlockHeader.BlockStart+BlockHeader.BlockSize-1 || 
+-             Inp.InAddr==BlockHeader.BlockStart+BlockHeader.BlockSize-1 && 
+-             Inp.InBit>=BlockHeader.BlockBitSize)
++      while (Inp.InAddr>BlockHeader.BlockStart+BlockHeader.BlockSize-1 ||
++             (Inp.InAddr==BlockHeader.BlockStart+BlockHeader.BlockSize-1 &&
++             Inp.InBit>=BlockHeader.BlockBitSize))
+       {
+         if (BlockHeader.LastBlockInFile)
+         {
+@@ -127,10 +127,12 @@ void Unpack::Unpack5(bool Solid)
+     if (MainSlot==257)
+     {
+       if (LastLength!=0)
++      {
+         if (Fragmented)
+           FragWindow.CopyString(LastLength,OldDist[0],UnpPtr,MaxWinMask);
+         else
+           CopyString(LastLength,OldDist[0]);
++      }
+       continue;
+     }
+     if (MainSlot<262)
+@@ -389,8 +391,8 @@ void Unpack::UnpWriteBuf()
+ 
+   // Choose the nearest among WriteBorder and WrPtr actual written border.
+   // If border is equal to UnpPtr, it means that we have MaxWinSize data ahead.
+-  if (WriteBorder==UnpPtr || 
+-      WrPtr!=UnpPtr && ((WrPtr-UnpPtr)&MaxWinMask)<((WriteBorder-UnpPtr)&MaxWinMask))
++  if (WriteBorder==UnpPtr ||
++      (WrPtr!=UnpPtr && ((WrPtr-UnpPtr)&MaxWinMask)<((WriteBorder-UnpPtr)&MaxWinMask)))
+     WriteBorder=WrPtr;
+ }
+ 
+@@ -536,11 +538,11 @@ bool Unpack::ReadBlockHeader(BitInput &Inp,UnpackBlockHeader &Header)
+     if (!UnpReadBuf())
+       return false;
+   Inp.faddbits((8-Inp.InBit)&7);
+-  
++
+   byte BlockFlags=Inp.fgetbits()>>8;
+   Inp.faddbits(8);
+   uint ByteCount=((BlockFlags>>3)&3)+1; // Block size byte count.
+-  
++
+   if (ByteCount==4)
+     return false;
+ 
+diff --git a/third_party/unrar/src/unpack50frag.cpp b/third_party/unrar/src/unpack50frag.cpp
+index 745b1b3083a3..16d5b1c3d5ef 100644
+--- a/third_party/unrar/src/unpack50frag.cpp
++++ b/third_party/unrar/src/unpack50frag.cpp
+@@ -46,9 +46,15 @@ void FragmentedWindow::Init(size_t WinSize)
+         break;
+       Size-=Size/32;
+     }
+-    if (NewMem==NULL)
++    if (NewMem == NULL)
++    {
++#if defined(UNRAR_NO_EXCEPTIONS)
++      base::TerminateBecauseOutOfMemory(Size);
++#else
+       throw std::bad_alloc();
+-    
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
++    }
++
+     // Clean the window to generate the same output when unpacking corrupt
+     // RAR files, which may access to unused areas of sliding dictionary.
+     memset(NewMem,0,Size);
+@@ -58,8 +64,14 @@ void FragmentedWindow::Init(size_t WinSize)
+     MemSize[BlockNum]=TotalSize;
+     BlockNum++;
+   }
+-  if (TotalSize<WinSize) // Not found enough free blocks.
++  if (TotalSize < WinSize)  // Not found enough free blocks.
++  {
++#if defined(UNRAR_NO_EXCEPTIONS)
++    base::TerminateBecauseOutOfMemory(WinSize);
++#else
+     throw std::bad_alloc();
++#endif  // defined(UNRAR_NO_EXCEPTIONS)
++  }
+ }
+ 
+ 
+diff --git a/third_party/unrar/src/unpack50mt.cpp b/third_party/unrar/src/unpack50mt.cpp
+index 59e111ba2ca7..e41da79b5ea1 100644
+--- a/third_party/unrar/src/unpack50mt.cpp
++++ b/third_party/unrar/src/unpack50mt.cpp
+@@ -134,7 +134,7 @@ void Unpack::Unpack5MT(bool Solid)
+         {
+           CurData->HeaderRead=true;
+           if (!ReadBlockHeader(CurData->Inp,CurData->BlockHeader) ||
+-              !CurData->BlockHeader.TablePresent && !TablesRead5)
++              (!CurData->BlockHeader.TablePresent && !TablesRead5))
+           {
+             Done=true;
+             break;
+@@ -165,7 +165,7 @@ void Unpack::Unpack5MT(bool Solid)
+         if (DataLeft<TooSmallToProcess)
+           break;
+       }
+-      
++
+ //#undef USE_THREADS
+       UnpackThreadDataList UTDArray[MaxPoolThreads];
+       uint UTDArrayPos=0;
+@@ -180,7 +180,7 @@ void Unpack::Unpack5MT(bool Solid)
+         UnpackThreadDataList *UTD=UTDArray+UTDArrayPos++;
+         UTD->D=UnpThreadData+CurBlock;
+         UTD->BlockCount=Min(MaxBlockPerThread,BlockNumberMT-CurBlock);
+-      
++
+ #ifdef USE_THREADS
+         if (BlockNumber==1)
+           UnpackDecode(*UTD->D);
+@@ -200,12 +200,12 @@ void Unpack::Unpack5MT(bool Solid)
+ #endif
+ 
+       bool IncompleteThread=false;
+-      
++
+       for (uint Block=0;Block<BlockNumber;Block++)
+       {
+         UnpackThreadData *CurData=UnpThreadData+Block;
+-        if (!CurData->LargeBlock && !ProcessDecoded(*CurData) ||
+-            CurData->LargeBlock && !UnpackLargeBlock(*CurData) ||
++        if ((!CurData->LargeBlock && !ProcessDecoded(*CurData)) ||
++            (CurData->LargeBlock && !UnpackLargeBlock(*CurData)) ||
+             CurData->DamagedData)
+         {
+           Done=true;
+@@ -251,7 +251,7 @@ void Unpack::Unpack5MT(bool Solid)
+             break;
+           }
+       }
+-      
++
+       if (IncompleteThread || Done)
+         break; // Current buffer is done, read more data or quit.
+       else
+@@ -303,7 +303,7 @@ void Unpack::UnpackDecode(UnpackThreadData &D)
+     D.DamagedData=true;
+     return;
+   }
+-  
++
+   D.DecodedSize=0;
+   int BlockBorder=D.BlockHeader.BlockStart+D.BlockHeader.BlockSize-1;
+ 
+@@ -315,14 +315,14 @@ void Unpack::UnpackDecode(UnpackThreadData &D)
+   {
+     if (D.Inp.InAddr>=ReadBorder)
+     {
+-      if (D.Inp.InAddr>BlockBorder || D.Inp.InAddr==BlockBorder && 
+-          D.Inp.InBit>=D.BlockHeader.BlockBitSize)
++      if (D.Inp.InAddr>BlockBorder || (D.Inp.InAddr==BlockBorder &&
++          D.Inp.InBit>=D.BlockHeader.BlockBitSize))
+         break;
+ 
+       // If we do not have any more data in file to read, we must process
+       // what we have until last byte. Otherwise we can return and append
+       // more data to unprocessed few bytes.
+-      if ((D.Inp.InAddr>=DataBorder) && !D.NoDataLeft || D.Inp.InAddr>=D.DataSize)
++      if ((D.Inp.InAddr>=DataBorder && !D.NoDataLeft) || D.Inp.InAddr>=D.DataSize)
+       {
+         D.Incomplete=true;
+         break;
+@@ -413,7 +413,7 @@ void Unpack::UnpackDecode(UnpackThreadData &D)
+     {
+       UnpackFilter Filter;
+       ReadFilter(D.Inp,Filter);
+-      
++
+       CurItem->Type=UNPDT_FILTER;
+       CurItem->Length=Filter.Type;
+       CurItem->Distance=Filter.BlockStart;
+@@ -498,7 +498,7 @@ bool Unpack::ProcessDecoded(UnpackThreadData &D)
+             if (Item->Type==UNPDT_FILTER)
+             {
+               UnpackFilter Filter;
+-              
++
+               Filter.Type=(byte)Item->Length;
+               Filter.BlockStart=Item->Distance;
+ 
+@@ -534,7 +534,7 @@ bool Unpack::UnpackLargeBlock(UnpackThreadData &D)
+     D.DamagedData=true;
+     return false;
+   }
+-  
++
+   int BlockBorder=D.BlockHeader.BlockStart+D.BlockHeader.BlockSize-1;
+ 
+   // Reserve enough space even for filter entry.
+@@ -546,14 +546,14 @@ bool Unpack::UnpackLargeBlock(UnpackThreadData &D)
+     UnpPtr&=MaxWinMask;
+     if (D.Inp.InAddr>=ReadBorder)
+     {
+-      if (D.Inp.InAddr>BlockBorder || D.Inp.InAddr==BlockBorder && 
+-          D.Inp.InBit>=D.BlockHeader.BlockBitSize)
++      if (D.Inp.InAddr>BlockBorder || (D.Inp.InAddr==BlockBorder &&
++          D.Inp.InBit>=D.BlockHeader.BlockBitSize))
+         break;
+ 
+       // If we do not have any more data in file to read, we must process
+       // what we have until last byte. Otherwise we can return and append
+       // more data to unprocessed few bytes.
+-      if ((D.Inp.InAddr>=DataBorder) && !D.NoDataLeft || D.Inp.InAddr>=D.DataSize)
++      if ((D.Inp.InAddr>=DataBorder && !D.NoDataLeft) || D.Inp.InAddr>=D.DataSize)
+       {
+         D.Incomplete=true;
+         break;
+diff --git a/third_party/unrar/src/unrar_wrapper.h b/third_party/unrar/src/unrar_wrapper.h
+new file mode 100644
+index 000000000000..b19759da6f6e
+--- /dev/null
++++ b/third_party/unrar/src/unrar_wrapper.h
+@@ -0,0 +1,15 @@
++// Copyright 2018 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef THIRD_PARTY_UNRAR_SRC_UNRAR_WRAPPER_H_
++#define THIRD_PARTY_UNRAR_SRC_UNRAR_WRAPPER_H_
++
++#include "rar.hpp"
++
++namespace third_party_unrar {
++using ::Archive;
++static const int kUnrarEndarcHead = ::HEAD_ENDARC;
++}  // namespace third_party_unrar
++
++#endif  // THIRD_PARTY_UNRAR_SRC_UNRAR_WRAPPER_H_
+diff --git a/third_party/unrar/src/volume.cpp b/third_party/unrar/src/volume.cpp
+index 5d9c4c50a7d0..c175b3b2281b 100644
+--- a/third_party/unrar/src/volume.cpp
++++ b/third_party/unrar/src/volume.cpp
+@@ -19,7 +19,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,wchar Comma
+   if (DataIO!=NULL && SplitHeader)
+   {
+     bool PackedHashPresent=Arc.Format==RARFMT50 || 
+-         hd->UnpVer>=20 && hd->FileHash.CRC32!=0xffffffff;
++         (hd->UnpVer>=20 && hd->FileHash.CRC32!=0xffffffff);
+     if (PackedHashPresent && 
+         !DataIO->PackedDataHash.Cmp(&hd->FileHash,hd->UseHashKey ? hd->HashKey:NULL))
+       uiMsg(UIERROR_CHECKSUMPACKED, Arc.FileName, hd->FileName);
diff --git a/third_party/unrar/src/arccmt.cpp b/third_party/unrar/src/arccmt.cpp
index 3de667a..487e2fc 100644
--- a/third_party/unrar/src/arccmt.cpp
+++ b/third_party/unrar/src/arccmt.cpp
@@ -20,7 +20,7 @@
       // Old style (RAR 2.9) archive comment embedded into the main 
       // archive header.
       Seek(SFXSize+SIZEOF_MARKHEAD3+SIZEOF_MAINHEAD3,SEEK_SET);
-      if (!ReadHeader())
+      if (!ReadHeader() || GetHeaderType()!=HEAD3_CMT)
         return false;
     }
     else
diff --git a/third_party/unrar/src/archive.cpp b/third_party/unrar/src/archive.cpp
index 7b0e12d..5630ad06 100644
--- a/third_party/unrar/src/archive.cpp
+++ b/third_party/unrar/src/archive.cpp
@@ -3,10 +3,6 @@
 #include "arccmt.cpp"
 
 
-#ifdef USE_ARCMEM
-#include "arcmem.cpp"
-#endif
-
 Archive::Archive(RAROptions *InitCmd)
 {
   Cmd=NULL; // Just in case we'll have an exception in 'new' below.
@@ -34,8 +30,6 @@
   CurBlockPos=0;
   NextBlockPos=0;
 
-  RecoverySize=-1;
-  RecoveryPercent=-1;
 
   memset(&MainHead,0,sizeof(MainHead));
   memset(&CryptHead,0,sizeof(CryptHead));
@@ -202,6 +196,7 @@
 #endif
 
   bool HeadersLeft; // Any headers left to read.
+  bool StartFound=false; // Main or encryption headers found.
   // Skip the archive encryption header if any and read the main header.
   while ((HeadersLeft=(ReadHeader()!=0))==true) // Additional parentheses to silence Clang.
   {
@@ -210,7 +205,8 @@
     HEADER_TYPE Type=GetHeaderType();
     // In RAR 5.0 we need to quit after reading HEAD_CRYPT if we wish to
     // avoid the password prompt.
-    if (Type==HEAD_MAIN || (SilentOpen && Type==HEAD_CRYPT))
+    StartFound=Type==HEAD_MAIN || (SilentOpen && Type==HEAD_CRYPT);
+    if (StartFound)
       break;
   }
 
@@ -220,9 +216,10 @@
   if (FailedHeaderDecryption && !EnableBroken)
     return false;
 
-  if (BrokenHeader) // Main archive header is corrupt.
+  if (BrokenHeader || !StartFound) // Main archive header is corrupt or missing.
   {
-    uiMsg(UIERROR_MHEADERBROKEN,FileName);
+    if (!FailedHeaderDecryption) // If not reported a wrong password already.
+      uiMsg(UIERROR_MHEADERBROKEN,FileName);
     if (!EnableBroken)
       return false;
   }
@@ -304,92 +301,39 @@
 
 
 
+#ifdef USE_QOPEN
 bool Archive::Open(const wchar *Name,uint Mode)
 {
-#ifdef USE_QOPEN
   // Important if we reuse Archive object and it has virtual QOpen
   // file position not matching real. For example, for 'l -v volname'.
   QOpen.Unload();
-#endif
-
-#ifdef USE_ARCMEM
-  if (Cmd->ArcInMem)
-  {
-    wcsncpyz(FileName,Name,ASIZE(FileName));
-    ArcMem.Load(Cmd->ArcMemData,Cmd->ArcMemSize);
-    Cmd->SetArcInMem(NULL,0); // Return in memory data for first volume only, not for next volumes.
-    return true;
-  }
-#endif
 
   return File::Open(Name,Mode);
 }
 
 
-
-bool Archive::Close()
-{
-#ifdef USE_ARCMEM
-  if (ArcMem.Unload())
-    return true;
-#endif
-  return File::Close();
-}
-
-
-
 int Archive::Read(void *Data,size_t Size)
 {
-#ifdef USE_QOPEN
-  size_t QResult;
-  if (QOpen.Read(Data,Size,QResult))
-    return (int)QResult;
-#endif
-#ifdef USE_ARCMEM
-  size_t AResult;
-  if (ArcMem.Read(Data,Size,AResult))
-    return (int)AResult;
-#endif
+  size_t Result;
+  if (QOpen.Read(Data,Size,Result))
+    return (int)Result;
   return File::Read(Data,Size);
 }
 
 
 void Archive::Seek(int64 Offset,int Method)
 {
-#ifdef USE_QOPEN
-  if (QOpen.Seek(Offset,Method))
-    return;
-#endif
-#ifdef USE_ARCMEM
-  if (ArcMem.Seek(Offset,Method))
-    return;
-#endif
-  File::Seek(Offset,Method);
+  if (!QOpen.Seek(Offset,Method))
+    File::Seek(Offset,Method);
 }
 
 
 int64 Archive::Tell()
 {
-#ifdef USE_QOPEN
   int64 QPos;
   if (QOpen.Tell(&QPos))
     return QPos;
-#endif
-#ifdef USE_ARCMEM
-  int64 APos;
-  if (ArcMem.Tell(&APos))
-    return APos;
-#endif
   return File::Tell();
 }
-
-
-
-bool Archive::IsOpened()
-{
-#ifdef USE_ARCMEM
-  if (ArcMem.IsLoaded())
-    return true;
 #endif
-  return File::IsOpened();
-};
+
diff --git a/third_party/unrar/src/archive.hpp b/third_party/unrar/src/archive.hpp
index 473912fb..fd33ac3 100644
--- a/third_party/unrar/src/archive.hpp
+++ b/third_party/unrar/src/archive.hpp
@@ -20,6 +20,9 @@
   ASDF_CRYPTIFHEADERS = 8  // Encrypt data after subheader only in -hp mode.
 };
 
+// RAR5 headers must not exceed 2 MB.
+#define MAX_HEADER_SIZE_RAR5 0x200000
+
 class Archive:public File
 {
   private:
@@ -45,8 +48,6 @@
     bool DummyCmd;
     RAROptions *Cmd;
 
-    int64 RecoverySize;
-    int RecoveryPercent;
 
     RarTime LatestTime;
     int LastReadBlock;
@@ -57,9 +58,6 @@
     QuickOpen QOpen;
     bool ProhibitQOpen;
 #endif
-#ifdef USE_ARCMEM
-    ArcMemory ArcMem;
-#endif
   public:
     Archive(RAROptions *InitCmd=NULL);
     ~Archive();
@@ -93,13 +91,11 @@
 #if 0
     void GetRecoveryInfo(bool Required,int64 *Size,int *Percent);
 #endif
+#ifdef USE_QOPEN
     bool Open(const wchar *Name,uint Mode=FMF_READ);
-    bool Close();
     int Read(void *Data,size_t Size);
     void Seek(int64 Offset,int Method);
     int64 Tell();
-    bool IsOpened();
-#ifdef USE_QOPEN
     void QOpenUnload() {QOpen.Unload();}
     void SetProhibitQOpen(bool Mode) {ProhibitQOpen=Mode;}
 #endif
@@ -114,10 +110,7 @@
     FileHeader SubHead;
     CommentHeader CommHead;
     ProtectHeader ProtectHead;
-    AVHeader AVHead;
-    SignHeader SignHead;
     UnixOwnersHeader UOHead;
-    MacFInfoHeader MACHead;
     EAHeader EAHead;
     StreamHeader StreamHead;
 
diff --git a/third_party/unrar/src/arcmem.cpp b/third_party/unrar/src/arcmem.cpp
index 30017324..e916ec31 100644
--- a/third_party/unrar/src/arcmem.cpp
+++ b/third_party/unrar/src/arcmem.cpp
@@ -39,7 +39,12 @@
   if (!Loaded)
     return false;
   if (Method==SEEK_SET)
-    SeekPos=Min((uint64)Offset,ArcData.Size());
+  {
+    if (Offset<0)
+      SeekPos=0;
+    else
+      SeekPos=Min((uint64)Offset,ArcData.Size());
+  }
   else
     if (Method==SEEK_CUR || Method==SEEK_END)
     {
diff --git a/third_party/unrar/src/arcread.cpp b/third_party/unrar/src/arcread.cpp
index a958314..7eec01d 100644
--- a/third_party/unrar/src/arcread.cpp
+++ b/third_party/unrar/src/arcread.cpp
@@ -269,6 +269,11 @@
 
         uint FileTime=Raw.Get4();
         hd->UnpVer=Raw.Get1();
+
+        // RAR15 did not use the special dictionary size to mark dirs.
+        if (hd->UnpVer<20 && (hd->FileAttr & 0x10)!=0)
+          hd->Dir=true;
+
         hd->Method=Raw.Get1()-0x30;
         size_t NameSize=Raw.Get2();
         hd->FileAttr=Raw.Get4();
@@ -338,7 +343,7 @@
             size_t Length=strlen(FileName);
             Length++;
             if (ReadNameSize>Length)
-              NameCoder.Decode(FileName,(byte *)FileName+Length,
+              NameCoder.Decode(FileName,ReadNameSize,(byte *)FileName+Length,
                                ReadNameSize-Length,hd->FileName,
                                ASIZE(hd->FileName));
           }
@@ -366,17 +371,7 @@
             // They are stored after the file name and before salt.
             hd->SubData.Alloc(DataSize);
             Raw.GetB(&hd->SubData[0],DataSize);
-            if (hd->CmpName(SUBHEAD_TYPE_RR))
-            {
-              byte *D=&hd->SubData[8];
-              RecoverySize=D[0]+((uint)D[1]<<8)+((uint)D[2]<<16)+((uint)D[3]<<24);
-              RecoverySize*=512; // Sectors to size.
-              int64 CurPos=Tell();
-              RecoveryPercent=ToPercent(RecoverySize,CurPos);
-              // Round fractional percent exceeding .5 to upper value.
-              if (ToPercent(RecoverySize+CurPos/200,CurPos)>RecoveryPercent)
-                RecoveryPercent++;
-            }
+
           }
 
           if (hd->CmpName(SUBHEAD_TYPE_CMT))
@@ -459,19 +454,6 @@
       CommHead.Method=Raw.Get1();
       CommHead.CommCRC=Raw.Get2();
       break;
-    case HEAD3_SIGN:
-      *(BaseBlock *)&SignHead=ShortBlock;
-      SignHead.CreationTime=Raw.Get4();
-      SignHead.ArcNameSize=Raw.Get2();
-      SignHead.UserNameSize=Raw.Get2();
-      break;
-    case HEAD3_AV:
-      *(BaseBlock *)&AVHead=ShortBlock;
-      AVHead.UnpVer=Raw.Get1();
-      AVHead.Method=Raw.Get1();
-      AVHead.AVVer=Raw.Get1();
-      AVHead.AVInfoCRC=Raw.Get4();
-      break;
     case HEAD3_PROTECT:
       *(BaseBlock *)&ProtectHead=ShortBlock;
       ProtectHead.DataSize=Raw.Get4();
@@ -480,9 +462,8 @@
       ProtectHead.TotalBlocks=Raw.Get4();
       Raw.GetB(ProtectHead.Mark,8);
       NextBlockPos+=ProtectHead.DataSize;
-      RecoverySize=ProtectHead.RecSectors*512;
       break;
-    case HEAD3_OLDSERVICE:
+    case HEAD3_OLDSERVICE: // RAR 2.9 and earlier.
       *(BaseBlock *)&SubBlockHead=ShortBlock;
       SubBlockHead.DataSize=Raw.Get4();
       NextBlockPos+=SubBlockHead.DataSize;
@@ -503,13 +484,6 @@
           UOHead.OwnerName[UOHead.OwnerNameSize]=0;
           UOHead.GroupName[UOHead.GroupNameSize]=0;
           break;
-        case MAC_HEAD:
-          *(SubBlockHeader *)&MACHead=SubBlockHead;
-          MACHead.fileType=Raw.Get4();
-          MACHead.fileCreator=Raw.Get4();
-          break;
-        case EA_HEAD:
-        case BEEA_HEAD:
         case NTACL_HEAD:
           *(SubBlockHeader *)&EAHead=SubBlockHead;
           EAHead.UnpSize=Raw.Get4();
@@ -594,6 +568,11 @@
       return 0;
     }
 
+    // We repeat the password request only for manually entered passwords
+    // and not for -p<pwd>. Wrong password can be intentionally provided
+    // in -p<pwd> to not stop batch processing for encrypted archives.
+    bool GlobalPassword=Cmd->Password.IsSet() || uiIsGlobalPasswordSet();
+
     while (true) // Repeat the password prompt for wrong passwords.
     {
       RequestArcPassword();
@@ -603,12 +582,32 @@
       // Verify password validity.
       if (CryptHead.UsePswCheck && memcmp(PswCheck,CryptHead.PswCheck,SIZE_PSWCHECK)!=0)
       {
-        // This message is used by Android GUI and Windows GUI and SFX to
-        // reset cached passwords. Update appropriate code if changed.
-        uiMsg(UIWAIT_BADPSW,FileName);
+        if (GlobalPassword) // For -p<pwd> or Ctrl+P.
+        {
+          // This message is used by Android GUI to reset cached passwords.
+          // Update appropriate code if changed.
+          uiMsg(UIERROR_BADPSW,FileName);
+          FailedHeaderDecryption=true;
+          ErrHandler.SetErrorCode(RARX_BADPWD);
+          return 0;
+        }
+        else // For passwords entered manually.
+        {
+          // This message is used by Android GUI and Windows GUI and SFX to
+          // reset cached passwords. Update appropriate code if changed.
+          uiMsg(UIWAIT_BADPSW,FileName);
+          Cmd->Password.Clean();
+        }
 
-        Cmd->Password.Clean();
-        continue;
+#ifdef RARDLL
+        // Avoid new requests for unrar.dll to prevent the infinite loop
+        // if app always returns the same password.
+        ErrHandler.SetErrorCode(RARX_BADPWD);
+        Cmd->DllError=ERAR_BAD_PASSWORD;
+        ErrHandler.Exit(RARX_BADPWD);
+#else
+        continue; // Request a password again.
+#endif
       }
       break;
     }
@@ -618,8 +617,8 @@
   }
 
   // Header size must not occupy more than 3 variable length integer bytes
-  // resulting in 2 MB maximum header size, so here we read 4 byte CRC32
-  // followed by 3 bytes or less of header size.
+  // resulting in 2 MB maximum header size (MAX_HEADER_SIZE_RAR5),
+  // so here we read 4 byte CRC32 followed by 3 bytes or less of header size.
   const size_t FirstReadSize=7; // Smallest possible block size.
   if (Raw.Read(FirstReadSize)<FirstReadSize)
   {
@@ -821,6 +820,8 @@
         // but it was already used in RAR 1.5 and Unpack needs to distinguish
         // them.
         hd->UnpVer=(CompInfo & 0x3f) + 50;
+        if (hd->UnpVer!=50) // Only 5.0 compression is known now.
+          hd->UnpVer=VER_UNKNOWN;
 
         hd->HostOS=(byte)Raw.GetV();
         size_t NameSize=(size_t)Raw.GetV();
@@ -933,11 +934,10 @@
       ErrHandler.Exit(RARX_USERBREAK);
     }
 #else
-    if (!uiGetPassword(UIPASSWORD_ARCHIVE,FileName,&Cmd->Password) ||
-        !Cmd->Password.IsSet())
+    if (!uiGetPassword(UIPASSWORD_ARCHIVE,FileName,&Cmd->Password))
     {
       Close();
-      uiMsg(UIERROR_INCERRCOUNT);
+      uiMsg(UIERROR_INCERRCOUNT); // Prevent archive deleting if delete after extraction is on.
       ErrHandler.Exit(RARX_USERBREAK);
     }
 #endif
@@ -1205,6 +1205,8 @@
     byte Mark[4];
     Raw.GetB(Mark,4);
     uint HeadSize=Raw.Get2();
+    if (HeadSize<7)
+      return false;
     byte Flags=Raw.Get1();
     NextBlockPos=CurBlockPos+HeadSize;
     CurHeaderType=HEAD_MAIN;
@@ -1226,6 +1228,8 @@
     FileHead.FileHash.Type=HASH_RAR14;
     FileHead.FileHash.CRC32=Raw.Get2();
     FileHead.HeadSize=Raw.Get2();
+    if (FileHead.HeadSize<21)
+      return false;
     uint FileTime=Raw.Get4();
     FileHead.FileAttr=Raw.Get1();
     FileHead.Flags=Raw.Get1()|LONG_BLOCK;
@@ -1240,6 +1244,7 @@
 
     FileHead.PackSize=FileHead.DataSize;
     FileHead.WinSize=0x10000;
+    FileHead.Dir=(FileHead.FileAttr & 0x10)!=0;
 
     FileHead.HostOS=HOST_MSDOS;
     FileHead.HSType=HSYS_WINDOWS;
@@ -1348,8 +1353,6 @@
 
 void Archive::ConvertFileHeader(FileHeader *hd)
 {
-  if (Format==RARFMT15 && hd->UnpVer<20 && (hd->FileAttr & 0x10))
-    hd->Dir=true;
   if (hd->HSType==HSYS_UNKNOWN)
   {
     if (hd->Dir)
diff --git a/third_party/unrar/src/cmddata.cpp b/third_party/unrar/src/cmddata.cpp
index c444597c..e0c286d 100644
--- a/third_party/unrar/src/cmddata.cpp
+++ b/third_party/unrar/src/cmddata.cpp
@@ -239,7 +239,7 @@
         if (C0=='R' && (C1=='R' || C1=='V'))
           Cmd[2]=0;
         wchar SwName[16+ASIZE(Cmd)];
-        swprintf(SwName,ASIZE(SwName),L"switches_%s=",Cmd);
+        swprintf(SwName,ASIZE(SwName),L"switches_%ls=",Cmd);
         size_t Length=wcslen(SwName);
         if (wcsnicomp(Str,SwName,Length)==0)
           ProcessSwitchesString(Str+Length);
@@ -471,6 +471,9 @@
           case '3':
             Shutdown=POWERMODE_SLEEP;
             break;
+          case '4':
+            Shutdown=POWERMODE_RESTART;
+            break;
         }
         break;
       }
@@ -1252,7 +1255,7 @@
       wcsncpyz(ArcName,Name,ASIZE(ArcName));
   }
 
-  if (wcschr(L"AFUMD",*Command)==NULL && !ArcInMem)
+  if (wcschr(L"AFUMD",*Command)==NULL)
   {
     if (GenerateArcName)
       GenerateArchiveName(ArcName,ASIZE(ArcName),GenerateMask,false);
diff --git a/third_party/unrar/src/dll.cpp b/third_party/unrar/src/dll.cpp
index c88337df..4b60aa4 100644
--- a/third_party/unrar/src/dll.cpp
+++ b/third_party/unrar/src/dll.cpp
@@ -35,6 +35,8 @@
   DataSet *Data=NULL;
   try
   {
+    ErrHandler.Clean();
+
     r->OpenResult=0;
     Data=new DataSet;
     Data->Cmd.DllError=0;
@@ -251,10 +253,7 @@
     D->UnpSize=uint(hd->UnpSize & 0xffffffff);
     D->UnpSizeHigh=uint(hd->UnpSize>>32);
     D->HostOS=hd->HSType==HSYS_WINDOWS ? HOST_WIN32:HOST_UNIX;
-    if (Data->Arc.Format==RARFMT50)
-      D->UnpVer=Data->Arc.FileHead.UnpVer==0 ? 50 : 200; // If it is not 0, just set it to something big.
-    else
-      D->UnpVer=Data->Arc.FileHead.UnpVer;
+    D->UnpVer=Data->Arc.FileHead.UnpVer;
     D->FileCRC=hd->FileHash.CRC32;
     D->FileTime=hd->mtime.GetDos();
     
diff --git a/third_party/unrar/src/dll.rc b/third_party/unrar/src/dll.rc
index 430e9cc..30a0166 100644
--- a/third_party/unrar/src/dll.rc
+++ b/third_party/unrar/src/dll.rc
@@ -2,8 +2,8 @@
 #include <commctrl.h>

 

 VS_VERSION_INFO VERSIONINFO

-FILEVERSION 5, 60, 1, 2512
-PRODUCTVERSION 5, 60, 1, 2512
+FILEVERSION 5, 61, 100, 2835
+PRODUCTVERSION 5, 61, 100, 2835
 FILEOS VOS__WINDOWS32

 FILETYPE VFT_APP

 {

@@ -14,9 +14,9 @@
       VALUE "CompanyName", "Alexander Roshal\0"

       VALUE "ProductName", "RAR decompression library\0"

       VALUE "FileDescription", "RAR decompression library\0"

-      VALUE "FileVersion", "5.60.1\0"
-      VALUE "ProductVersion", "5.60.1\0"
-      VALUE "LegalCopyright", "Copyright © Alexander Roshal 1993-2017\0"
+      VALUE "FileVersion", "5.61.0\0"
+      VALUE "ProductVersion", "5.61.0\0"
+      VALUE "LegalCopyright", "Copyright © Alexander Roshal 1993-2018\0"
       VALUE "OriginalFilename", "Unrar.dll\0"

     }

   }

diff --git a/third_party/unrar/src/encname.cpp b/third_party/unrar/src/encname.cpp
index 5556af3e..84731a7 100644
--- a/third_party/unrar/src/encname.cpp
+++ b/third_party/unrar/src/encname.cpp
@@ -11,8 +11,8 @@
 
 
 
-void EncodeFileName::Decode(char *Name,byte *EncName,size_t EncSize,wchar *NameW,
-                            size_t MaxDecSize)
+void EncodeFileName::Decode(char *Name,size_t NameSize,byte *EncName,size_t EncSize,
+                            wchar *NameW,size_t MaxDecSize)
 {
   size_t EncPos=0,DecPos=0;
   byte HighByte=EncPos<EncSize ? EncName[EncPos++] : 0;
@@ -53,11 +53,11 @@
             if (EncPos>=EncSize)
               break;
             byte Correction=EncName[EncPos++];
-            for (Length=(Length&0x7f)+2;Length>0 && DecPos<MaxDecSize;Length--,DecPos++)
+            for (Length=(Length&0x7f)+2;Length>0 && DecPos<MaxDecSize && DecPos<NameSize;Length--,DecPos++)
               NameW[DecPos]=((Name[DecPos]+Correction)&0xff)+(HighByte<<8);
           }
           else
-            for (Length+=2;Length>0 && DecPos<MaxDecSize;Length--,DecPos++)
+            for (Length+=2;Length>0 && DecPos<MaxDecSize && DecPos<NameSize;Length--,DecPos++)
               NameW[DecPos]=Name[DecPos];
         }
         break;
diff --git a/third_party/unrar/src/encname.hpp b/third_party/unrar/src/encname.hpp
index 3e7786f..538bcb6 100644
--- a/third_party/unrar/src/encname.hpp
+++ b/third_party/unrar/src/encname.hpp
@@ -14,7 +14,7 @@
   public:
     EncodeFileName();
     size_t Encode(char *Name,wchar *NameW,byte *EncName);
-    void Decode(char *Name,byte *EncName,size_t EncSize,wchar *NameW,size_t MaxDecSize);
+    void Decode(char *Name,size_t NameSize,byte *EncName,size_t EncSize,wchar *NameW,size_t MaxDecSize);
 };
 
 #endif
diff --git a/third_party/unrar/src/errhnd.cpp b/third_party/unrar/src/errhnd.cpp
index 3dd92a9c..acd2d5103 100644
--- a/third_party/unrar/src/errhnd.cpp
+++ b/third_party/unrar/src/errhnd.cpp
@@ -46,6 +46,7 @@
   // is called from File object destructor and can be invoked when stack
   // unwinding while handling another exception. Throwing a new exception
   // when stack unwinding is prohibited and terminates a program.
+  // If necessary, we can check std::uncaught_exception() before throw.
   SetErrorCode(RARX_FATAL);
 }
 
@@ -270,6 +271,7 @@
 #endif
 
   ErrHandler.UserBreak=true;
+  ErrHandler.SetDisableShutdown();
   mprintf(St(MBreak));
 
 #ifdef _WIN_ALL
@@ -293,7 +295,7 @@
 #endif
 
 #if defined(_WIN_ALL) && !defined(_MSC_VER)
-  // never reached, just to avoid a compiler warning
+  // Never reached, just to avoid a compiler warning
   return TRUE;
 #endif
 }
@@ -329,36 +331,15 @@
 }
 
 
-void ErrorHandler::SysErrMsg()
+bool ErrorHandler::GetSysErrMsg(wchar *Msg,size_t Size)
 {
 #if !defined(SFX_MODULE) && !defined(SILENT)
 #ifdef _WIN_ALL
-  wchar *lpMsgBuf=NULL;
   int ErrType=GetLastError();
-  if (ErrType!=0 && FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
-              NULL,ErrType,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-              (LPTSTR)&lpMsgBuf,0,NULL))
-  {
-    wchar *CurMsg=lpMsgBuf;
-    while (CurMsg!=NULL)
-    {
-      while (*CurMsg=='\r' || *CurMsg=='\n')
-        CurMsg++;
-      if (*CurMsg==0)
-        break;
-      wchar *EndMsg=wcschr(CurMsg,'\r');
-      if (EndMsg==NULL)
-        EndMsg=wcschr(CurMsg,'\n');
-      if (EndMsg!=NULL)
-      {
-        *EndMsg=0;
-        EndMsg++;
-      }
-      uiMsg(UIERROR_SYSERRMSG,CurMsg);
-      CurMsg=EndMsg;
-    }
-  }
-  LocalFree( lpMsgBuf );
+  if (ErrType!=0)
+    return FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
+                         NULL,ErrType,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
+                         Msg,(DWORD)Size,NULL)!=0;
 #endif
 
 #if defined(_UNIX) || defined(_EMX)
@@ -367,12 +348,46 @@
     char *err=strerror(errno);
     if (err!=NULL)
     {
-      wchar Msg[1024];
-      CharToWide(err,Msg,ASIZE(Msg));
-      uiMsg(UIERROR_SYSERRMSG,Msg);
+      CharToWide(err,Msg,Size);
+      return true;
     }
   }
 #endif
+#endif
+  return false;
+}
+
+
+void ErrorHandler::SysErrMsg()
+{
+#if !defined(SFX_MODULE) && !defined(SILENT)
+  wchar Msg[1024];
+  if (!GetSysErrMsg(Msg,ASIZE(Msg)))
+    return;
+#ifdef _WIN_ALL
+  wchar *CurMsg=Msg;
+  while (CurMsg!=NULL)
+  {
+    while (*CurMsg=='\r' || *CurMsg=='\n')
+      CurMsg++;
+    if (*CurMsg==0)
+      break;
+    wchar *EndMsg=wcschr(CurMsg,'\r');
+    if (EndMsg==NULL)
+      EndMsg=wcschr(CurMsg,'\n');
+    if (EndMsg!=NULL)
+    {
+      *EndMsg=0;
+      EndMsg++;
+    }
+    uiMsg(UIERROR_SYSERRMSG,CurMsg);
+    CurMsg=EndMsg;
+  }
+#endif
+
+#if defined(_UNIX) || defined(_EMX)
+  uiMsg(UIERROR_SYSERRMSG,Msg);
+#endif
 
 #endif
 }
diff --git a/third_party/unrar/src/errhnd.hpp b/third_party/unrar/src/errhnd.hpp
index 1bcae41..24f7962 100644
--- a/third_party/unrar/src/errhnd.hpp
+++ b/third_party/unrar/src/errhnd.hpp
@@ -56,9 +56,11 @@
     void SetSignalHandlers(bool Enable);
     void Throw(RAR_EXIT Code);
     void SetSilent(bool Mode) {Silent=Mode;};
+    bool GetSysErrMsg(wchar *Msg,size_t Size);
     void SysErrMsg();
     int GetSystemErrorCode();
     void SetSystemErrorCode(int Code);
+    void SetDisableShutdown() {DisableShutdown=true;}
     bool IsShutdownEnabled() {return !DisableShutdown;}
 
     bool UserBreak = false; // Ctrl+Break is pressed.
diff --git a/third_party/unrar/src/extract.cpp b/third_party/unrar/src/extract.cpp
index 89a53c1..f4835067 100644
--- a/third_party/unrar/src/extract.cpp
+++ b/third_party/unrar/src/extract.cpp
@@ -59,7 +59,11 @@
   {
     if (!PasswordCancelled)
       uiMsg(UIERROR_NOFILESTOEXTRACT,ArcName);
-    ErrHandler.SetErrorCode(RARX_NOFILES);
+
+    // Other error codes may explain a reason of "no files extracted" clearer,
+    // so set it only if no other errors found (wrong mask set by user).
+    if (ErrHandler.GetErrorCode()==RARX_SUCCESS)
+      ErrHandler.SetErrorCode(RARX_NOFILES);
   }
   else
     if (!Cmd->DisableDone)
@@ -85,7 +89,7 @@
   FirstFile=true;
 #endif
 
-  PasswordAll=(Cmd->Password.IsSet());
+  GlobalPassword=Cmd->Password.IsSet();
 
   DataIO.UnpVolume=false;
 
@@ -159,7 +163,7 @@
     // This size is necessary to display the correct total progress indicator.
 
     wchar NextName[NM];
-    wcscpy(NextName,Arc.FileName);
+    wcsncpyz(NextName,Arc.FileName,ASIZE(NextName));
 
     while (true)
     {
@@ -255,7 +259,7 @@
   if (HeaderType!=HEAD_FILE)
   {
 #ifndef SFX_MODULE
-    if (HeaderType==HEAD3_OLDSERVICE && PrevProcessed)
+    if (Arc.Format==RARFMT15 && HeaderType==HEAD3_OLDSERVICE && PrevProcessed)
       SetExtraInfo20(Cmd,Arc,DestFileName);
 #endif
     if (HeaderType==HEAD_SERVICE && PrevProcessed)
@@ -327,6 +331,7 @@
 
     if (wcsicomp(ArcName,CurVolName)!=0 && FileExist(ArcName))
     {
+      wcsncpyz(Cmd->ArcName,ArcName,ASIZE(ArcName)); // For GUI "Delete archive after extraction".
       // If first volume name does not match the current name and if such
       // volume name really exists, let's unpack from this first volume.
       Repeat=true;
@@ -437,7 +442,7 @@
       return !Arc.Solid; // Can try extracting next file only in non-solid archive.
     }
 
-    while (true) // Repeat the password prompt for wrong passwords.
+    while (true) // Repeat the password prompt for wrong and empty passwords.
     {
       if (Arc.FileHead.Encrypted)
       {
@@ -455,21 +460,8 @@
           return false;
         }
 #endif
-        // Skip only the current encrypted file if empty password is entered.
-        // Actually our "cancel" code above intercepts empty passwords too now,
-        // so we keep the code below just in case we'll decide process empty
-        // and cancelled passwords differently sometimes.
-        if (!Cmd->Password.IsSet())
-        {
-          ErrHandler.SetErrorCode(RARX_WARNING);
-#ifdef RARDLL
-          Cmd->DllError=ERAR_MISSING_PASSWORD;
-#endif
-          ExtrFile=false;
-        }
       }
 
-
       // Set a password before creating the file, so we can skip creating
       // in case of wrong password.
       SecPassword FilePassword=Cmd->Password;
@@ -489,14 +481,24 @@
           memcmp(Arc.FileHead.PswCheck,PswCheck,SIZE_PSWCHECK)!=0 &&
           !Arc.BrokenHeader)
       {
-        // This message is used by Android GUI and Windows GUI and SFX to
-        // reset cached passwords. Update appropriate code if changed.
-        uiMsg(UIWAIT_BADPSW,ArcFileName);
-
-        if (!PasswordAll) // If entered manually and not through -p<pwd>.
+        if (GlobalPassword) // For -p<pwd> or Ctrl+P.
         {
+          // This message is used by Android GUI to reset cached passwords.
+          // Update appropriate code if changed.
+          uiMsg(UIERROR_BADPSW,ArcFileName);
+        }
+        else // For passwords entered manually.
+        {
+          // This message is used by Android GUI and Windows GUI and SFX to
+          // reset cached passwords. Update appropriate code if changed.
+          uiMsg(UIWAIT_BADPSW,ArcFileName);
           Cmd->Password.Clean();
+
+          // Avoid new requests for unrar.dll to prevent the infinite loop
+          // if app always returns the same password.
+#ifndef RARDLL
           continue; // Request a password again.
+#endif
         }
 #ifdef RARDLL
         // If we already have ERAR_EOPEN as result of missing volume,
@@ -977,19 +979,17 @@
 {
   if (!Cmd->Password.IsSet())
   {
-    if (!uiGetPassword(UIPASSWORD_FILE,ArcFileName,&Cmd->Password) || !Cmd->Password.IsSet())
+    if (!uiGetPassword(UIPASSWORD_FILE,ArcFileName,&Cmd->Password)/* || !Cmd->Password.IsSet()*/)
     {
-      // Suppress "test is ok" message in GUI if user entered
-      // an empty password or cancelled a password prompt.
+      // Suppress "test is ok" message if user cancelled the password prompt.
       uiMsg(UIERROR_INCERRCOUNT);
-
       return false;
     }
     Cmd->ManualPassword=true;
   }
 #if !defined(SILENT)
   else
-    if (!PasswordAll && !Arc.FileHead.Solid)
+    if (!GlobalPassword && !Arc.FileHead.Solid)
     {
       eprintf(St(MUseCurPsw),ArcFileName);
       switch(Cmd->AllYes ? 1 : Ask(St(MYesNoAll)))
@@ -1001,7 +1001,7 @@
             return false;
           break;
         case 3:
-          PasswordAll=true;
+          GlobalPassword=true;
           break;
       }
     }
diff --git a/third_party/unrar/src/extract.hpp b/third_party/unrar/src/extract.hpp
index 85a21f5..325928d 100644
--- a/third_party/unrar/src/extract.hpp
+++ b/third_party/unrar/src/extract.hpp
@@ -43,7 +43,7 @@
 
     wchar ArcName[NM];
 
-    bool PasswordAll;
+    bool GlobalPassword;
     bool PrevProcessed; // If previous file was successfully extracted or tested.
     wchar DestFileName[NM];
     bool PasswordCancelled;
diff --git a/third_party/unrar/src/file.hpp b/third_party/unrar/src/file.hpp
index dd5cfec..a1d42a05 100644
--- a/third_party/unrar/src/file.hpp
+++ b/third_party/unrar/src/file.hpp
@@ -76,13 +76,16 @@
     File();
     virtual ~File();
     void operator = (File &SrcFile);
+
+    // Several functions below are 'virtual', because they are redefined
+    // by Archive for QOpen and by MultiFile for split files in WinRAR.
     virtual bool Open(const wchar *Name,uint Mode=FMF_READ);
     void TOpen(const wchar *Name);
     bool WOpen(const wchar *Name);
     bool Create(const wchar *Name,uint Mode=FMF_UPDATE|FMF_SHAREREAD);
     void TCreate(const wchar *Name,uint Mode=FMF_UPDATE|FMF_SHAREREAD);
     bool WCreate(const wchar *Name,uint Mode=FMF_UPDATE|FMF_SHAREREAD);
-    virtual bool Close();
+    virtual bool Close(); // 'virtual' for MultiFile class.
     bool Delete();
     bool Rename(const wchar *NewName);
     bool Write(const void *Data,size_t Size);
@@ -100,7 +103,7 @@
     void SetCloseFileTime(RarTime *ftm,RarTime *fta=NULL);
     static void SetCloseFileTimeByName(const wchar *Name,RarTime *ftm,RarTime *fta);
     void GetOpenFileTime(RarTime *ft);
-    virtual bool IsOpened() {return hFile!=FILE_BAD_HANDLE;};
+    virtual bool IsOpened() {return hFile!=FILE_BAD_HANDLE;}; // 'virtual' for MultiFile class.
     int64 FileLength();
     void SetHandleType(FILE_HANDLETYPE Type) {HandleType=Type;}
     FILE_HANDLETYPE GetHandleType() {return HandleType;}
diff --git a/third_party/unrar/src/hardlinks.cpp b/third_party/unrar/src/hardlinks.cpp
index cf0b25a..946a395 100644
--- a/third_party/unrar/src/hardlinks.cpp
+++ b/third_party/unrar/src/hardlinks.cpp
@@ -3,7 +3,12 @@
   SlashToNative(NameExisting,NameExisting,NameExistingSize); // Not needed for RAR 5.1+ archives.
 
   if (!FileExist(NameExisting))
+  {
+    uiMsg(UIERROR_HLINKCREATE,NameNew);
+    uiMsg(UIERROR_NOLINKTARGET);
+    ErrHandler.SetErrorCode(RARX_CREATE);
     return false;
+  }
   CreatePath(NameNew,true);
 
 #ifdef _WIN_ALL
diff --git a/third_party/unrar/src/headers.hpp b/third_party/unrar/src/headers.hpp
index 9486478..6af453a9 100644
--- a/third_party/unrar/src/headers.hpp
+++ b/third_party/unrar/src/headers.hpp
@@ -11,18 +11,14 @@
 #define  SIZEOF_SUBBLOCKHEAD    14
 #define  SIZEOF_COMMHEAD        13
 #define  SIZEOF_PROTECTHEAD     26
-#define  SIZEOF_AVHEAD          14
-#define  SIZEOF_SIGNHEAD        15
 #define  SIZEOF_UOHEAD          18
-#define  SIZEOF_MACHEAD         22
-#define  SIZEOF_EAHEAD          24
-#define  SIZEOF_BEEAHEAD        24
 #define  SIZEOF_STREAMHEAD      26
 
-#define  VER_PACK               29
-#define  VER_PACK5              50 // It is stored as 0, but we subtract 50 when saving an archive.
-#define  VER_UNPACK             29
-#define  VER_UNPACK5            50 // It is stored as 0, but we add 50 when reading an archive.
+#define  VER_PACK               29U
+#define  VER_PACK5              50U // It is stored as 0, but we subtract 50 when saving an archive.
+#define  VER_UNPACK             29U
+#define  VER_UNPACK5            50U // It is stored as 0, but we add 50 when reading an archive.
+#define  VER_UNKNOWN          9999U // Just some large value.
 
 #define  MHD_VOLUME         0x0001U
 
@@ -86,6 +82,8 @@
   HEAD3_SERVICE=0x7a,HEAD3_ENDARC=0x7b
 };
 
+
+// RAR 2.9 and earlier.
 enum { EA_HEAD=0x100,UO_HEAD=0x101,MAC_HEAD=0x102,BEEA_HEAD=0x103,
        NTACL_HEAD=0x104,STREAM_HEAD=0x105 };
 
@@ -177,7 +175,7 @@
 struct FileHeader:BlockHeader
 {
   byte HostOS;
-  byte UnpVer;
+  uint UnpVer; // It is 1 byte in RAR29 and bit field in RAR5.
   byte Method;
   union {
     uint FileAttr;
@@ -193,7 +191,7 @@
 
   int64 PackSize;
   int64 UnpSize;
-  int64 MaxSize; // Reserve size bytes for vint of this size.
+  int64 MaxSize; // Reserve packed and unpacked size bytes for vint of this size.
 
   HashValue FileHash;
 
@@ -323,23 +321,6 @@
 };
 
 
-struct AVHeader:BaseBlock
-{
-  byte UnpVer;
-  byte Method;
-  byte AVVer;
-  uint AVInfoCRC;
-};
-
-
-struct SignHeader:BaseBlock
-{
-  uint CreationTime;
-  ushort ArcNameSize;
-  ushort UserNameSize;
-};
-
-
 struct UnixOwnersHeader:SubBlockHeader
 {
   ushort OwnerNameSize;
@@ -370,11 +351,4 @@
 };
 
 
-struct MacFInfoHeader:SubBlockHeader
-{
-  uint fileType;
-  uint fileCreator;
-};
-
-
 #endif
diff --git a/third_party/unrar/src/list.cpp b/third_party/unrar/src/list.cpp
index b633db1..3a17b6c 100644
--- a/third_party/unrar/src/list.cpp
+++ b/third_party/unrar/src/list.cpp
@@ -351,7 +351,8 @@
       mprintf(L"\n%12ls: %ls",St(MListHostOS),HostOS);
 
     mprintf(L"\n%12ls: RAR %ls(v%d) -m%d -md=%d%s",St(MListCompInfo),
-            Format==RARFMT15 ? L"3.0":L"5.0",hd.UnpVer,hd.Method,
+            Format==RARFMT15 ? L"3.0":L"5.0",
+            hd.UnpVer==VER_UNKNOWN ? 0 : hd.UnpVer,hd.Method,
             hd.WinSize>=0x100000 ? hd.WinSize/0x100000:hd.WinSize/0x400,
             hd.WinSize>=0x100000 ? L"M":L"K");
 
diff --git a/third_party/unrar/src/loclang.hpp b/third_party/unrar/src/loclang.hpp
index 763e8c6..ebc9654 100644
--- a/third_party/unrar/src/loclang.hpp
+++ b/third_party/unrar/src/loclang.hpp
@@ -294,7 +294,8 @@
 #define   MRprNoFiles        L"\nNo files found"
 #define   MLogUnexpEOF       L"\nUnexpected end of archive"
 #define   MRepAskReconst     L"\nReconstruct archive structure ?"
-#define   MRecScanning       L"\nScanning..."
+#define   MRRSearch          L"\nSearching for recovery record"
+#define   MAnalyzeFileData   L"\nAnalyzing file data"
 #define   MRecRNotFound      L"\nData recovery record not found"
 #define   MRecRFound         L"\nData recovery record found"
 #define   MRecSecDamage      L"\nSector %ld (offsets %lX...%lX) damaged"
@@ -310,8 +311,6 @@
 #define   MErrLnkRead        L"\nWARNING: Cannot read symbolic link %s"
 #define   MSymLinkExists     L"\nWARNING: Symbolic link %s already exists"
 #define   MAskRetryCreate    L"\nCannot create %s. Retry ?"
-#define   MListMACHead1      L"\n Mac OS file type:  %c%c%c%c  ; "
-#define   MListMACHead2      L"file creator:  %c%c%c%c\n"
 #define   MDataBadCRC        L"\n%-20s : packed data checksum error in volume %s"
 #define   MFileRO            L"\n%s is read-only"
 #define   MACLGetError       L"\nWARNING: Cannot get %s security data\n"
@@ -353,6 +352,7 @@
 #define   MRecVolLimit       L"\nTotal number of usual and recovery volumes must not exceed %d"
 #define   MVolumeNumber      L"volume %d"
 #define   MCannotDelete      L"\nCannot delete %s"
+#define   MRecycleFailed     L"\nCannot move some files and folders to Recycle Bin"
 #define   MCalcCRC           L"\nCalculating the checksum"
 #define   MTooLargeSFXArc    L"\nWARNING: Too large SFX archive. Windows cannot run the executable file exceeding 4 GB."
 #define   MCalcCRCAllVol     L"\nCalculating checksums of all volumes."
@@ -360,9 +360,8 @@
 #define   MNewerRAR          L"\nYou may need a newer version of RAR."
 #define   MUnkEncMethod      L"\nUnknown encryption method in %s"
 #define   MWrongPassword     L"\nThe specified password is incorrect."
-#define   MRepairing         L"\nRepairing"
 #define   MAreaDamaged       L"\nCorrupt %d bytes at %08x %08x"
-#define   MBlocksRecovered   L"\n%d blocks recovered."
+#define   MBlocksRecovered   L"\n%u blocks are recovered, %u blocks are relocated"
 #define   MRRDamaged         L"\nRecovery record is corrupt."
 #define   MTestingRR         L"\nTesting the recovery record"
 #define   MFailed            L"Failed"
@@ -376,6 +375,7 @@
 #define   MCopyingData       L"\nCopying data"
 #define   MErrCreateLnkS     L"\nCannot create symbolic link %s"
 #define   MErrCreateLnkH     L"\nCannot create hard link %s"
+#define   MErrLnkTarget      L"\nYou need to unpack the link target first"
 #define   MNeedAdmin         L"\nYou may need to run RAR as administrator"
 #define   MDictOutMem        L"\nNot enough memory for %d MB compression dictionary, changed to %d MB."
 #define   MUseSmalllerDict   L"\nPlease use a smaller compression dictionary."
diff --git a/third_party/unrar/src/model.cpp b/third_party/unrar/src/model.cpp
index 6c5c4438..1ca9f03 100644
--- a/third_party/unrar/src/model.cpp
+++ b/third_party/unrar/src/model.cpp
@@ -184,9 +184,6 @@
 
 inline RARPPM_CONTEXT* ModelPPM::CreateSuccessors(bool Skip,RARPPM_STATE* p1)
 {
-#ifdef __ICL
-  static
-#endif
   RARPPM_STATE UpState;
   RARPPM_CONTEXT* pc=MinContext, * UpBranch=FoundState->Successor;
   RARPPM_STATE * p, * ps[MAX_O], ** pps=ps;
@@ -220,7 +217,14 @@
     {
       pc=p->Successor;
       break;
+
     }
+    // We ensure that PPM order input parameter does not exceed MAX_O (64),
+    // so we do not really need this check and added it for extra safety.
+    // See CVE-2017-17969 for details.
+    if (pps>=ps+ASIZE(ps))
+      return NULL;
+
     *pps++ = p;
   } while ( pc->Suffix );
 NO_LOOP:
@@ -510,6 +514,12 @@
       p++; 
     } while (Model->CharMask[p->Symbol] == Model->EscCount);
     HiCnt += p->Freq;
+
+    // We do not reuse PPMd coder in unstable state, so we do not really need
+    // this check and added it for extra safety. See CVE-2017-17969 for details.
+    if (pps>=ps+ASIZE(ps))
+      return false;
+
     *pps++ = p;
   } while ( --i );
   Model->Coder.SubRange.scale += HiCnt;
@@ -521,7 +531,12 @@
   {
     HiCnt=0;
     while ((HiCnt += p->Freq) <= count) 
-      p=*++pps;
+    {
+      pps++;
+      if (pps>=ps+ASIZE(ps)) // Extra safety check.
+        return false;
+      p=*pps;
+    }
     Model->Coder.SubRange.LowCount = (Model->Coder.SubRange.HighCount=HiCnt)-p->Freq;
     psee2c->update();
     update2(Model,p);
@@ -534,12 +549,15 @@
     pps--;
     do 
     { 
-      Model->CharMask[(*++pps)->Symbol]=Model->EscCount; 
+      pps++;
+      if (pps>=ps+ASIZE(ps)) // Extra safety check.
+        return false;
+      Model->CharMask[(*pps)->Symbol]=Model->EscCount; 
     } while ( --i );
     psee2c->Summ += Model->Coder.SubRange.scale;
     Model->NumMasked = NumStats;
   }
-  return(true);
+  return true;
 }
 
 
diff --git a/third_party/unrar/src/options.hpp b/third_party/unrar/src/options.hpp
index 781a59e..99afd0e 100644
--- a/third_party/unrar/src/options.hpp
+++ b/third_party/unrar/src/options.hpp
@@ -12,11 +12,7 @@
   EXCL_SKIPWHOLEPATH,  // -ep  (exclude the path completely)
   EXCL_BASEPATH,       // -ep1 (exclude the base part of path)
   EXCL_SAVEFULLPATH,   // -ep2 (the full path without the disk letter)
-  EXCL_ABSPATH,        // -ep3 (the full path with the disk letter)
-
-  EXCL_SKIPABSPATH     // Works as EXCL_BASEPATH for fully qualified paths
-                       // and as EXCL_UNCHANGED for relative paths.
-                       // Used by WinRAR GUI only.
+  EXCL_ABSPATH         // -ep3 (the full path with the disk letter)
 };
 
 enum {SOLID_NONE=0,SOLID_NORMAL=1,SOLID_COUNT=2,SOLID_FILEEXT=4,
@@ -64,7 +60,8 @@
 };
 
 enum POWER_MODE {
-  POWERMODE_KEEP=0,POWERMODE_OFF,POWERMODE_HIBERNATE,POWERMODE_SLEEP
+  POWERMODE_KEEP=0,POWERMODE_OFF,POWERMODE_HIBERNATE,POWERMODE_SLEEP,
+  POWERMODE_RESTART
 };
 
 struct FilterMode
@@ -95,18 +92,6 @@
     QOPEN_MODE QOpenMode;
 #endif
 
-    bool ArcInMem;
-#ifdef USE_ARCMEM
-    void SetArcInMem(byte *Data,size_t Size)
-    {
-      ArcMemData=Data;
-      ArcMemSize=Size;
-      ArcInMem=Data!=NULL && Size>0;
-    }
-    byte *ArcMemData;
-    size_t ArcMemSize;
-#endif
-
     bool ConfigDisabled; // Switch -cfg-.
     wchar ExtrPath[NM];
     wchar CommentFile[NM];
diff --git a/third_party/unrar/src/os.hpp b/third_party/unrar/src/os.hpp
index 19bd670..bc11126 100644
--- a/third_party/unrar/src/os.hpp
+++ b/third_party/unrar/src/os.hpp
@@ -22,6 +22,12 @@
 
 #ifdef _WIN_ALL
 
+
+// We got a report that just "#define STRICT" is incompatible with
+// "#define STRICT 1" in Windows 10 SDK minwindef.h and depending on the order
+// in which these statements are reached this may cause a compiler warning
+// and build break for other projects incorporating this source.
+// So we changed it to "#define STRICT 1".
 #ifndef STRICT
 #define STRICT 1
 #endif
diff --git a/third_party/unrar/src/qopen.cpp b/third_party/unrar/src/qopen.cpp
index 97851ca1..89a83b3 100644
--- a/third_party/unrar/src/qopen.cpp
+++ b/third_party/unrar/src/qopen.cpp
@@ -84,7 +84,7 @@
     if (ReadSize==0 || Arc->GetHeaderType()!=HEAD_SERVICE ||
         !Arc->SubHead.CmpName(SUBHEAD_TYPE_QOPEN))
       return;
-    QLHeaderPos=Arc->CurBlockPos;
+    QOHeaderPos=Arc->CurBlockPos;
     RawDataStart=Arc->Tell();
     RawDataSize=Arc->SubHead.UnpSize;
 
@@ -101,7 +101,10 @@
                          Arc->SubHead.HashKey,Arc->SubHead.PswCheck);
     else
 #endif
+    {
+      Loaded=false;
       return;
+    }
   }
 
   RawDataPos=0;
@@ -169,7 +172,7 @@
   // archive updating involve several passes. So if we detect that file
   // pointer is moved back, we reload quick open data from beginning.
   if (Method==SEEK_SET && (uint64)Offset<SeekPos && (uint64)Offset<LastReadHeaderPos)
-    Load(QLHeaderPos);
+    Load(QOHeaderPos);
 
   if (Method==SEEK_SET)
     SeekPos=Offset;
@@ -247,10 +250,10 @@
     return false;
   }
 
-  // If rest of block data crosses buffer boundary, read it in loop.
-  size_t DataLeft=ReadBufSize-ReadBufPos;
+  // If rest of block data crosses Buf boundary, read it in loop.
   while (SizeToRead>0)
   {
+    size_t DataLeft=ReadBufSize-ReadBufPos;
     size_t CurSizeToRead=Min(DataLeft,(size_t)SizeToRead);
     Raw.Read(Buf+ReadBufPos,CurSizeToRead);
     ReadBufPos+=CurSizeToRead;
@@ -277,9 +280,11 @@
   uint Flags=(uint)Raw.GetV();
   uint64 Offset=Raw.GetV();
   size_t HeaderSize=(size_t)Raw.GetV();
+  if (HeaderSize>MAX_HEADER_SIZE_RAR5)
+    return false;
   LastReadHeader.Alloc(HeaderSize);
   Raw.GetB(&LastReadHeader[0],HeaderSize);
   // Calculate the absolute position as offset from quick open service header.
-  LastReadHeaderPos=QLHeaderPos-Offset;
+  LastReadHeaderPos=QOHeaderPos-Offset;
   return true;
 }
diff --git a/third_party/unrar/src/qopen.hpp b/third_party/unrar/src/qopen.hpp
index e04af18..d745cea8 100644
--- a/third_party/unrar/src/qopen.hpp
+++ b/third_party/unrar/src/qopen.hpp
@@ -29,24 +29,24 @@
     QuickOpenItem *ListStart;
     QuickOpenItem *ListEnd;
     
-    byte *Buf;
-    static const size_t MaxBufSize=0x10000; // Must be multiple of CRYPT_BLOCK_SIZE.
-    size_t CurBufSize;
+    byte *Buf; // Read quick open data here.
+    static const size_t MaxBufSize=0x10000; // Buf size, must be multiple of CRYPT_BLOCK_SIZE.
+    size_t CurBufSize; // Current size of buffered data in write mode.
 #ifndef RAR_NOCRYPT // For shell extension.
     CryptData Crypt;
 #endif
 
     bool Loaded;
-    uint64 QLHeaderPos;
-    uint64 RawDataStart;
-    uint64 RawDataSize;
-    uint64 RawDataPos;
-    size_t ReadBufSize;
-    size_t ReadBufPos;
+    uint64 QOHeaderPos;  // Main QO header position.
+    uint64 RawDataStart; // Start of QO data, just after the main header.
+    uint64 RawDataSize;  // Size of entire QO data.
+    uint64 RawDataPos;   // Current read position in QO data.
+    size_t ReadBufSize;  // Size of Buf data currently read from QO.
+    size_t ReadBufPos;   // Current read position in Buf data.
     Array<byte> LastReadHeader;
     uint64 LastReadHeaderPos;
     uint64 SeekPos;
-    bool UnsyncSeekPos; // QOpen SeekPos does not match an actual file pointer.
+    bool UnsyncSeekPos;  // QOpen SeekPos does not match an actual file pointer.
   public:
     QuickOpen();
     ~QuickOpen();
diff --git a/third_party/unrar/src/rar.cpp b/third_party/unrar/src/rar.cpp
index a410576..326bf90 100644
--- a/third_party/unrar/src/rar.cpp
+++ b/third_party/unrar/src/rar.cpp
@@ -75,13 +75,6 @@
     ErrHandler.SetSilent(Cmd->AllYes || Cmd->MsgStream==MSG_NULL);
 
     Cmd->OutTitle();
-/*
-    byte Buf[10000];
-    File Src;
-    Src.TOpen(L"123.rar");
-    int Size=Src.Read(Buf,sizeof(Buf));
-    Cmd->SetArcInMem(Buf,Size);
-*/
     Cmd->ProcessCommand();
     delete Cmd;
   }
diff --git a/third_party/unrar/src/rar.hpp b/third_party/unrar/src/rar.hpp
index 99b3ee7..65e04967 100644
--- a/third_party/unrar/src/rar.hpp
+++ b/third_party/unrar/src/rar.hpp
@@ -45,9 +45,6 @@
 #ifdef USE_QOPEN
 #include "qopen.hpp"
 #endif
-#ifdef USE_ARCMEM
-#include "arcmem.hpp"
-#endif
 #include "archive.hpp"
 #include "match.hpp"
 #include "cmddata.hpp"
diff --git a/third_party/unrar/src/rardefs.hpp b/third_party/unrar/src/rardefs.hpp
index aa7c329e..095792a 100644
--- a/third_party/unrar/src/rardefs.hpp
+++ b/third_party/unrar/src/rardefs.hpp
@@ -4,7 +4,7 @@
 #define  Min(x,y) (((x)<(y)) ? (x):(y))
 #define  Max(x,y) (((x)>(y)) ? (x):(y))
 
-// Universal replacement of abs function for non-int arguments.
+// Universal replacement of abs function.
 #define  Abs(x) (((x)<0) ? -(x):(x))
 
 #define  ASIZE(x) (sizeof(x)/sizeof(x[0]))
@@ -24,7 +24,6 @@
 #ifndef SFX_MODULE
 #define USE_QOPEN
 #endif
-#define USE_ARCMEM
 
 // Produce the value, which is equal or larger than 'v' and aligned to 'a'.
 #define ALIGN_VALUE(v,a) (size_t(v) + ( (~size_t(v) + 1) & (a - 1) ) )
diff --git a/third_party/unrar/src/resource.cpp b/third_party/unrar/src/resource.cpp
index 20a8575..2eec79c7 100644
--- a/third_party/unrar/src/resource.cpp
+++ b/third_party/unrar/src/resource.cpp
@@ -7,5 +7,14 @@
 {
   return StringId;
 }
+
+
+// Needed for Unix swprintf to convert %s to %ls in legacy language resources.
+const wchar *StF(MSGID StringId)
+{
+  static wchar FormattedStr[512];
+  PrintfPrepareFmt(St(StringId),FormattedStr,ASIZE(FormattedStr));
+  return FormattedStr;
+}
 #endif
 
diff --git a/third_party/unrar/src/resource.hpp b/third_party/unrar/src/resource.hpp
index 98a6c6b..62c5bf4 100644
--- a/third_party/unrar/src/resource.hpp
+++ b/third_party/unrar/src/resource.hpp
@@ -3,8 +3,10 @@
 
 #ifdef RARDLL
 #define St(x) (L"")
+#define StF(x) (L"")
 #else
 const wchar *St(MSGID StringId);
+const wchar *StF(MSGID StringId);
 #endif
 
 
diff --git a/third_party/unrar/src/savepos.hpp b/third_party/unrar/src/savepos.hpp
index df61710..10a0664 100644
--- a/third_party/unrar/src/savepos.hpp
+++ b/third_party/unrar/src/savepos.hpp
@@ -14,7 +14,13 @@
     }
     ~SaveFilePos()
     {
-      SaveFile->Seek(SavePos,SEEK_SET);
+      // If file is already closed by current exception processing,
+      // we would get uneeded error messages and an exception inside of
+      // exception and terminate if we try to seek without checking
+      // if file is still opened. We should not also restore the position
+      // if external code closed the file on purpose.
+      if (SaveFile->IsOpened())
+        SaveFile->Seek(SavePos,SEEK_SET);
     }
 };
 
diff --git a/third_party/unrar/src/scantree.cpp b/third_party/unrar/src/scantree.cpp
index 73e43aa7..d7233da 100644
--- a/third_party/unrar/src/scantree.cpp
+++ b/third_party/unrar/src/scantree.cpp
@@ -226,7 +226,7 @@
   SpecPathLength=Name-CurMask;
   Depth=0;
 
-  wcscpy(OrigCurMask,CurMask);
+  wcsncpyz(OrigCurMask,CurMask,ASIZE(OrigCurMask));
 
   return true;
 }
@@ -350,16 +350,19 @@
     if (Slash!=NULL)
     {
       wchar Mask[NM];
-      wcscpy(Mask,Slash);
+      wcsncpyz(Mask,Slash,ASIZE(Mask));
       if (Depth<SetAllMaskDepth)
-        wcscpy(Mask+1,PointToName(OrigCurMask));
+        wcsncpyz(Mask+1,PointToName(OrigCurMask),ASIZE(Mask)-1);
       *Slash=0;
-      wcscpy(DirName,CurMask);
+      wcsncpyz(DirName,CurMask,ASIZE(DirName));
       wchar *PrevSlash=wcsrchr(CurMask,CPATHDIVIDER);
       if (PrevSlash==NULL)
-        wcscpy(CurMask,Mask+1);
+        wcsncpyz(CurMask,Mask+1,ASIZE(CurMask));
       else
-        wcscpy(PrevSlash,Mask);
+      {
+        *(PrevSlash+1)=0;
+        wcsncatz(CurMask,Mask,ASIZE(CurMask));
+      }
     }
     if (GetDirs==SCAN_GETDIRSTWICE &&
         FindFile::FastFind(DirName,FD,GetLinks) && FD->IsDir)
@@ -397,8 +400,8 @@
     
     wchar Mask[NM];
 
-    wcscpy(Mask,FastFindFile ? MASKALL:PointToName(CurMask));
-    wcscpy(CurMask,FD->Name);
+    wcsncpyz(Mask,FastFindFile ? MASKALL:PointToName(CurMask),ASIZE(Mask));
+    wcsncpyz(CurMask,FD->Name,ASIZE(CurMask));
 
     if (wcslen(CurMask)+wcslen(Mask)+1>=NM || Depth>=MAXSCANDEPTH-1)
     {
diff --git a/third_party/unrar/src/strfn.cpp b/third_party/unrar/src/strfn.cpp
index b0c82216..09730b6b 100644
--- a/third_party/unrar/src/strfn.cpp
+++ b/third_party/unrar/src/strfn.cpp
@@ -28,7 +28,8 @@
 }
 
 
-// Convert archived names to Unicode. Allow user to select a code page in GUI.
+// Convert archived names and comments to Unicode.
+// Allows user to select a code page in GUI.
 void ArcCharToWide(const char *Src,wchar *Dest,size_t DestSize,ACTW_ENCODING Encoding)
 {
 #if defined(_WIN_ALL) // Console Windows RAR.
@@ -36,11 +37,12 @@
     UtfToWide(Src,Dest,DestSize);
   else
   {
-    char NameA[NM];
+    Array<char> NameA;
     if (Encoding==ACTW_OEM)
     {
-      IntToExt(Src,NameA,ASIZE(NameA));
-      Src=NameA;
+      NameA.Alloc(DestSize+1);
+      IntToExt(Src,&NameA[0],NameA.Size());
+      Src=&NameA[0];
     }
     CharToWide(Src,Dest,DestSize);
   }
@@ -58,6 +60,8 @@
 }
 
 
+
+
 int stricomp(const char *s1,const char *s2)
 {
 #ifdef _WIN_ALL
@@ -121,6 +125,7 @@
 {
 #if defined(_WIN_ALL)
   // Convert to LPARAM first to avoid a warning in 64 bit mode.
+  // Convert to uintptr_t to avoid Clang/win error: cast to 'char *' from smaller integer type 'unsigned char' [-Werror,-Wint-to-pointer-cast]
   return (int)(LPARAM)CharLowerA((LPSTR)(uintptr_t)ch);
 #else
   return tolower(ch);
@@ -132,6 +137,7 @@
 {
 #if defined(_WIN_ALL)
   // Convert to LPARAM first to avoid a warning in 64 bit mode.
+  // Convert to uintptr_t to avoid Clang/win error: cast to 'char *' from smaller integer type 'unsigned char' [-Werror,-Wint-to-pointer-cast]
   return (int)(LPARAM)CharUpperA((LPSTR)(uintptr_t)ch);
 #else
   return toupper(ch);
@@ -428,7 +434,7 @@
 }
 
 
-#ifndef SILENT
+#ifndef RARDLL
 // For compatibility with existing translations we use %s to print Unicode
 // strings in format strings and convert them to %ls here. %s could work
 // without such conversion in Windows, but not in Unix wprintf.
diff --git a/third_party/unrar/src/strfn.hpp b/third_party/unrar/src/strfn.hpp
index 7faac42..7c835711 100644
--- a/third_party/unrar/src/strfn.hpp
+++ b/third_party/unrar/src/strfn.hpp
@@ -8,6 +8,7 @@
 enum ACTW_ENCODING { ACTW_DEFAULT, ACTW_OEM, ACTW_UTF8};
 void ArcCharToWide(const char *Src,wchar *Dest,size_t DestSize,ACTW_ENCODING Encoding);
 
+
 int stricomp(const char *s1,const char *s2);
 int strnicomp(const char *s1,const char *s2,size_t n);
 wchar* RemoveEOL(wchar *Str);
@@ -43,7 +44,7 @@
 void itoa(int64 n,wchar *Str,size_t MaxSize);
 const wchar* GetWide(const char *Src);
 const wchar* GetCmdParam(const wchar *CmdLine,wchar *Param,size_t MaxSize);
-#ifndef SILENT
+#ifndef RARDLL
 void PrintfPrepareFmt(const wchar *Org,wchar *Cvt,size_t MaxSize);
 #endif
 
diff --git a/third_party/unrar/src/strlist.hpp b/third_party/unrar/src/strlist.hpp
index cc6bc5d4..16a2cbb0 100644
--- a/third_party/unrar/src/strlist.hpp
+++ b/third_party/unrar/src/strlist.hpp
@@ -7,7 +7,7 @@
     Array<wchar> StringData;
     size_t CurPos;
 
-    uint StringsCount;
+    size_t StringsCount;
 
     size_t SaveCurPos[16],SavePosNumber;
   public:
@@ -21,7 +21,7 @@
     wchar* GetString();
     bool GetString(wchar **Str);
     void Rewind();
-    uint ItemsCount() {return StringsCount;};
+    size_t ItemsCount() {return StringsCount;};
     size_t GetCharCount() {return StringData.Size();}
     bool Search(const wchar *Str,bool CaseSensitive);
     void SavePosition();
diff --git a/third_party/unrar/src/suballoc.cpp b/third_party/unrar/src/suballoc.cpp
index f1704e2..07d32859 100644
--- a/third_party/unrar/src/suballoc.cpp
+++ b/third_party/unrar/src/suballoc.cpp
@@ -80,7 +80,7 @@
 {
   uint t=SASize << 20;
   if (SubAllocatorSize == t)
-    return TRUE;
+    return true;
   StopSubAllocator();
 
   // Original algorithm expects FIXED_UNIT_SIZE, but actual structure size
@@ -91,7 +91,7 @@
   if ((HeapStart=(byte *)malloc(AllocSize)) == NULL)
   {
     ErrHandler.MemoryError();
-    return FALSE;
+    return false;
   }
 
   // HeapEnd did not present in original algorithm. We added it to control
@@ -99,7 +99,7 @@
   HeapEnd=HeapStart+AllocSize-UNIT_SIZE;
 
   SubAllocatorSize=t;
-  return TRUE;
+  return true;
 }
 
 
diff --git a/third_party/unrar/src/system.cpp b/third_party/unrar/src/system.cpp
index 450b2bb3..ce3deb9 100644
--- a/third_party/unrar/src/system.cpp
+++ b/third_party/unrar/src/system.cpp
@@ -115,11 +115,13 @@
     AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
   }
   if (Mode==POWERMODE_OFF)
-    ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE|EWX_POWEROFF,SHTDN_REASON_FLAG_PLANNED);
+    ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,SHTDN_REASON_FLAG_PLANNED);
   if (Mode==POWERMODE_SLEEP)
     SetSuspendState(FALSE,FALSE,FALSE);
   if (Mode==POWERMODE_HIBERNATE)
     SetSuspendState(TRUE,FALSE,FALSE);
+  if (Mode==POWERMODE_RESTART)
+    ExitWindowsEx(EWX_REBOOT|EWX_FORCE,SHTDN_REASON_FLAG_PLANNED);
 }
 #endif
 
diff --git a/third_party/unrar/src/ui.hpp b/third_party/unrar/src/ui.hpp
index 396484d..a712ae37 100644
--- a/third_party/unrar/src/ui.hpp
+++ b/third_party/unrar/src/ui.hpp
@@ -10,15 +10,15 @@
   UIERROR_SYSERRMSG, UIERROR_GENERALERRMSG, UIERROR_INCERRCOUNT,
   UIERROR_CHECKSUM, UIERROR_CHECKSUMENC, UIERROR_CHECKSUMPACKED,
   UIERROR_BADPSW, UIERROR_MEMORY, UIERROR_FILEOPEN, UIERROR_FILECREATE,
-  UIERROR_FILECLOSE, UIERROR_FILESEEK, UIERROR_FILEREAD,
-  UIERROR_FILEWRITE, UIERROR_FILEDELETE, UIERROR_FILERENAME,
+  UIERROR_FILECLOSE, UIERROR_FILESEEK, UIERROR_FILEREAD, UIERROR_FILEWRITE,
+  UIERROR_FILEDELETE, UIERROR_RECYCLEFAILED, UIERROR_FILERENAME,
   UIERROR_FILEATTR, UIERROR_FILECOPY, UIERROR_FILECOPYHINT,
   UIERROR_DIRCREATE, UIERROR_SLINKCREATE, UIERROR_HLINKCREATE,
-  UIERROR_NEEDADMIN, UIERROR_ARCBROKEN, UIERROR_HEADERBROKEN,
-  UIERROR_MHEADERBROKEN, UIERROR_FHEADERBROKEN, UIERROR_SUBHEADERBROKEN,
-  UIERROR_SUBHEADERUNKNOWN, UIERROR_SUBHEADERDATABROKEN, UIERROR_RRDAMAGED,
-  UIERROR_UNKNOWNMETHOD, UIERROR_UNKNOWNENCMETHOD, UIERROR_RENAMING,
-  UIERROR_NEWERRAR, UIERROR_NOTSFX, UIERROR_OLDTOSFX,
+  UIERROR_NOLINKTARGET, UIERROR_NEEDADMIN, UIERROR_ARCBROKEN,
+  UIERROR_HEADERBROKEN, UIERROR_MHEADERBROKEN, UIERROR_FHEADERBROKEN,
+  UIERROR_SUBHEADERBROKEN, UIERROR_SUBHEADERUNKNOWN,
+  UIERROR_SUBHEADERDATABROKEN, UIERROR_RRDAMAGED, UIERROR_UNKNOWNMETHOD,
+  UIERROR_UNKNOWNENCMETHOD, UIERROR_RENAMING, UIERROR_NEWERRAR, UIERROR_NOTSFX, UIERROR_OLDTOSFX,
   UIERROR_WRONGSFXVER, UIERROR_ALREADYENC, UIERROR_DICTOUTMEM,
   UIERROR_USESMALLERDICT, UIERROR_MODIFYUNKNOWN, UIERROR_MODIFYOLD,
   UIERROR_MODIFYLOCKED, UIERROR_MODIFYVOLUME, UIERROR_NOTVOLUME,
@@ -39,8 +39,8 @@
   UIERROR_ULINKREAD, UIERROR_ULINKEXIST,
 
   UIMSG_FIRST,
-  UIMSG_STRING, UIMSG_BUILD, UIMSG_RRSEARCH, UIMSG_RRFOUND,
-  UIMSG_RRNOTFOUND, UIMSG_RRDAMAGED, UIMSG_BLOCKSRECOVERED,
+  UIMSG_STRING, UIMSG_BUILD, UIMSG_RRSEARCH, UIMSG_ANALYZEFILEDATA,
+  UIMSG_RRFOUND, UIMSG_RRNOTFOUND, UIMSG_RRDAMAGED, UIMSG_BLOCKSRECOVERED,
   UIMSG_COPYINGDATA, UIMSG_AREADAMAGED, UIMSG_SECTORDAMAGED,
   UIMSG_SECTORRECOVERED, UIMSG_SECTORNOTRECOVERED, UIMSG_FOUND,
   UIMSG_CORRECTINGNAME, UIMSG_BADARCHIVE, UIMSG_CREATING, UIMSG_RENAMING,
@@ -85,6 +85,7 @@
 
 enum UIPASSWORD_TYPE {UIPASSWORD_GLOBAL,UIPASSWORD_FILE,UIPASSWORD_ARCHIVE};
 bool uiGetPassword(UIPASSWORD_TYPE Type,const wchar *FileName,SecPassword *Password);
+bool uiIsGlobalPasswordSet();
 
 enum UIALARM_TYPE {UIALARM_ERROR, UIALARM_INFO, UIALARM_QUESTION};
 void uiAlarm(UIALARM_TYPE Type);
diff --git a/third_party/unrar/src/uiconsole.cpp b/third_party/unrar/src/uiconsole.cpp
index 4e4f5a6..023e0917 100644
--- a/third_party/unrar/src/uiconsole.cpp
+++ b/third_party/unrar/src/uiconsole.cpp
@@ -100,6 +100,7 @@
       Log(Str[0],St(MWrongPassword));
       break;
     case UIERROR_MEMORY:
+      mprintf(L"\n");
       Log(NULL,St(MErrOutMem));
       break;
     case UIERROR_FILEOPEN:
@@ -124,6 +125,9 @@
     case UIERROR_FILEDELETE:
       Log(Str[0],St(MCannotDelete),Str[1]);
       break;
+    case UIERROR_RECYCLEFAILED:
+      Log(Str[0],St(MRecycleFailed));
+      break;
     case UIERROR_FILERENAME:
       Log(Str[0],St(MErrRename),Str[1],Str[2]);
       break;
@@ -147,6 +151,10 @@
     case UIERROR_HLINKCREATE:
       Log(NULL,St(MErrCreateLnkH),Str[0]);
       break;
+    case UIERROR_NOLINKTARGET:
+      Log(NULL,St(MErrLnkTarget));
+      mprintf(L"     "); // For progress percent.
+      break;
     case UIERROR_NEEDADMIN:
       Log(NULL,St(MNeedAdmin));
       break;
@@ -211,6 +219,7 @@
       break;
     case UIERROR_INVALIDNAME:
       Log(Str[0],St(MInvalidName),Str[1]);
+      mprintf(L"\n"); // Needed when called from CmdExtract::ExtractCurrentFile.
       break;
 #ifndef SFX_MODULE
     case UIERROR_NEWRARFORMAT:
@@ -341,7 +350,16 @@
 
 bool uiGetPassword(UIPASSWORD_TYPE Type,const wchar *FileName,SecPassword *Password)
 {
-  return GetConsolePassword(Type,FileName,Password);
+  // Unlike GUI we cannot provide Cancel button here, so we use the empty
+  // password to abort. Otherwise user not knowing a password would need to
+  // press Ctrl+C multiple times to quit from infinite password request loop.
+  return GetConsolePassword(Type,FileName,Password) && Password->IsSet();
+}
+
+
+bool uiIsGlobalPasswordSet()
+{
+  return false;
 }
 
 
diff --git a/third_party/unrar/src/uisilent.cpp b/third_party/unrar/src/uisilent.cpp
index 87e5638..1b5de13d 100644
--- a/third_party/unrar/src/uisilent.cpp
+++ b/third_party/unrar/src/uisilent.cpp
@@ -39,6 +39,12 @@
 }
 
 
+bool uiIsGlobalPasswordSet()
+{
+  return false;
+}
+
+
 void uiAlarm(UIALARM_TYPE Type)
 {
 }
diff --git a/third_party/unrar/src/unicode.cpp b/third_party/unrar/src/unicode.cpp
index 858f68e..e84d9c1 100644
--- a/third_party/unrar/src/unicode.cpp
+++ b/third_party/unrar/src/unicode.cpp
@@ -138,6 +138,11 @@
   if (wcschr(Src,(wchar)MappedStringMark)==NULL)
     return false;
 
+  // Seems to be that wcrtomb in some memory analyzing libraries
+  // can produce uninitilized output while reporting success on garbage input.
+  // So we clean the destination to calm analyzers.
+  memset(Dest,0,DestSize);
+
   Success=true;
   uint SrcPos=0,DestPos=0;
   while (Src[SrcPos]!=0 && DestPos<DestSize-MB_CUR_MAX)
@@ -299,7 +304,7 @@
       if (*Src<0x800)
         Size+=2;
       else
-        if ((uint)*Src<0x10000)
+        if ((uint)*Src<0x10000) //(uint) to avoid Clang/win "always true" warning for 16-bit wchar_t.
         {
           if (Src[0]>=0xd800 && Src[0]<=0xdbff && Src[1]>=0xdc00 && Src[1]<=0xdfff)
           {
@@ -310,7 +315,7 @@
             Size+=3;
         }
         else
-          if ((uint)*Src<0x200000)
+          if ((uint)*Src<0x200000) //(uint) to avoid Clang/win "always true" warning for 16-bit wchar_t.
             Size+=4;
   return Size+1; // Include terminating zero.
 }
@@ -544,7 +549,7 @@
 int64 atoilw(const wchar *s)
 {
   bool sign=false;
-  if (*s=='-')
+  if (*s=='-') // We do use signed integers here, for example, in GUI SFX.
   {
     s++;
     sign=true;
diff --git a/third_party/unrar/src/unpack.hpp b/third_party/unrar/src/unpack.hpp
index 93d5b87..ec5d688b 100644
--- a/third_party/unrar/src/unpack.hpp
+++ b/third_party/unrar/src/unpack.hpp
@@ -395,8 +395,12 @@
     uint GetChar()
     {
       if (Inp.InAddr>BitInput::MAX_SIZE-30)
+      {
         UnpReadBuf();
-      return(Inp.InBuf[Inp.InAddr++]);
+        if (Inp.InAddr>=BitInput::MAX_SIZE) // If nothing was read.
+          return 0;
+      }
+      return Inp.InBuf[Inp.InAddr++];
     }
 };
 
diff --git a/third_party/unrar/src/unpack20.cpp b/third_party/unrar/src/unpack20.cpp
index fe0ec6a..441b7478c 100644
--- a/third_party/unrar/src/unpack20.cpp
+++ b/third_party/unrar/src/unpack20.cpp
@@ -2,7 +2,8 @@
 
 void Unpack::CopyString20(uint Length,uint Distance)
 {
-  LastDist=OldDist[OldDistPtr++ & 3]=Distance;
+  LastDist=OldDist[OldDistPtr++]=Distance;
+  OldDistPtr = OldDistPtr & 3; // Needed if RAR 1.5 file is called after RAR 2.0.
   LastLength=Length;
   DestUnpSize-=Length;
   CopyString(Length,Distance);
diff --git a/third_party/unrar/src/version.hpp b/third_party/unrar/src/version.hpp
index 6684b12c..681c4365 100644
--- a/third_party/unrar/src/version.hpp
+++ b/third_party/unrar/src/version.hpp
@@ -1,6 +1,6 @@
 #define RARVER_MAJOR     5
-#define RARVER_MINOR    60
-#define RARVER_BETA      1
-#define RARVER_DAY      13
-#define RARVER_MONTH    11
-#define RARVER_YEAR   2017
+#define RARVER_MINOR    61
+#define RARVER_BETA      0
+#define RARVER_DAY      30
+#define RARVER_MONTH     9
+#define RARVER_YEAR   2018
diff --git a/third_party/unrar/src/win32acl.cpp b/third_party/unrar/src/win32acl.cpp
index 44d0bfa..6bc865b 100644
--- a/third_party/unrar/src/win32acl.cpp
+++ b/third_party/unrar/src/win32acl.cpp
@@ -54,7 +54,10 @@
   if (!SetCode)
   {
     uiMsg(UIERROR_ACLSET,Arc.FileName,FileName);
+    DWORD LastError=GetLastError();
     ErrHandler.SysErrMsg();
+    if (LastError==ERROR_ACCESS_DENIED && !IsUserAdmin())
+      uiMsg(UIERROR_NEEDADMIN);
     ErrHandler.SetErrorCode(RARX_WARNING);
   }
 }
@@ -86,7 +89,10 @@
   if (!SetCode)
   {
     uiMsg(UIERROR_ACLSET,Arc.FileName,FileName);
+    DWORD LastError=GetLastError();
     ErrHandler.SysErrMsg();
+    if (LastError==ERROR_ACCESS_DENIED && !IsUserAdmin())
+      uiMsg(UIERROR_NEEDADMIN);
     ErrHandler.SetErrorCode(RARX_WARNING);
   }
 }
diff --git a/tools/clang/blink_gc_plugin/BadPatternFinder.cpp b/tools/clang/blink_gc_plugin/BadPatternFinder.cpp
index 458779e..ef1da662 100644
--- a/tools/clang/blink_gc_plugin/BadPatternFinder.cpp
+++ b/tools/clang/blink_gc_plugin/BadPatternFinder.cpp
@@ -100,11 +100,8 @@
         isDerivedFrom(cxxRecordDecl(decl().bind("mixin_base_class"),
                                     hasName("::blink::GarbageCollectedMixin"))),
         // ...and doesn't use USING_GARBAGE_COLLECTED_MIXIN
-        unless(anyOf(isSameOrDerivedFrom(has(typedefNameDecl(
-                         hasName("HasUsingGarbageCollectedMixinMacro")))),
-                     isSameOrDerivedFrom(has(
-                         fieldDecl(hasName("mixin_constructor_marker_")))))),
-        // unless(),
+        unless(isSameOrDerivedFrom(
+            has(fieldDecl(hasName("mixin_constructor_marker_"))))),
         // ...and might end up actually being constructed
         unless(hasMethod(isPure())), unless(matchesName("::SameSizeAs")));
     match_finder.addDynamicMatcher(class_missing_mixin_marker, this);
diff --git a/tools/clang/blink_gc_plugin/tests/heap/stubs.h b/tools/clang/blink_gc_plugin/tests/heap/stubs.h
index 81a9ee5..eafea1c 100644
--- a/tools/clang/blink_gc_plugin/tests/heap/stubs.h
+++ b/tools/clang/blink_gc_plugin/tests/heap/stubs.h
@@ -198,12 +198,6 @@
   virtual bool IsHeapObjectAlive(Visitor*) const override { return 0; } \
   void* mixin_constructor_marker_;
 
-#define USING_GARBAGE_COLLECTED_MIXIN_NEW(type)                         \
- public:                                                                \
-  virtual void AdjustAndMark(Visitor*) const override {}                \
-  virtual bool IsHeapObjectAlive(Visitor*) const override { return 0; } \
-  typedef int HasUsingGarbageCollectedMixinMacro;
-
 #define EAGERLY_FINALIZED() typedef int IsEagerlyFinalizedMarker
 
 template<typename T> class GarbageCollected { };
diff --git a/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.cpp b/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.cpp
index 2040ed99..a10e767 100644
--- a/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.cpp
+++ b/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.cpp
@@ -35,13 +35,6 @@
 };
 class GoodDerived;
 
-// Same macro providing only a typedef is also ok.
-class GoodDerivedMacroUsingTypedef : public GarbageCollected<GoodDerived>,
-                                     public Mixin {
-  USING_GARBAGE_COLLECTED_MIXIN_NEW(GoodDerivedMacroUsingTypedef);
-};
-class GoodDerivedMacroUsingTypedef;
-
 // Abstract classes (i.e. ones with pure virtual methods) can't be constructed
 // and so it's assumed their derived classes will have
 // USING_GARBAGE_COLLECTED_MIXIN.
diff --git a/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.txt b/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.txt
index c8b3e690..692f7d6 100644
--- a/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.txt
+++ b/tools/clang/blink_gc_plugin/tests/missing_mixin_marker.txt
@@ -10,10 +10,10 @@
 missing_mixin_marker.cpp:20:27: note: [blink-gc] Mixin base class derived here:
 class Supplement : public GarbageCollectedMixin {
                    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
-missing_mixin_marker.cpp:52:35: warning: [blink-gc] Garbage-collected class 'PureVirtualDerived' derives mixin class 'Mixin'. You must add USING_GARBAGE_COLLECTED_MIXIN(PureVirtualDerived).
+missing_mixin_marker.cpp:46:35: warning: [blink-gc] Garbage-collected class 'PureVirtualDerived' derives mixin class 'Mixin'. You must add USING_GARBAGE_COLLECTED_MIXIN(PureVirtualDerived).
 class PureVirtualDerived : public PureVirtual {
                            ~~~~~~~^~~~~~~~~~~
-missing_mixin_marker.cpp:47:66: note: [blink-gc] Mixin base class derived here:
+missing_mixin_marker.cpp:41:66: note: [blink-gc] Mixin base class derived here:
 class PureVirtual : public GarbageCollected<PureVirtual>, public Mixin {
                                                           ~~~~~~~^~~~~
 missing_mixin_marker.cpp:9:22: note: [blink-gc] Mixin base class derived here:
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index f2c3b136..d62b523 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -42486,7 +42486,7 @@
   </summary>
 </histogram>
 
-<histogram name="IOS.RestoreNavigationItemTime" units="ms">
+<histogram name="IOS.RestoreNavigationTime" units="ms">
   <owner>eugenebut@chromium.org</owner>
   <summary>
     [iOS] Time spent on restoring committed Navigation Manager's items. Recorded
diff --git a/tools/perf/contrib/oopd/OWNERS b/tools/perf/contrib/oopd/OWNERS
deleted file mode 100644
index 1f247b81..0000000
--- a/tools/perf/contrib/oopd/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-kylechar@chromium.org
-sadrul@chromium.org
diff --git a/tools/perf/contrib/oopd/__init__.py b/tools/perf/contrib/oopd/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tools/perf/contrib/oopd/__init__.py
+++ /dev/null
diff --git a/tools/perf/contrib/oopd/oopd.py b/tools/perf/contrib/oopd/oopd.py
deleted file mode 100644
index b50195c2..0000000
--- a/tools/perf/contrib/oopd/oopd.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-from benchmarks import rendering
-from telemetry import benchmark
-
-
-@benchmark.Info(emails=['sadrul@chromium.org', 'kylechar@chromium.org'])
-class RenderingDesktopOOPD(rendering.RenderingDesktop):
-  tag = 'oopd'
-
-  @classmethod
-  def Name(cls):
-    return 'rendering.oopd.desktop'
-
-  def SetExtraBrowserOptions(self, options):
-    options.AppendExtraBrowserArgs('--enable-features=VizDisplayCompositor')
-
-
-@benchmark.Info(emails=['ericrk@chromium.org', 'fsamuel@chromium.org'])
-class RenderingMobileOOPD(rendering.RenderingMobile):
-  tag = 'oopd'
-
-  @classmethod
-  def Name(cls):
-    return 'rendering.oopd.mobile'
-
-  def SetExtraBrowserOptions(self, options):
-    options.AppendExtraBrowserArgs('--enable-features=VizDisplayCompositor')
diff --git a/tools/perf/core/bot_platforms.py b/tools/perf/core/bot_platforms.py
index 9c3165c..709dbe0 100644
--- a/tools/perf/core/bot_platforms.py
+++ b/tools/perf/core/bot_platforms.py
@@ -175,7 +175,6 @@
       'heap_profiling.mobile.disabled',
       'heap_profiling.mobile.native',
       'heap_profiling.mobile.pseudo',
-      'rendering.oopd.mobile',
     })
 
 # TODO(crbug.com/902089): Add linux-perf-fyi once the bot is configured to use
diff --git a/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json b/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json
index 5443da9..63dafa0 100644
--- a/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json
+++ b/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json
@@ -1,47 +1,42 @@
 {
     "0": {
         "benchmarks": {
-            "heap_profiling.mobile.disabled": {},
-            "heap_profiling.mobile.native": {
-                "end": 1
+            "heap_profiling.mobile.disabled": {
+                "end": 2
             }
         }
     },
     "1": {
         "benchmarks": {
-            "heap_profiling.mobile.native": {
-                "begin": 1
-            },
-            "heap_profiling.mobile.pseudo": {},
-            "rendering.oopd.mobile": {
-                "end": 60
+            "heap_profiling.mobile.disabled": {
+                "begin": 2
             }
         }
     },
     "2": {
         "benchmarks": {
-            "rendering.oopd.mobile": {
-                "begin": 60,
-                "end": 244
+            "heap_profiling.mobile.native": {
+                "end": 2
             }
         }
     },
     "3": {
         "benchmarks": {
-            "rendering.oopd.mobile": {
-                "begin": 244
-            }
+            "heap_profiling.mobile.native": {
+                "begin": 2
+            },
+            "heap_profiling.mobile.pseudo": {}
         }
     },
     "extra_infos": {
-        "num_stories": 436,
-        "predicted_min_shard_time": 336.0,
+        "num_stories": 9,
+        "predicted_min_shard_time": 136.0,
         "predicted_min_shard_index": 1,
-        "predicted_max_shard_time": 396.0,
+        "predicted_max_shard_time": 166.0,
         "predicted_max_shard_index": 0,
-        "shard #0": 396.0,
-        "shard #1": 336.0,
-        "shard #2": 368,
-        "shard #3": 366
+        "shard #0": 166.0,
+        "shard #1": 136.0,
+        "shard #2": 160.0,
+        "shard #3": 150.0
     }
 }
\ No newline at end of file
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc
index e3b684c7..9ebf6412 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc
@@ -20,6 +20,7 @@
 #include "ui/accessibility/ax_action_data.h"
 #include "ui/accessibility/ax_mode_observer.h"
 #include "ui/accessibility/ax_node_data.h"
+#include "ui/accessibility/ax_role_properties.h"
 #include "ui/accessibility/ax_text_utils.h"
 #include "ui/accessibility/ax_tree_data.h"
 #include "ui/accessibility/platform/atk_util_auralinux.h"
@@ -963,6 +964,9 @@
     reinterpret_cast<GInterfaceInitFunc>(AXTextInterfaceBaseInit), nullptr,
     nullptr};
 
+//
+// AtkWindow interface.
+//
 static void AXWindowInterfaceBaseInit(AtkWindowIface* iface) {}
 
 static const GInterfaceInfo WindowInfo = {
@@ -970,6 +974,197 @@
     nullptr};
 
 //
+// AtkSelection interface.
+//
+static gboolean AXPlatformNodeAuraLinuxAddSelection(AtkSelection* selection,
+                                                    gint index) {
+  AXPlatformNodeAuraLinux* obj =
+      AtkObjectToAXPlatformNodeAuraLinux(ATK_OBJECT(selection));
+  if (!obj)
+    return FALSE;
+  if (index < 0 || index >= obj->GetChildCount())
+    return FALSE;
+
+  AXPlatformNodeAuraLinux* child =
+      AtkObjectToAXPlatformNodeAuraLinux(obj->ChildAtIndex(index));
+  DCHECK(child);
+
+  if (!child->SupportsSelectionWithAtkSelection())
+    return FALSE;
+
+  bool selected = child->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected);
+  if (selected)
+    return TRUE;
+
+  AXActionData data;
+  data.action = ax::mojom::Action::kDoDefault;
+  return child->GetDelegate()->AccessibilityPerformAction(data);
+}
+
+static gboolean AXPlatformNodeAuraLinuxClearSelection(AtkSelection* selection) {
+  AXPlatformNodeAuraLinux* obj =
+      AtkObjectToAXPlatformNodeAuraLinux(ATK_OBJECT(selection));
+  if (!obj)
+    return FALSE;
+
+  int child_count = obj->GetChildCount();
+  bool success = true;
+  for (int i = 0; i < child_count; ++i) {
+    AXPlatformNodeAuraLinux* child =
+        AtkObjectToAXPlatformNodeAuraLinux(obj->ChildAtIndex(i));
+    DCHECK(child);
+
+    if (!child->SupportsSelectionWithAtkSelection())
+      continue;
+
+    bool selected =
+        child->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected);
+    if (!selected)
+      continue;
+
+    AXActionData data;
+    data.action = ax::mojom::Action::kDoDefault;
+    success = success && child->GetDelegate()->AccessibilityPerformAction(data);
+  }
+
+  return success;
+}
+
+static AtkObject* AXPlatformNodeAuraLinuxRefSelection(
+    AtkSelection* selection,
+    gint requested_child_index) {
+  AXPlatformNodeAuraLinux* obj =
+      AtkObjectToAXPlatformNodeAuraLinux(ATK_OBJECT(selection));
+  if (!obj)
+    return nullptr;
+
+  int child_count = obj->GetChildCount();
+  gint selected_count = 0;
+  for (int i = 0; i < child_count; ++i) {
+    AtkObject* child = obj->ChildAtIndex(i);
+    AXPlatformNodeAuraLinux* child_ax_node =
+        AtkObjectToAXPlatformNodeAuraLinux(child);
+    DCHECK(child_ax_node);
+
+    if (child_ax_node->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected)) {
+      if (selected_count == requested_child_index)
+        return static_cast<AtkObject*>(g_object_ref(child));
+      ++selected_count;
+    }
+  }
+
+  return nullptr;
+}
+
+static gint AXPlatformNodeAuraLinuxGetSelectionCount(AtkSelection* selection) {
+  AXPlatformNodeAuraLinux* obj =
+      AtkObjectToAXPlatformNodeAuraLinux(ATK_OBJECT(selection));
+  if (!obj)
+    return 0;
+
+  int child_count = obj->GetChildCount();
+  gint selected_count = 0;
+  for (int i = 0; i < child_count; ++i) {
+    AXPlatformNodeAuraLinux* child =
+        AtkObjectToAXPlatformNodeAuraLinux(obj->ChildAtIndex(i));
+    DCHECK(child);
+
+    if (child->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected))
+      ++selected_count;
+  }
+
+  return selected_count;
+}
+
+static gboolean AXPlatformNodeAuraLinuxIsChildSelected(AtkSelection* selection,
+                                                       gint index) {
+  AXPlatformNodeAuraLinux* obj =
+      AtkObjectToAXPlatformNodeAuraLinux(ATK_OBJECT(selection));
+  if (!obj)
+    return FALSE;
+  if (index < 0 || index >= obj->GetChildCount())
+    return FALSE;
+
+  AXPlatformNodeAuraLinux* child =
+      AtkObjectToAXPlatformNodeAuraLinux(obj->ChildAtIndex(index));
+  DCHECK(child);
+  return child->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected);
+}
+
+static gboolean AXPlatformNodeAuraLinuxRemoveSelection(
+    AtkSelection* selection,
+    gint index_into_selected_children) {
+  AXPlatformNodeAuraLinux* obj =
+      AtkObjectToAXPlatformNodeAuraLinux(ATK_OBJECT(selection));
+
+  int child_count = obj->GetChildCount();
+  for (int i = 0; i < child_count; ++i) {
+    AXPlatformNodeAuraLinux* child =
+        AtkObjectToAXPlatformNodeAuraLinux(obj->ChildAtIndex(i));
+    DCHECK(child);
+
+    bool selected =
+        child->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected);
+    if (selected && index_into_selected_children == 0) {
+      if (!child->SupportsSelectionWithAtkSelection())
+        return FALSE;
+
+      AXActionData data;
+      data.action = ax::mojom::Action::kDoDefault;
+      return child->GetDelegate()->AccessibilityPerformAction(data);
+    } else if (selected) {
+      index_into_selected_children--;
+    }
+  }
+
+  return FALSE;
+}
+
+static gboolean AXPlatformNodeAuraLinuxSelectAllSelection(
+    AtkSelection* selection) {
+  AXPlatformNodeAuraLinux* obj =
+      AtkObjectToAXPlatformNodeAuraLinux(ATK_OBJECT(selection));
+  if (!obj)
+    return FALSE;
+
+  int child_count = obj->GetChildCount();
+  bool success = true;
+  for (int i = 0; i < child_count; ++i) {
+    AXPlatformNodeAuraLinux* child =
+        AtkObjectToAXPlatformNodeAuraLinux(obj->ChildAtIndex(i));
+    DCHECK(child);
+
+    if (!child->SupportsSelectionWithAtkSelection())
+      continue;
+
+    bool selected =
+        child->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected);
+    if (selected)
+      continue;
+
+    AXActionData data;
+    data.action = ax::mojom::Action::kDoDefault;
+    success = success && child->GetDelegate()->AccessibilityPerformAction(data);
+  }
+
+  return success;
+}
+
+static void AXSelectionInterfaceBaseInit(AtkSelectionIface* iface) {
+  iface->add_selection = AXPlatformNodeAuraLinuxAddSelection;
+  iface->clear_selection = AXPlatformNodeAuraLinuxClearSelection;
+  iface->ref_selection = AXPlatformNodeAuraLinuxRefSelection;
+  iface->get_selection_count = AXPlatformNodeAuraLinuxGetSelectionCount;
+  iface->is_child_selected = AXPlatformNodeAuraLinuxIsChildSelected;
+  iface->remove_selection = AXPlatformNodeAuraLinuxRemoveSelection;
+  iface->select_all_selection = AXPlatformNodeAuraLinuxSelectAllSelection;
+}
+
+static const GInterfaceInfo SelectionInfo = {
+    reinterpret_cast<GInterfaceInitFunc>(AXSelectionInterfaceBaseInit), nullptr,
+    nullptr};
+
+//
 // The rest of the AXPlatformNodeAtk code, not specific to one
 // of the Atk* interfaces.
 //
@@ -1167,6 +1362,9 @@
   if (role == ATK_ROLE_FRAME)
     interface_mask |= 1 << ATK_WINDOW_INTERFACE;
 
+  if (IsContainerWithSelectableChildren(GetData().role))
+    interface_mask |= 1 << ATK_SELECTION_INTERFACE;
+
   return interface_mask;
 }
 
@@ -1210,6 +1408,8 @@
     g_type_add_interface_static(type, ATK_TYPE_TEXT, &TextInfo);
   if (interface_mask_ & (1 << ATK_WINDOW_INTERFACE))
     g_type_add_interface_static(type, ATK_TYPE_WINDOW, &WindowInfo);
+  if (interface_mask_ & (1 << ATK_SELECTION_INTERFACE))
+    g_type_add_interface_static(type, ATK_TYPE_SELECTION, &SelectionInfo);
 
   return type;
 }
@@ -2033,6 +2233,11 @@
   return false;
 }
 
+bool AXPlatformNodeAuraLinux::SupportsSelectionWithAtkSelection() {
+  return SupportsToggle(GetData().role) ||
+         GetData().role == ax::mojom::Role::kListBoxOption;
+}
+
 void AXPlatformNodeAuraLinux::OnValueChanged() {
   DCHECK(atk_object_);
 
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.h b/ui/accessibility/platform/ax_platform_node_auralinux.h
index 14737d1..e0f9f95d 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.h
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.h
@@ -89,6 +89,7 @@
   void OnSelected();
   void OnValueChanged();
 
+  bool SupportsSelectionWithAtkSelection();
   bool SelectionAndFocusAreTheSame();
 
   // AXPlatformNode overrides.
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc b/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc
index 86dad1d5..f9523dd 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc
+++ b/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc
@@ -1128,4 +1128,112 @@
   g_object_unref(root_atk_object);
 }
 
+TEST_F(AXPlatformNodeAuraLinuxTest, TestAtkSelectionInterface) {
+  AXNodeData root;
+  root.id = 1;
+  root.role = ax::mojom::Role::kListBox;
+  root.child_ids.push_back(2);
+  root.child_ids.push_back(3);
+  root.child_ids.push_back(4);
+  root.child_ids.push_back(5);
+
+  AXNodeData item_1;
+  item_1.id = 2;
+  item_1.role = ax::mojom::Role::kListBoxOption;
+
+  AXNodeData item_2;
+  item_2.id = 3;
+  item_2.role = ax::mojom::Role::kListBoxOption;
+
+  AXNodeData item_3;
+  item_3.id = 4;
+  item_3.role = ax::mojom::Role::kListBoxOption;
+
+  // Add a final item which is not selectable.
+  AXNodeData item_4;
+  item_4.id = 5;
+  item_4.role = ax::mojom::Role::kListItem;
+
+  AXTreeUpdate update;
+  update.root_id = 1;
+  update.nodes.push_back(root);
+  update.nodes.push_back(item_1);
+  update.nodes.push_back(item_2);
+  update.nodes.push_back(item_3);
+  update.nodes.push_back(item_4);
+  Init(update);
+
+  AtkObject* root_atk_object(GetRootAtkObject());
+  EXPECT_TRUE(ATK_IS_OBJECT(root_atk_object));
+  g_object_ref(root_atk_object);
+
+  ASSERT_TRUE(ATK_IS_SELECTION(root_atk_object));
+
+  ASSERT_TRUE(ATK_IS_SELECTION(root_atk_object));
+  AtkSelection* selection = ATK_SELECTION(root_atk_object);
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 0);
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 0));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 1));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 2));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 3));
+
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, -1));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, -100));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 4));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 3000));
+
+  ASSERT_TRUE(atk_selection_select_all_selection(selection));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 3);
+  ASSERT_TRUE(atk_selection_is_child_selected(selection, 0));
+  ASSERT_TRUE(atk_selection_is_child_selected(selection, 1));
+  ASSERT_TRUE(atk_selection_is_child_selected(selection, 2));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 3));
+
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, -1));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, -100));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 4));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 3000));
+
+  ASSERT_TRUE(atk_selection_clear_selection(selection));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 0);
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 0));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 1));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 2));
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 3));
+
+  ASSERT_TRUE(atk_selection_add_selection(selection, 1));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 1);
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 0));
+  ASSERT_TRUE(atk_selection_is_child_selected(selection, 1));
+
+  // The index to this function is the index into the selected elements, not
+  // into the children.
+  ASSERT_TRUE(atk_selection_remove_selection(selection, 0));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 0);
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 1));
+
+  // We should not be able to select an item with a role that is not
+  // selectable.
+  ASSERT_FALSE(atk_selection_add_selection(selection, 3));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 0);
+  ASSERT_FALSE(atk_selection_is_child_selected(selection, 3));
+
+  // Test some out of bounds use of atk_selection_add_selection.
+  ASSERT_FALSE(atk_selection_add_selection(selection, -1));
+  ASSERT_FALSE(atk_selection_add_selection(selection, -100));
+  ASSERT_FALSE(atk_selection_add_selection(selection, 4));
+  ASSERT_FALSE(atk_selection_add_selection(selection, 100));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 0);
+
+  ASSERT_TRUE(atk_selection_select_all_selection(selection));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 3);
+  ASSERT_FALSE(atk_selection_remove_selection(selection, -1));
+  ASSERT_FALSE(atk_selection_remove_selection(selection, -100));
+  ASSERT_FALSE(atk_selection_remove_selection(selection, 4));
+  ASSERT_FALSE(atk_selection_remove_selection(selection, 100));
+  ASSERT_EQ(atk_selection_get_selection_count(selection), 3);
+
+  g_object_unref(root_atk_object);
+}
+
 }  // namespace ui
diff --git a/ui/accessibility/platform/test_ax_node_wrapper.cc b/ui/accessibility/platform/test_ax_node_wrapper.cc
index c8481e7..1df93f5 100644
--- a/ui/accessibility/platform/test_ax_node_wrapper.cc
+++ b/ui/accessibility/platform/test_ax_node_wrapper.cc
@@ -194,6 +194,19 @@
   node->SetData(new_data);
 }
 
+void TestAXNodeWrapper::ReplaceBoolAttribute(ax::mojom::BoolAttribute attribute,
+                                             bool value) {
+  AXNodeData new_data = GetData();
+  std::vector<std::pair<ax::mojom::BoolAttribute, bool>>& attributes =
+      new_data.bool_attributes;
+
+  base::EraseIf(attributes,
+                [attribute](auto& pair) { return pair.first == attribute; });
+
+  new_data.AddBoolAttribute(attribute, value);
+  node_->SetData(new_data);
+}
+
 int TestAXNodeWrapper::GetTableRowCount() const {
   return node_->GetTableRowCount();
 }
@@ -261,6 +274,13 @@
     return true;
   }
 
+  if (GetData().role == ax::mojom::Role::kListBoxOption &&
+      data.action == ax::mojom::Action::kDoDefault) {
+    bool current_value =
+        GetData().GetBoolAttribute(ax::mojom::BoolAttribute::kSelected);
+    ReplaceBoolAttribute(ax::mojom::BoolAttribute::kSelected, !current_value);
+  }
+
   if (data.action == ax::mojom::Action::kSetSelection) {
     ReplaceIntAttribute(data.anchor_node_id,
                         ax::mojom::IntAttribute::kTextSelStart,
diff --git a/ui/accessibility/platform/test_ax_node_wrapper.h b/ui/accessibility/platform/test_ax_node_wrapper.h
index 7ac7d2f..0f96cded 100644
--- a/ui/accessibility/platform/test_ax_node_wrapper.h
+++ b/ui/accessibility/platform/test_ax_node_wrapper.h
@@ -65,6 +65,7 @@
   void ReplaceIntAttribute(int32_t node_id,
                            ax::mojom::IntAttribute attribute,
                            int32_t value);
+  void ReplaceBoolAttribute(ax::mojom::BoolAttribute attribute, bool value);
 
   TestAXNodeWrapper* HitTestSyncInternal(int x, int y);
 
diff --git a/ui/native_theme/native_theme_mac.h b/ui/native_theme/native_theme_mac.h
index 58bd97b..0076b510 100644
--- a/ui/native_theme/native_theme_mac.h
+++ b/ui/native_theme/native_theme_mac.h
@@ -5,11 +5,14 @@
 #ifndef UI_NATIVE_THEME_NATIVE_THEME_MAC_H_
 #define UI_NATIVE_THEME_NATIVE_THEME_MAC_H_
 
+#include "base/mac/scoped_nsobject.h"
 #include "base/macros.h"
 #include "base/no_destructor.h"
 #include "ui/native_theme/native_theme_base.h"
 #include "ui/native_theme/native_theme_export.h"
 
+@class NativeThemeEffectiveAppearanceObserver;
+
 namespace ui {
 
 // Mac implementation of native theme support.
@@ -33,6 +36,13 @@
   // an appropriate gray.
   static SkColor ApplySystemControlTint(SkColor color);
 
+  // If the system is not running Mojave, or not forcing dark/light mode, do
+  // nothing. Otherwise, set the correct appearance on NSApp, adjusting for High
+  // Contrast if necessary.
+  // TODO(lgrey): Remove this when we're no longer suppressing dark mode by
+  // default.
+  static void MaybeUpdateBrowserAppearance();
+
   // Overridden from NativeTheme:
   SkColor GetSystemColor(ColorId color_id) const override;
 
@@ -74,6 +84,10 @@
   void PaintSelectedMenuItem(cc::PaintCanvas* canvas,
                              const gfx::Rect& rect) const;
 
+  base::scoped_nsobject<NativeThemeEffectiveAppearanceObserver>
+      appearance_observer_;
+  id high_contrast_notification_token_;
+
   DISALLOW_COPY_AND_ASSIGN(NativeThemeMac);
 };
 
diff --git a/ui/native_theme/native_theme_mac.mm b/ui/native_theme/native_theme_mac.mm
index 4f48f0c4..9f98cd9 100644
--- a/ui/native_theme/native_theme_mac.mm
+++ b/ui/native_theme/native_theme_mac.mm
@@ -7,10 +7,13 @@
 #import <Cocoa/Cocoa.h>
 #include <stddef.h>
 
+#include "base/command_line.h"
 #include "base/mac/mac_util.h"
 #include "base/mac/sdk_forward_declarations.h"
 #include "base/macros.h"
 #import "skia/ext/skia_utils_mac.h"
+#include "ui/base/ui_base_features.h"
+#include "ui/base/ui_base_switches.h"
 #include "ui/gfx/color_palette.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/skia_util.h"
@@ -22,6 +25,41 @@
 
 @end
 
+// Helper object to respond to light mode/dark mode changeovers.
+@interface NativeThemeEffectiveAppearanceObserver : NSObject
+@end
+
+@implementation NativeThemeEffectiveAppearanceObserver
+
+- (instancetype)init {
+  self = [super init];
+  if (self) {
+    if (@available(macOS 10.14, *)) {
+      [NSApp addObserver:self
+              forKeyPath:@"effectiveAppearance"
+                 options:0
+                 context:nullptr];
+    }
+  }
+  return self;
+}
+
+- (void)dealloc {
+  if (@available(macOS 10.14, *)) {
+    [NSApp removeObserver:self forKeyPath:@"effectiveAppearance"];
+  }
+  [super dealloc];
+}
+
+- (void)observeValueForKeyPath:(NSString*)forKeyPath
+                      ofObject:(id)object
+                        change:(NSDictionary*)change
+                       context:(void*)context {
+  ui::NativeTheme::GetInstanceForNativeUi()->NotifyObservers();
+}
+
+@end
+
 namespace {
 
 const SkColor kMenuPopupBackgroundColor = SK_ColorWHITE;
@@ -113,7 +151,39 @@
   return color;
 }
 
+// static
+void NativeThemeMac::MaybeUpdateBrowserAppearance() {
+  if (@available(macOS 10.14, *)) {
+    if (!base::FeatureList::IsEnabled(features::kDarkMode)) {
+      ui::NativeTheme* theme = ui::NativeTheme::GetInstanceForNativeUi();
+      NSAppearanceName new_appearance_name;
+      if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+              switches::kForceDarkMode)) {
+        new_appearance_name =
+            theme->UsesHighContrastColors()
+                ? NSAppearanceNameAccessibilityHighContrastDarkAqua
+                : NSAppearanceNameDarkAqua;
+      } else {
+        new_appearance_name =
+            theme->UsesHighContrastColors()
+                ? NSAppearanceNameAccessibilityHighContrastAqua
+                : NSAppearanceNameAqua;
+      }
+      [NSApp setAppearance:[NSAppearance appearanceNamed:new_appearance_name]];
+    }
+  }
+}
+
 SkColor NativeThemeMac::GetSystemColor(ColorId color_id) const {
+  // Empirically, currentAppearance is incorrect when switching
+  // appearances. It's unclear exactly why right now, so work
+  // around it for the time being by resynchronizing.
+  if (@available(macOS 10.14, *)) {
+    NSAppearance* effective_appearance = [NSApp effectiveAppearance];
+    if (![effective_appearance isEqual:[NSAppearance currentAppearance]]) {
+      [NSAppearance setCurrentAppearance:effective_appearance];
+    }
+  }
   // Even with --secondary-ui-md, menus use the platform colors and styling, and
   // Mac has a couple of specific color overrides, documented below.
   switch (color_id) {
@@ -214,9 +284,26 @@
 }
 
 NativeThemeMac::NativeThemeMac() {
+  if (base::FeatureList::IsEnabled(features::kDarkMode)) {
+    appearance_observer_.reset(
+        [[NativeThemeEffectiveAppearanceObserver alloc] init]);
+  }
+  if (@available(macOS 10.10, *)) {
+    high_contrast_notification_token_ = [[NSNotificationCenter defaultCenter]
+        addObserverForName:
+            NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification
+                    object:nil
+                     queue:nil
+                usingBlock:^(NSNotification* notification) {
+                  ui::NativeThemeMac::MaybeUpdateBrowserAppearance();
+                  ui::NativeTheme::GetInstanceForNativeUi()->NotifyObservers();
+                }];
+  }
 }
 
 NativeThemeMac::~NativeThemeMac() {
+  [[NSNotificationCenter defaultCenter]
+      removeObserver:high_contrast_notification_token_];
 }
 
 void NativeThemeMac::PaintSelectedMenuItem(cc::PaintCanvas* canvas,
diff --git a/ui/views/controls/table/table_view.cc b/ui/views/controls/table/table_view.cc
index f126078..9192fa1 100644
--- a/ui/views/controls/table/table_view.cc
+++ b/ui/views/controls/table/table_view.cc
@@ -29,6 +29,7 @@
 #include "ui/native_theme/native_theme.h"
 #include "ui/views/accessibility/ax_virtual_view.h"
 #include "ui/views/accessibility/view_accessibility.h"
+#include "ui/views/controls/focus_ring.h"
 #include "ui/views/controls/scroll_view.h"
 #include "ui/views/controls/table/table_grouper.h"
 #include "ui/views/controls/table/table_header.h"
@@ -37,6 +38,7 @@
 #include "ui/views/layout/layout_provider.h"
 #include "ui/views/style/platform_style.h"
 #include "ui/views/style/typography.h"
+#include "ui/views/view_properties.h"
 
 namespace views {
 
@@ -143,7 +145,7 @@
     : model_(NULL),
       columns_(columns),
       active_visible_column_index_(-1),
-      header_(NULL),
+      header_(nullptr),
       table_type_(table_type),
       single_selection_(single_selection),
       select_on_remove_(true),
@@ -298,6 +300,37 @@
   return false;
 }
 
+bool TableView::HasFocusIndicator() const {
+  int active_row = selection_model_.active();
+  return active_row != ui::ListSelectionModel::kUnselectedIndex &&
+         active_visible_column_index_ !=
+             ui::ListSelectionModel::kUnselectedIndex;
+}
+
+void TableView::ResetFocusIndicator() {
+  if (!PlatformStyle::kTableViewSupportsKeyboardNavigationByCell)
+    return;
+
+  if (HasFocusIndicator()) {
+    // Draw a focus indicator around the active column.
+    focus_ring_ = FocusRing::Install(this);
+    const gfx::Rect cell_bounds(GetCellBounds(
+        ModelToView(selection_model_.active()), active_visible_column_index_));
+    auto path = std::make_unique<SkPath>();
+    path->addRect(gfx::RectToSkRect(cell_bounds));
+    SetProperty(views::kHighlightPathKey, path.release());
+    focus_ring_->SchedulePaint();
+  } else {
+    ClearProperty(views::kHighlightPathKey);
+    focus_ring_.reset();
+  }
+
+  // Notify assistive technology that the active cell has changed. Without this,
+  // some screen readers will not announce the active cell.
+  if (HasFocus())
+    NotifyAccessibilityEvent(ax::mojom::Event::kFocus, true);
+}
+
 const TableView::VisibleColumn& TableView::GetVisibleColumn(int index) {
   DCHECK(index >= 0 && index < static_cast<int>(visible_columns_.size()));
   return visible_columns_[index];
@@ -358,6 +391,9 @@
     height = std::max(parent()->height(), height);
   }
   SetBounds(x(), y(), width, height);
+
+  if (focus_ring_)
+    focus_ring_->Layout();
 }
 
 const char* TableView::GetClassName() const {
@@ -788,7 +824,7 @@
     scroll_view->SetHasFocusIndicator(true);
 
   SchedulePaintForSelection();
-  NotifyAccessibilityEvent(ax::mojom::Event::kFocus, true);
+  ResetFocusIndicator();
 }
 
 void TableView::OnBlur() {
@@ -796,6 +832,7 @@
   if (scroll_view)
     scroll_view->SetHasFocusIndicator(false);
   SchedulePaintForSelection();
+  ResetFocusIndicator();
 }
 
 int TableView::GetCellMargin() const {
@@ -1016,10 +1053,7 @@
                                       active_visible_column_index_));
   }
 
-  // Notify assistive technology that the active cell has changed. Without this,
-  // some screen readers will not announce the active cell.
-  if (HasFocus())
-    NotifyAccessibilityEvent(ax::mojom::Event::kFocus, true);
+  ResetFocusIndicator();
 }
 
 void TableView::SelectByViewIndex(int view_index) {
@@ -1058,6 +1092,7 @@
     SetActiveVisibleColumnIndex(-1);
   }
 
+  ResetFocusIndicator();
   NotifyAccessibilityEvent(ax::mojom::Event::kSelection, true);
   if (observer_)
     observer_->OnSelectionChanged();
diff --git a/ui/views/controls/table/table_view.h b/ui/views/controls/table/table_view.h
index 0863ce5a..0992544 100644
--- a/ui/views/controls/table/table_view.h
+++ b/ui/views/controls/table/table_view.h
@@ -5,6 +5,7 @@
 #ifndef UI_VIEWS_CONTROLS_TABLE_TABLE_VIEW_VIEWS_H_
 #define UI_VIEWS_CONTROLS_TABLE_TABLE_VIEW_VIEWS_H_
 
+#include <memory>
 #include <vector>
 
 #include "base/macros.h"
@@ -12,6 +13,7 @@
 #include "ui/base/models/table_model.h"
 #include "ui/base/models/table_model_observer.h"
 #include "ui/gfx/font_list.h"
+#include "ui/views/controls/focus_ring.h"
 #include "ui/views/view.h"
 #include "ui/views/views_export.h"
 
@@ -32,6 +34,7 @@
 // sort by way of overriding TableModel::CompareValues().
 namespace views {
 
+class FocusRing;
 struct GroupRange;
 class TableGrouper;
 class TableHeader;
@@ -140,6 +143,13 @@
   // or not).
   bool HasColumn(int id) const;
 
+  // Returns whether an active row and column have been set.
+  bool HasFocusIndicator() const;
+
+  // Moves the focus ring to its new location if the active cell has changed, or
+  // hides the focus ring if the table is not focused.
+  void ResetFocusIndicator();
+
   void set_observer(TableViewObserver* observer) { observer_ = observer; }
   TableViewObserver* observer() const { return observer_; }
 
@@ -329,6 +339,9 @@
   // as sorting and resizing. -1 if no visible column is active.
   int active_visible_column_index_;
 
+  // Used to draw a focus indicator around the active cell.
+  std::unique_ptr<FocusRing> focus_ring_;
+
   // The header. This is only created if more than one column is specified or
   // the first column has a non-empty title.
   TableHeader* header_;