Avoid dangling pointer in Textfield unit test.
Bug: 1469136
Change-Id: I6ddffbccd261fe6fa5cfcc128b684a585b9a51b3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5010952
Auto-Submit: Jan Keitel <jkeitel@google.com>
Commit-Queue: Elly FJ <ellyjones@chromium.org>
Reviewed-by: Elly FJ <ellyjones@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1223754}
diff --git a/ui/views/controls/textfield/textfield_unittest.cc b/ui/views/controls/textfield/textfield_unittest.cc
index e55a6ff..6759687 100644
--- a/ui/views/controls/textfield/textfield_unittest.cc
+++ b/ui/views/controls/textfield/textfield_unittest.cc
@@ -131,7 +131,7 @@
METADATA_HEADER(TextfieldFocuser, View)
public:
- explicit TextfieldFocuser(Textfield* textfield) : textfield_(textfield) {
+ explicit TextfieldFocuser(Textfield* textfield) : textfield_(*textfield) {
SetFocusBehavior(FocusBehavior::ALWAYS);
}
@@ -148,7 +148,7 @@
private:
bool consume_ = true;
- raw_ptr<Textfield, DanglingUntriaged> textfield_;
+ const raw_ref<Textfield> textfield_;
};
BEGIN_METADATA(TextfieldFocuser)
@@ -4761,8 +4761,8 @@
// command only results when the event is not consumed.
TEST_F(TextfieldTest, SwitchFocusInKeyDown) {
InitTextfield();
- TextfieldFocuser* focuser = new TextfieldFocuser(textfield_);
- widget_->GetContentsView()->AddChildView(focuser);
+ TextfieldFocuser* focuser = widget_->GetContentsView()->AddChildView(
+ std::make_unique<TextfieldFocuser>(textfield_));
focuser->RequestFocus();
EXPECT_EQ(focuser, GetFocusedView());
@@ -4776,6 +4776,8 @@
SendKeyPress(ui::VKEY_SPACE, 0);
EXPECT_EQ(textfield_, GetFocusedView());
EXPECT_EQ(u" ", textfield_->GetText());
+ // Remove to ensure that the pointer in the focuser does not become dangling.
+ widget_->GetContentsView()->RemoveChildViewT(std::exchange(focuser, nullptr));
}
TEST_F(TextfieldTest, SendingDeletePreservesShiftFlag) {