| Index: ash/common/system/toast/toast_overlay.cc
|
| diff --git a/ash/common/system/toast/toast_overlay.cc b/ash/common/system/toast/toast_overlay.cc
|
| index 7a969c4d020944d41100529fa25e5ba8b078015e..efb516d2d705eefc3d39d4fa12a2dddd2b3ddd75 100644
|
| --- a/ash/common/system/toast/toast_overlay.cc
|
| +++ b/ash/common/system/toast/toast_overlay.cc
|
| @@ -129,10 +129,10 @@ ToastOverlayButton::ToastOverlayButton(views::ButtonListener* listener,
|
| // ToastOverlayView
|
| class ToastOverlayView : public views::View, public views::ButtonListener {
|
| public:
|
| - // This object is not owned by the views hiearchy or by the widget.
|
| + // This object is not owned by the views hierarchy or by the widget.
|
| ToastOverlayView(ToastOverlay* overlay,
|
| const base::string16& text,
|
| - const base::string16& dismiss_text);
|
| + const base::Optional<base::string16>& dismiss_text);
|
| ~ToastOverlayView() override;
|
|
|
| // views::View overrides:
|
| @@ -141,38 +141,44 @@ class ToastOverlayView : public views::View, public views::ButtonListener {
|
| ToastOverlayButton* button() { return button_; }
|
|
|
| private:
|
| - ToastOverlay* overlay_; // weak
|
| - ToastOverlayButton* button_; // weak
|
| -
|
| + // views::View overrides:
|
| gfx::Size GetMaximumSize() const override;
|
| gfx::Size GetMinimumSize() const override;
|
|
|
| + // views::ButtonListener overrides:
|
| void ButtonPressed(views::Button* sender, const ui::Event& event) override;
|
|
|
| + ToastOverlay* overlay_ = nullptr; // weak
|
| + ToastOverlayButton* button_ = nullptr; // weak
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(ToastOverlayView);
|
| };
|
|
|
| -ToastOverlayView::ToastOverlayView(ToastOverlay* overlay,
|
| - const base::string16& text,
|
| - const base::string16& dismiss_text)
|
| - : overlay_(overlay),
|
| - button_(new ToastOverlayButton(
|
| - this,
|
| - dismiss_text.empty()
|
| - ? l10n_util::GetStringUTF16(IDS_ASH_TOAST_DISMISS_BUTTON)
|
| - : dismiss_text)) {
|
| - ToastOverlayLabel* label = new ToastOverlayLabel(text);
|
| - label->SetMaximumWidth(
|
| - GetMaximumSize().width() - button_->GetPreferredSize().width() -
|
| - kToastHorizontalSpacing * 2 - kToastHorizontalSpacing * 2);
|
| - AddChildView(label);
|
| -
|
| - AddChildView(button_);
|
| -
|
| +ToastOverlayView::ToastOverlayView(
|
| + ToastOverlay* overlay,
|
| + const base::string16& text,
|
| + const base::Optional<base::string16>& dismiss_text)
|
| + : overlay_(overlay) {
|
| auto* layout = new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0);
|
| SetLayoutManager(layout);
|
| +
|
| + if (dismiss_text.has_value()) {
|
| + button_ = new ToastOverlayButton(
|
| + this, dismiss_text.value().empty()
|
| + ? l10n_util::GetStringUTF16(IDS_ASH_TOAST_DISMISS_BUTTON)
|
| + : dismiss_text.value());
|
| + }
|
| +
|
| + ToastOverlayLabel* label = new ToastOverlayLabel(text);
|
| + AddChildView(label);
|
| layout->SetFlexForView(label, 1);
|
| - layout->SetFlexForView(button_, 0);
|
| +
|
| + if (button_) {
|
| + label->SetMaximumWidth(
|
| + GetMaximumSize().width() - button_->GetPreferredSize().width() -
|
| + kToastHorizontalSpacing * 2 - kToastHorizontalSpacing * 2);
|
| + AddChildView(button_);
|
| + }
|
| }
|
|
|
| ToastOverlayView::~ToastOverlayView() {}
|
| @@ -196,6 +202,7 @@ gfx::Size ToastOverlayView::GetMaximumSize() const {
|
|
|
| void ToastOverlayView::ButtonPressed(views::Button* sender,
|
| const ui::Event& event) {
|
| + DCHECK_EQ(button_, sender);
|
| overlay_->Show(false);
|
| }
|
|
|
| @@ -203,7 +210,7 @@ void ToastOverlayView::ButtonPressed(views::Button* sender,
|
| // ToastOverlay
|
| ToastOverlay::ToastOverlay(Delegate* delegate,
|
| const base::string16& text,
|
| - const base::string16& dismiss_text)
|
| + base::Optional<base::string16> dismiss_text)
|
| : delegate_(delegate),
|
| text_(text),
|
| dismiss_text_(dismiss_text),
|
| @@ -293,7 +300,12 @@ views::Widget* ToastOverlay::widget_for_testing() {
|
| return overlay_widget_.get();
|
| }
|
|
|
| +ToastOverlayButton* ToastOverlay::dismiss_button_for_testing() {
|
| + return overlay_view_->button();
|
| +}
|
| +
|
| void ToastOverlay::ClickDismissButtonForTesting(const ui::Event& event) {
|
| + DCHECK(overlay_view_->button());
|
| overlay_view_->button()->NotifyClick(event);
|
| }
|
|
|
|
|