Commit 9c48d23a authored by Elly Fong-Jones's avatar Elly Fong-Jones Committed by Commit Bot

cbui: remove ToolbarActionsBarBubbleViews CreateExtraView

Instead, use SetExtraView. The create method is renamed to avoid conflict with
the deprecated parent method it used to override, but left as a method on the
clsas because it sets up some of the class's internal state.

The tests for this class were calling CreateExtraView manually, which is
not allowed by the contract of DialogDelegate::CreateExtraView, but
happened to work on this class. This change therefore introduces an
accessor DialogDelegate::GetExtraView() that pulls the extra view out of
the DialogClientView and uses that in these tests to access the existing
extra view.

Bug: 1011446
Change-Id: I8ad2f3d20d94b461d78b02f3b2a671b2a15a6a31
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1876789
Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org>
Reviewed-by: default avatarPeter Boström <pbos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709503}
parent 098ad038
...@@ -38,6 +38,7 @@ ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews( ...@@ -38,6 +38,7 @@ ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews(
delegate_->GetActionButtonText()); delegate_->GetActionButtonText());
DialogDelegate::set_button_label(ui::DIALOG_BUTTON_CANCEL, DialogDelegate::set_button_label(ui::DIALOG_BUTTON_CANCEL,
delegate_->GetDismissButtonText()); delegate_->GetDismissButtonText());
DialogDelegate::SetExtraView(CreateExtraInfoView());
DCHECK(anchor_view); DCHECK(anchor_view);
set_close_on_deactivate(delegate_->ShouldCloseOnDeactivate()); set_close_on_deactivate(delegate_->ShouldCloseOnDeactivate());
...@@ -62,7 +63,8 @@ std::string ToolbarActionsBarBubbleViews::GetAnchorActionId() { ...@@ -62,7 +63,8 @@ std::string ToolbarActionsBarBubbleViews::GetAnchorActionId() {
return delegate_->GetAnchorActionId(); return delegate_->GetAnchorActionId();
} }
std::unique_ptr<views::View> ToolbarActionsBarBubbleViews::CreateExtraView() { std::unique_ptr<views::View>
ToolbarActionsBarBubbleViews::CreateExtraInfoView() {
std::unique_ptr<ToolbarActionsBarBubbleDelegate::ExtraViewInfo> std::unique_ptr<ToolbarActionsBarBubbleDelegate::ExtraViewInfo>
extra_view_info = delegate_->GetExtraViewInfo(); extra_view_info = delegate_->GetExtraViewInfo();
...@@ -86,8 +88,8 @@ std::unique_ptr<views::View> ToolbarActionsBarBubbleViews::CreateExtraView() { ...@@ -86,8 +88,8 @@ std::unique_ptr<views::View> ToolbarActionsBarBubbleViews::CreateExtraView() {
image_button->SetTooltipText(text); image_button->SetTooltipText(text);
views::SetImageFromVectorIcon(image_button.get(), views::SetImageFromVectorIcon(image_button.get(),
vector_icons::kHelpOutlineIcon); vector_icons::kHelpOutlineIcon);
image_button_ = image_button.release(); learn_more_button_ = image_button.get();
extra_view.reset(image_button_); extra_view = std::move(image_button);
} else { } else {
extra_view = std::make_unique<views::Label>(text); extra_view = std::make_unique<views::Label>(text);
} }
......
...@@ -34,15 +34,16 @@ class ToolbarActionsBarBubbleViews : public views::BubbleDialogDelegateView, ...@@ -34,15 +34,16 @@ class ToolbarActionsBarBubbleViews : public views::BubbleDialogDelegateView,
const views::Label* body_text() const { return body_text_; } const views::Label* body_text() const { return body_text_; }
const views::Label* item_list() const { return item_list_; } const views::Label* item_list() const { return item_list_; }
views::ImageButton* learn_more_button() const { return image_button_; } views::ImageButton* learn_more_button() const { return learn_more_button_; }
private: private:
friend class ToolbarActionsBarBubbleViewsTest; friend class ToolbarActionsBarBubbleViewsTest;
std::unique_ptr<views::View> CreateExtraInfoView();
// views::BubbleDialogDelegateView: // views::BubbleDialogDelegateView:
base::string16 GetWindowTitle() const override; base::string16 GetWindowTitle() const override;
bool ShouldShowCloseButton() const override; bool ShouldShowCloseButton() const override;
std::unique_ptr<views::View> CreateExtraView() override;
bool Cancel() override; bool Cancel() override;
bool Accept() override; bool Accept() override;
bool Close() override; bool Close() override;
...@@ -56,7 +57,7 @@ class ToolbarActionsBarBubbleViews : public views::BubbleDialogDelegateView, ...@@ -56,7 +57,7 @@ class ToolbarActionsBarBubbleViews : public views::BubbleDialogDelegateView,
bool delegate_notified_of_close_ = false; bool delegate_notified_of_close_ = false;
views::Label* body_text_ = nullptr; views::Label* body_text_ = nullptr;
views::Label* item_list_ = nullptr; views::Label* item_list_ = nullptr;
views::ImageButton* image_button_ = nullptr; views::ImageButton* learn_more_button_ = nullptr;
const bool anchored_to_action_; const bool anchored_to_action_;
DISALLOW_COPY_AND_ASSIGN(ToolbarActionsBarBubbleViews); DISALLOW_COPY_AND_ASSIGN(ToolbarActionsBarBubbleViews);
......
...@@ -32,12 +32,6 @@ const int kIconSize = 16; ...@@ -32,12 +32,6 @@ const int kIconSize = 16;
} }
class ToolbarActionsBarBubbleViewsTest : public ChromeViewsTestBase { class ToolbarActionsBarBubbleViewsTest : public ChromeViewsTestBase {
public:
std::unique_ptr<views::View> TestCreateExtraView() {
DCHECK(bubble_);
return bubble_->CreateExtraView();
}
protected: protected:
ToolbarActionsBarBubbleViewsTest() {} ToolbarActionsBarBubbleViewsTest() {}
~ToolbarActionsBarBubbleViewsTest() override {} ~ToolbarActionsBarBubbleViewsTest() override {}
...@@ -136,7 +130,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutNoButtons) { ...@@ -136,7 +130,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutNoButtons) {
delegate.set_action_button_text(base::string16()); delegate.set_action_button_text(base::string16());
ShowBubble(&delegate); ShowBubble(&delegate);
std::unique_ptr<views::View> extra_view(TestCreateExtraView()); EXPECT_EQ(nullptr, bubble()->GetExtraView());
EXPECT_FALSE(bubble()->GetDialogClientView()->ok_button()); EXPECT_FALSE(bubble()->GetDialogClientView()->ok_button());
EXPECT_FALSE(bubble()->GetDialogClientView()->cancel_button()); EXPECT_FALSE(bubble()->GetDialogClientView()->cancel_button());
EXPECT_FALSE(bubble()->learn_more_button()); EXPECT_FALSE(bubble()->learn_more_button());
...@@ -352,8 +346,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestNullExtraView) { ...@@ -352,8 +346,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestNullExtraView) {
TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
ActionString()); ActionString());
ShowBubble(&delegate); ShowBubble(&delegate);
std::unique_ptr<views::View> extra_view(TestCreateExtraView()); EXPECT_EQ(nullptr, bubble()->GetExtraView());
ASSERT_FALSE(extra_view);
CloseBubble(); CloseBubble();
} }
...@@ -366,11 +359,11 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewIconOnly) { ...@@ -366,11 +359,11 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewIconOnly) {
extra_view_info->resource = &vector_icons::kBusinessIcon; extra_view_info->resource = &vector_icons::kBusinessIcon;
delegate.set_extra_view_info(std::move(extra_view_info)); delegate.set_extra_view_info(std::move(extra_view_info));
ShowBubble(&delegate); ShowBubble(&delegate);
std::unique_ptr<views::View> extra_view(TestCreateExtraView()); const views::View* const extra_view = bubble()->GetExtraView();
ASSERT_TRUE(extra_view); ASSERT_TRUE(extra_view);
ASSERT_EQ("ImageView", std::string(extra_view->GetClassName())); ASSERT_EQ("ImageView", std::string(extra_view->GetClassName()));
EXPECT_TRUE(gfx::test::AreImagesEqual( EXPECT_TRUE(gfx::test::AreImagesEqual(
gfx::Image(static_cast<views::ImageView*>(extra_view.get())->GetImage()), gfx::Image(static_cast<const views::ImageView*>(extra_view)->GetImage()),
gfx::Image(gfx::CreateVectorIcon(vector_icons::kBusinessIcon, kIconSize, gfx::Image(gfx::CreateVectorIcon(vector_icons::kBusinessIcon, kIconSize,
gfx::kChromeIconGrey)))); gfx::kChromeIconGrey))));
CloseBubble(); CloseBubble();
...@@ -389,7 +382,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewLinkedTextOnly) { ...@@ -389,7 +382,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewLinkedTextOnly) {
ShowBubble(&delegate); ShowBubble(&delegate);
std::unique_ptr<views::View> extra_view(TestCreateExtraView()); const views::View* const extra_view = bubble()->GetExtraView();
ASSERT_TRUE(extra_view); ASSERT_TRUE(extra_view);
ASSERT_EQ("ImageButton", std::string(extra_view->GetClassName())); ASSERT_EQ("ImageButton", std::string(extra_view->GetClassName()));
EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSIONS_INSTALLED_BY_ADMIN), EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSIONS_INSTALLED_BY_ADMIN),
...@@ -410,11 +403,11 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewLabelTextOnly) { ...@@ -410,11 +403,11 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewLabelTextOnly) {
ShowBubble(&delegate); ShowBubble(&delegate);
std::unique_ptr<views::View> extra_view(TestCreateExtraView()); const views::View* const extra_view = bubble()->GetExtraView();
ASSERT_TRUE(extra_view); ASSERT_TRUE(extra_view);
EXPECT_EQ("Label", std::string(extra_view->GetClassName())); EXPECT_EQ("Label", std::string(extra_view->GetClassName()));
EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSIONS_INSTALLED_BY_ADMIN), EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSIONS_INSTALLED_BY_ADMIN),
static_cast<views::Label*>(extra_view.get())->GetText()); static_cast<const views::Label*>(extra_view)->GetText());
CloseBubble(); CloseBubble();
} }
...@@ -432,7 +425,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewImageAndText) { ...@@ -432,7 +425,7 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCreateExtraViewImageAndText) {
ShowBubble(&delegate); ShowBubble(&delegate);
std::unique_ptr<views::View> extra_view(TestCreateExtraView()); const views::View* const extra_view = bubble()->GetExtraView();
ASSERT_TRUE(extra_view); ASSERT_TRUE(extra_view);
EXPECT_STREQ("View", extra_view->GetClassName()); EXPECT_STREQ("View", extra_view->GetClassName());
EXPECT_EQ(2u, extra_view->children().size()); EXPECT_EQ(2u, extra_view->children().size());
......
...@@ -46,6 +46,7 @@ class VIEWS_EXPORT DialogClientView : public ClientView, ...@@ -46,6 +46,7 @@ class VIEWS_EXPORT DialogClientView : public ClientView,
// Accessors in case the user wishes to adjust these buttons. // Accessors in case the user wishes to adjust these buttons.
LabelButton* ok_button() const { return ok_button_; } LabelButton* ok_button() const { return ok_button_; }
LabelButton* cancel_button() const { return cancel_button_; } LabelButton* cancel_button() const { return cancel_button_; }
View* extra_view() const { return extra_view_; }
void SetButtonRowInsets(const gfx::Insets& insets); void SetButtonRowInsets(const gfx::Insets& insets);
......
...@@ -259,6 +259,12 @@ views::LabelButton* DialogDelegate::GetCancelButton() { ...@@ -259,6 +259,12 @@ views::LabelButton* DialogDelegate::GetCancelButton() {
return client ? client->cancel_button() : nullptr; return client ? client->cancel_button() : nullptr;
} }
views::View* DialogDelegate::GetExtraView() {
DCHECK(GetWidget()) << "Don't call this before OnDialogInitialized";
auto* client = GetDialogClientView();
return client ? client->extra_view() : nullptr;
}
void DialogDelegate::AddObserver(DialogObserver* observer) { void DialogDelegate::AddObserver(DialogObserver* observer) {
observer_list_.AddObserver(observer); observer_list_.AddObserver(observer);
} }
......
...@@ -164,6 +164,7 @@ class VIEWS_EXPORT DialogDelegate : public WidgetDelegate { ...@@ -164,6 +164,7 @@ class VIEWS_EXPORT DialogDelegate : public WidgetDelegate {
// about DialogClientView. Do not call these before OnDialogInitialized. // about DialogClientView. Do not call these before OnDialogInitialized.
views::LabelButton* GetOkButton(); views::LabelButton* GetOkButton();
views::LabelButton* GetCancelButton(); views::LabelButton* GetCancelButton();
views::View* GetExtraView();
// Add or remove an observer notified by calls to DialogModelChanged(). // Add or remove an observer notified by calls to DialogModelChanged().
void AddObserver(DialogObserver* observer); void AddObserver(DialogObserver* observer);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment