refactor: migrate to View::AddChildView(std::unique_ptr<ui::View*>) (#46541)

* refactor: use AddChildView(std::unique_ptr<View>) in OpaqueFrameView::CreateButton()

Xref: https://issues.chromium.org/issues/40485510

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* refactor: use AddChildView(std::unique_ptr<View>) in MenuBar::RebuildChildren()

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* refactor: use AddChildView(std::unique_ptr<View>) for ClientFrameViewLinux labels

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* refactor: use AddChildView(std::unique_ptr<View>) for ClientFrameViewLinux buttons

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* refactor: use AddChildView(std::unique_ptr<View>) in AutofillPopupView

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* refactor: use AddChildViewRaw() to flag the edge cases that we still need to fix

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* chore: use west coast const for consistency

Co-authored-by: Charles Kerr <charles@charleskerr.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
trop[bot] 2025-04-07 13:29:37 -05:00 committed by GitHub
parent 2dd4b77ae0
commit 1046842f73
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 30 additions and 32 deletions

View file

@ -323,7 +323,7 @@ void NativeWindowMac::SetContentView(views::View* view) {
root_view->RemoveChildView(content_view());
set_content_view(view);
root_view->AddChildView(content_view());
root_view->AddChildViewRaw(content_view());
root_view->DeprecatedLayoutImmediately();
}

View file

@ -480,7 +480,7 @@ void NativeWindowViews::SetContentView(views::View* view) {
}
set_content_view(view);
focused_view_ = view;
root_view_.GetMainView()->AddChildView(content_view());
root_view_.GetMainView()->AddChildViewRaw(content_view());
root_view_.GetMainView()->DeprecatedLayoutImmediately();
}

View file

@ -90,8 +90,8 @@ InspectableWebContentsView::InspectableWebContentsView(
}
devtools_web_view_->SetVisible(false);
AddChildView(devtools_web_view_.get());
AddChildView(GetContentsView());
AddChildViewRaw(devtools_web_view_.get());
AddChildViewRaw(GetContentsView());
}
InspectableWebContentsView::~InspectableWebContentsView() {

View file

@ -215,9 +215,10 @@ void AutofillPopupView::CreateChildViews() {
RemoveAllChildViews();
for (int i = 0; i < popup_->line_count(); ++i) {
auto* child_view = new AutofillPopupChildView(popup_->value_at(i));
auto child_view =
std::make_unique<AutofillPopupChildView>(popup_->value_at(i));
child_view->set_drag_controller(this);
AddChildView(child_view);
AddChildView(std::move(child_view));
}
}

View file

@ -51,7 +51,6 @@ class AutofillPopupChildView : public views::View {
AutofillPopupChildView(const AutofillPopupChildView&) = delete;
AutofillPopupChildView& operator=(const AutofillPopupChildView&) = delete;
private:
~AutofillPopupChildView() override = default;
std::u16string suggestion_;

View file

@ -84,20 +84,20 @@ ClientFrameViewLinux::ClientFrameViewLinux()
views::FrameButton::kMaximize,
views::FrameButton::kClose} {
for (auto& button : nav_buttons_) {
button.button = new views::ImageButton();
button.button->SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE);
button.button->SetAccessibleName(
auto image_button = std::make_unique<views::ImageButton>();
image_button->SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE);
image_button->SetAccessibleName(
l10n_util::GetStringUTF16(button.accessibility_id));
AddChildView(button.button);
button.button = AddChildView(std::move(image_button));
}
title_ = new views::Label();
title_->SetSubpixelRenderingEnabled(false);
title_->SetAutoColorReadabilityEnabled(false);
title_->SetHorizontalAlignment(gfx::ALIGN_CENTER);
title_->SetVerticalAlignment(gfx::ALIGN_MIDDLE);
title_->SetTextStyle(views::style::STYLE_TAB_ACTIVE);
AddChildView(title_);
auto title = std::make_unique<views::Label>();
title->SetSubpixelRenderingEnabled(false);
title->SetAutoColorReadabilityEnabled(false);
title->SetHorizontalAlignment(gfx::ALIGN_CENTER);
title->SetVerticalAlignment(gfx::ALIGN_MIDDLE);
title->SetTextStyle(views::style::STYLE_TAB_ACTIVE);
title_ = AddChildView(std::move(title));
native_theme_observer_.Observe(theme_);
@ -293,8 +293,7 @@ void ClientFrameViewLinux::Layout(PassKey) {
title_bounds.Inset(theme_values_.title_padding);
title_->SetVisible(true);
title_->SetBounds(title_bounds.x(), title_bounds.y(), title_bounds.width(),
title_bounds.height());
title_->SetBoundsRect(title_bounds);
}
void ClientFrameViewLinux::OnPaint(gfx::Canvas* canvas) {

View file

@ -95,7 +95,7 @@ class ClientFrameViewLinux : public FramelessView,
void (views::Widget::*callback)();
int accessibility_id;
int hit_test_id;
RAW_PTR_EXCLUSION views::ImageButton* button{nullptr};
raw_ptr<views::ImageButton> button = {};
};
struct ThemeValues {
@ -132,7 +132,7 @@ class ClientFrameViewLinux : public FramelessView,
raw_ptr<ui::NativeTheme> theme_;
ThemeValues theme_values_;
RAW_PTR_EXCLUSION views::Label* title_;
raw_ptr<views::Label> title_;
std::unique_ptr<ui::NavButtonProvider> nav_button_provider_;
std::array<NavButton, kNavButtonCount> nav_buttons_;

View file

@ -229,11 +229,11 @@ void MenuBar::RefreshColorCache(const ui::NativeTheme* theme) {
void MenuBar::RebuildChildren() {
RemoveAllChildViews();
for (size_t i = 0, n = GetItemCount(); i < n; ++i) {
auto* button = new SubmenuButton(
auto button = std::make_unique<SubmenuButton>(
base::BindRepeating(&MenuBar::ButtonPressed, base::Unretained(this), i),
menu_model_->GetLabelAt(i), background_color_);
button->SetID(i);
AddChildView(button);
AddChildView(std::move(button));
}
UpdateViewColors();
}

View file

@ -297,7 +297,7 @@ views::Button* OpaqueFrameView::CreateButton(
int ht_component,
const gfx::VectorIcon& icon_image,
views::Button::PressedCallback callback) {
views::FrameCaptionButton* button = new views::FrameCaptionButton(
auto button = std::make_unique<views::FrameCaptionButton>(
views::Button::PressedCallback(), icon_type, ht_component);
button->SetImage(button->GetIcon(), views::FrameCaptionButton::Animate::kNo,
icon_image);
@ -306,12 +306,11 @@ views::Button* OpaqueFrameView::CreateButton(
button->SetCallback(std::move(callback));
button->SetAccessibleName(l10n_util::GetStringUTF16(accessibility_string_id));
button->SetID(view_id);
AddChildView(button);
button->SetPaintToLayer();
button->layer()->SetFillsBoundsOpaquely(false);
return button;
return AddChildView(std::move(button));
}
gfx::Insets OpaqueFrameView::FrameBorderInsets(bool restored) const {

View file

@ -67,11 +67,11 @@ class WinCaptionButtonContainer : public views::View,
void OnWidgetBoundsChanged(views::Widget* widget,
const gfx::Rect& new_bounds) override;
raw_ptr<WinFrameView> const frame_view_;
raw_ptr<WinCaptionButton> const minimize_button_;
raw_ptr<WinCaptionButton> const maximize_button_;
raw_ptr<WinCaptionButton> const restore_button_;
raw_ptr<WinCaptionButton> const close_button_;
const raw_ptr<WinFrameView> frame_view_;
const raw_ptr<WinCaptionButton> minimize_button_;
const raw_ptr<WinCaptionButton> maximize_button_;
const raw_ptr<WinCaptionButton> restore_button_;
const raw_ptr<WinCaptionButton> close_button_;
base::ScopedObservation<views::Widget, views::WidgetObserver>
widget_observation_{this};