1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_ACTIONS_BAR_BUBBLE_VIEWS_H_ 6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_ACTIONS_BAR_BUBBLE_VIEWS_H_ 7 8 #include <memory> 9 10 #include "chrome/browser/ui/toolbar/toolbar_actions_bar_bubble_delegate.h" 11 #include "ui/views/bubble/bubble_dialog_delegate_view.h" 12 #include "ui/views/widget/widget_observer.h" 13 14 class ToolbarActionsBarBubbleViewsTest; 15 16 namespace views { 17 class ImageButton; 18 class Label; 19 } 20 21 class ToolbarActionsBarBubbleViews : public views::BubbleDialogDelegateView, 22 public views::WidgetObserver { 23 public: 24 // Creates the bubble anchored to |anchor_view|, which may not be nullptr. 25 ToolbarActionsBarBubbleViews( 26 views::View* anchor_view, 27 bool anchored_to_action, 28 std::unique_ptr<ToolbarActionsBarBubbleDelegate> delegate); 29 ToolbarActionsBarBubbleViews(const ToolbarActionsBarBubbleViews&) = delete; 30 ToolbarActionsBarBubbleViews& operator=(const ToolbarActionsBarBubbleViews&) = 31 delete; 32 ~ToolbarActionsBarBubbleViews() override; 33 34 std::string GetAnchorActionId(); 35 body_text()36 const views::Label* body_text() const { return body_text_; } item_list()37 const views::Label* item_list() const { return item_list_; } learn_more_button()38 views::ImageButton* learn_more_button() const { return learn_more_button_; } 39 40 private: 41 friend class ToolbarActionsBarBubbleViewsTest; 42 43 std::unique_ptr<views::View> CreateExtraInfoView(); 44 45 void ButtonPressed(); 46 47 void NotifyDelegateOfClose( 48 ToolbarActionsBarBubbleDelegate::CloseAction action); 49 50 // views::BubbleDialogDelegateView: 51 base::string16 GetWindowTitle() const override; 52 bool ShouldShowCloseButton() const override; 53 void AddedToWidget() override; 54 void RemovedFromWidget() override; 55 void Init() override; 56 57 // views::WidgetObserver: 58 void OnWidgetVisibilityChanged(views::Widget* widget, bool visible) override; 59 60 std::unique_ptr<ToolbarActionsBarBubbleDelegate> delegate_; 61 bool delegate_notified_of_close_ = false; 62 bool observer_notified_of_show_ = false; 63 views::Label* body_text_ = nullptr; 64 views::Label* item_list_ = nullptr; 65 views::ImageButton* learn_more_button_ = nullptr; 66 const bool anchored_to_action_; 67 }; 68 69 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_ACTIONS_BAR_BUBBLE_VIEWS_H_ 70