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 & 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_;