Index: chrome/browser/ui/views/frame/glass_browser_frame_view.h |
diff --git a/chrome/browser/ui/views/frame/glass_browser_frame_view.h b/chrome/browser/ui/views/frame/glass_browser_frame_view.h |
index 8b0ad07cd6475aa4dbbeb5512a5421fd3060b860..e438cf01917dc386e4be624899196b8551de61b3 100644 |
--- a/chrome/browser/ui/views/frame/glass_browser_frame_view.h |
+++ b/chrome/browser/ui/views/frame/glass_browser_frame_view.h |
@@ -7,20 +7,24 @@ |
#include "base/compiler_specific.h" |
#include "base/macros.h" |
+#include "base/scoped_observer.h" |
#include "base/win/scoped_gdi_object.h" |
#include "chrome/browser/ui/views/frame/avatar_button_manager.h" |
#include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" |
#include "chrome/browser/ui/views/frame/windows_10_caption_button.h" |
#include "chrome/browser/ui/views/tab_icon_view.h" |
#include "chrome/browser/ui/views/tab_icon_view_model.h" |
+#include "chrome/browser/ui/views/tabs/tab_strip_observer.h" |
#include "ui/views/controls/button/button.h" |
#include "ui/views/window/non_client_view.h" |
class BrowserView; |
+class TabStrip; |
class GlassBrowserFrameView : public BrowserNonClientFrameView, |
public views::ButtonListener, |
- public TabIconViewModel { |
+ public TabIconViewModel, |
+ public TabStripObserver { |
public: |
// Constructs a non-client view for an BrowserFrame. |
GlassBrowserFrameView(BrowserFrame* frame, BrowserView* browser_view); |
@@ -33,6 +37,7 @@ class GlassBrowserFrameView : public BrowserNonClientFrameView, |
void UpdateThrobber(bool running) override; |
gfx::Size GetMinimumSize() const override; |
views::View* GetProfileSwitcherView() const override; |
+ void OnBrowserViewInitViewsComplete() override; |
// views::NonClientFrameView: |
gfx::Rect GetBoundsForClientView() const override; |
@@ -52,6 +57,11 @@ class GlassBrowserFrameView : public BrowserNonClientFrameView, |
bool ShouldTabIconViewAnimate() const override; |
gfx::ImageSkia GetFaviconForTabIconView() override; |
+ // TabStripObserver: |
+ void TabStripMaxXChanged(TabStrip* tab_strip) override; |
+ void TabStripDeleted(TabStrip* tab_strip) override; |
+ void TabStripRemovedTabAt(TabStrip* tab_strip, int index) override; |
+ |
bool IsMaximized() const; |
// Visual height of the titlebar when the window is maximized (i.e. excluding |
@@ -64,6 +74,7 @@ class GlassBrowserFrameView : public BrowserNonClientFrameView, |
// views::View: |
void OnPaint(gfx::Canvas* canvas) override; |
void Layout() override; |
+ void ChildPreferredSizeChanged(views::View* child) override; |
// BrowserNonClientFrameView: |
void UpdateProfileIcons() override; |
@@ -189,6 +200,10 @@ class GlassBrowserFrameView : public BrowserNonClientFrameView, |
// The index of the current frame of the throbber animation. |
int throbber_frame_; |
+ // The window's tabstrip, if any, is observed so we know when to resize any |
+ // avatar button. |
+ ScopedObserver<TabStrip, GlassBrowserFrameView> tab_strip_observer_; |
+ |
static const int kThrobberIconCount = 24; |
static HICON throbber_icons_[kThrobberIconCount]; |
static void InitThrobberIcons(); |