Chromium Code Reviews| Index: chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| diff --git a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| index 6ab2dacebf97ebdb3cae5f686afb1a08fbb9aa18..309edec1de8046f476465c184c1f782049e37338 100644 |
| --- a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| +++ b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| @@ -9,6 +9,7 @@ |
| #include "chrome/grit/locale_settings.h" |
| #include "ui/base/resource/resource_bundle.h" |
| #include "ui/views/controls/button/label_button.h" |
| +#include "ui/views/controls/image_view.h" |
| #include "ui/views/controls/label.h" |
| #include "ui/views/controls/link.h" |
| #include "ui/views/layout/box_layout.h" |
| @@ -25,7 +26,7 @@ ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews( |
| views::BubbleBorder::TOP_RIGHT), |
| delegate_(std::move(delegate)), |
| item_list_(nullptr), |
| - learn_more_button_(nullptr) { |
| + link_(nullptr) { |
| set_close_on_deactivate(delegate_->ShouldCloseOnDeactivate()); |
| } |
| @@ -37,13 +38,39 @@ void ToolbarActionsBarBubbleViews::Show() { |
| } |
| views::View* ToolbarActionsBarBubbleViews::CreateExtraView() { |
|
Devlin
2016/09/07 18:37:50
Nice! This method already reads a lot better than
catmullings
2016/09/08 15:42:30
Done.
|
| - base::string16 text = delegate_->GetLearnMoreButtonText(); |
| - if (text.empty()) |
| + std::unique_ptr<ToolbarActionsBarBubbleDelegate::ExtraViewInfo> |
| + extra_view_info = delegate_->GetExtraViewInfo(); |
| + |
| + if (!extra_view_info) |
| return nullptr; |
| - learn_more_button_ = new views::Link(text); |
| - learn_more_button_->set_listener(this); |
| - return learn_more_button_; |
| + base::string16& text = extra_view_info->text; |
|
Devlin
2016/09/07 18:37:50
const&
catmullings
2016/09/08 15:42:30
Done.
|
| + int resource_id = extra_view_info->resource_id; |
| + |
| + if (resource_id != -1 && !text.empty()) { |
| + views::View* parent = new views::View(); |
| + |
| + views::ImageView* icon = new views::ImageView(); |
| + icon->SetImage( |
| + ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id)); |
| + parent->AddChildView(icon); |
| + |
| + parent->AddChildView( |
| + ConvertTextToView(text, extra_view_info->is_text_linked)); |
| + return parent; |
| + } |
| + |
| + if (resource_id != -1) { |
| + views::ImageView* icon = new views::ImageView(); |
| + icon->SetImage( |
| + ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id)); |
|
Devlin
2016/09/07 18:37:49
It still looks like we have a bit of duplicate cod
catmullings
2016/09/08 15:42:30
This is much cleaner and easier to follow.
Change
catmullings
2016/09/08 15:42:30
Done.
|
| + return icon; |
| + } |
| + |
| + if (!text.empty()) |
| + return ConvertTextToView(text, extra_view_info->is_text_linked); |
| + |
| + return nullptr; |
| } |
| base::string16 ToolbarActionsBarBubbleViews::GetWindowTitle() const { |
| @@ -121,3 +148,16 @@ void ToolbarActionsBarBubbleViews::LinkClicked(views::Link* link, |
| delegate_.reset(); |
| GetWidget()->Close(); |
| } |
| + |
| +views::View* ToolbarActionsBarBubbleViews::ConvertTextToView( |
| + const base::string16& text, |
| + bool is_text_linked) { |
| + if (is_text_linked) { |
| + link_ = new views::Link(text); |
|
Devlin
2016/09/07 18:37:50
I think we can make link_ a views::Label* label_,
catmullings
2016/09/08 15:42:29
I removed this method since it is no longer need i
catmullings
2016/09/08 15:42:30
Done.
|
| + link_->set_listener(this); |
| + return link_; |
| + } else { |
| + views::Label* label = new views::Label(text); |
| + return label; |
| + } |
| +} |