| Index: chrome/browser/ui/views/toolbar/app_menu_button.h
|
| diff --git a/chrome/browser/ui/views/toolbar/app_menu_button.h b/chrome/browser/ui/views/toolbar/app_menu_button.h
|
| index 78eb36fe0877bc08531b92f8b320747f8ce6e59d..06167a79a0e81e727016bb0d51ce661221d4493b 100644
|
| --- a/chrome/browser/ui/views/toolbar/app_menu_button.h
|
| +++ b/chrome/browser/ui/views/toolbar/app_menu_button.h
|
| @@ -9,6 +9,7 @@
|
|
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
|
| #include "chrome/browser/ui/toolbar/app_menu_icon_controller.h"
|
| #include "ui/views/controls/button/menu_button.h"
|
| #include "ui/views/controls/button/menu_button_listener.h"
|
| @@ -22,9 +23,10 @@ class LabelButtonBorder;
|
| class MenuListener;
|
| }
|
|
|
| +class AppMenuAnimation;
|
| class ToolbarView;
|
|
|
| -class AppMenuButton : public views::MenuButton {
|
| +class AppMenuButton : public views::MenuButton, public TabStripModelObserver {
|
| public:
|
| explicit AppMenuButton(ToolbarView* toolbar_view);
|
| ~AppMenuButton() override;
|
| @@ -53,14 +55,28 @@ class AppMenuButton : public views::MenuButton {
|
|
|
| // views::MenuButton:
|
| gfx::Size GetPreferredSize() const override;
|
| + void Layout() override;
|
| + void OnPaint(gfx::Canvas* canvas) override;
|
| +
|
| + // TabStripObserver:
|
| + void TabInsertedAt(TabStripModel* tab_strip_model,
|
| + content::WebContents* contents,
|
| + int index,
|
| + bool foreground) override;
|
|
|
| // Updates the presentation according to |severity_| and the theme provider.
|
| - void UpdateIcon();
|
| + // If |should_animate| is true, the icon should animate.
|
| + void UpdateIcon(bool should_animate);
|
|
|
| // Sets |margin_trailing_| when the browser is maximized and updates layout
|
| // to make the focus rectangle centered.
|
| void SetTrailingMargin(int margin);
|
|
|
| + // Methods called by AppMenuAnimation when the animation has started/ended.
|
| + // The layer is managed inside these methods.
|
| + void AppMenuAnimationStarted();
|
| + void AppMenuAnimationEnded();
|
| +
|
| // Opens the app menu immediately during a drag-and-drop operation.
|
| // Used only in testing.
|
| static bool g_open_app_immediately_for_testing;
|
| @@ -96,6 +112,9 @@ class AppMenuButton : public views::MenuButton {
|
| std::unique_ptr<AppMenuModel> menu_model_;
|
| std::unique_ptr<AppMenu> menu_;
|
|
|
| + // Used for animating and drawing the app menu icon.
|
| + std::unique_ptr<AppMenuAnimation> animation_;
|
| +
|
| // Any trailing margin to be applied. Used when the browser is in
|
| // a maximized state to extend to the full window width.
|
| int margin_trailing_;
|
|
|