Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Side by Side Diff: chrome/browser/ui/views/frame/browser_non_client_frame_view.h

Issue 1608843002: Start untangling the avatar switcher from BrowserNonClientFrameView (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20160119-MacViewsBrowser-Compile
Patch Set: rename, enum class Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_H_ 6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_H_
7 7
8 #include "chrome/browser/profiles/profile_info_cache_observer.h" 8 #include "chrome/browser/profiles/profile_info_cache_observer.h"
9 #include "ui/views/window/non_client_view.h" 9 #include "ui/views/window/non_client_view.h"
10 10
11 #if defined(FRAME_AVATAR_BUTTON) 11 #if defined(FRAME_AVATAR_BUTTON)
12 #include "chrome/browser/ui/views/profiles/new_avatar_button.h" 12 #include "chrome/browser/ui/views/frame/avatar_button_manager.h"
13 #endif 13 #endif
14 14
15 #if defined(ENABLE_SUPERVISED_USERS) 15 #if defined(ENABLE_SUPERVISED_USERS)
16 class SupervisedUserAvatarLabel; 16 class SupervisedUserAvatarLabel;
17 #endif 17 #endif
18 class AvatarMenuButton; 18 class AvatarMenuButton;
19 class BrowserFrame; 19 class BrowserFrame;
20 class BrowserView; 20 class BrowserView;
21 21
22 // A specialization of the NonClientFrameView object that provides additional 22 // A specialization of the NonClientFrameView object that provides additional
23 // Browser-specific methods. 23 // Browser-specific methods.
24 class BrowserNonClientFrameView : public views::NonClientFrameView, 24 class BrowserNonClientFrameView : public views::NonClientFrameView,
25 public ProfileInfoCacheObserver { 25 public ProfileInfoCacheObserver {
26 public: 26 public:
27 BrowserNonClientFrameView(BrowserFrame* frame, BrowserView* browser_view); 27 BrowserNonClientFrameView(BrowserFrame* frame, BrowserView* browser_view);
28 ~BrowserNonClientFrameView() override; 28 ~BrowserNonClientFrameView() override;
29 29
30 BrowserView* browser_view() const { return browser_view_; }
31 BrowserFrame* frame() const { return frame_; }
30 AvatarMenuButton* avatar_button() const { return avatar_button_; } 32 AvatarMenuButton* avatar_button() const { return avatar_button_; }
31 33
32 #if defined(FRAME_AVATAR_BUTTON) 34 #if defined(FRAME_AVATAR_BUTTON)
33 NewAvatarButton* new_avatar_button() const { return new_avatar_button_; } 35 views::View* new_avatar_button() const {
36 return profile_switcher_.view();
37 }
34 #endif 38 #endif
35 39
36 #if defined(ENABLE_SUPERVISED_USERS) 40 #if defined(ENABLE_SUPERVISED_USERS)
37 SupervisedUserAvatarLabel* supervised_user_avatar_label() const { 41 SupervisedUserAvatarLabel* supervised_user_avatar_label() const {
38 return supervised_user_avatar_label_; 42 return supervised_user_avatar_label_;
39 } 43 }
40 44
41 void OnThemeChanged() override; 45 void OnThemeChanged() override;
42 #endif 46 #endif
43 47
(...skipping 23 matching lines...) Expand all
67 virtual void UpdateToolbar(); 71 virtual void UpdateToolbar();
68 72
69 // Returns the location icon, if this frame has any. 73 // Returns the location icon, if this frame has any.
70 virtual views::View* GetLocationIconView() const; 74 virtual views::View* GetLocationIconView() const;
71 75
72 // Overriden from views::View. 76 // Overriden from views::View.
73 void VisibilityChanged(views::View* starting_from, bool is_visible) override; 77 void VisibilityChanged(views::View* starting_from, bool is_visible) override;
74 void ChildPreferredSizeChanged(View* child) override; 78 void ChildPreferredSizeChanged(View* child) override;
75 79
76 protected: 80 protected:
77 BrowserView* browser_view() const { return browser_view_; }
78 BrowserFrame* frame() const { return frame_; }
79
80 // Whether the frame should be painted with theming. 81 // Whether the frame should be painted with theming.
81 // By default, tabbed browser windows are themed but popup and app windows are 82 // By default, tabbed browser windows are themed but popup and app windows are
82 // not. 83 // not.
83 virtual bool ShouldPaintAsThemed() const; 84 virtual bool ShouldPaintAsThemed() const;
84 85
85 // Compute aspects of the frame needed to paint the frame background. 86 // Compute aspects of the frame needed to paint the frame background.
86 SkColor GetFrameColor() const; 87 SkColor GetFrameColor() const;
87 gfx::ImageSkia* GetFrameImage() const; 88 gfx::ImageSkia* GetFrameImage() const;
88 gfx::ImageSkia* GetFrameOverlayImage() const; 89 gfx::ImageSkia* GetFrameOverlayImage() const;
89 int GetTopAreaHeight() const; 90 int GetTopAreaHeight() const;
90 91
91 // Updates the avatar button using the old or new UI based on the BrowserView 92 // Updates the avatar button using the old or new UI based on the BrowserView
92 // type, and the presence of the --enable-new-avatar-menu flag. Calls either 93 // type, and the presence of the --enable-new-avatar-menu flag. Calls either
93 // UpdateOldAvatarButton() or UpdateNewAvatarButtonImpl() accordingly. 94 // UpdateOldAvatarButton() or UpdateNewAvatarButtonImpl() accordingly.
94 void UpdateAvatar(); 95 void UpdateAvatar();
95 96
96 // Updates the title and icon of the old avatar button. 97 // Updates the title and icon of the old avatar button.
97 void UpdateOldAvatarButton(); 98 void UpdateOldAvatarButton();
98 99
99 // Updates the avatar button displayed in the caption area by calling 100 // Updates the avatar button displayed in the caption area by calling
100 // UpdateNewAvatarButton() with an implementation specific |listener| 101 // UpdateNewAvatarButton() with an implementation specific |listener|
101 // and button |style|. 102 // and button |style|.
102 virtual void UpdateNewAvatarButtonImpl() = 0; 103 virtual void UpdateNewAvatarButtonImpl() = 0;
103 104
104 #if defined(FRAME_AVATAR_BUTTON) 105 #if defined(FRAME_AVATAR_BUTTON)
105 // Updates the title of the avatar button displayed in the caption area. 106 // Updates the title of the avatar button displayed in the caption area.
106 // The button uses |style| to match the browser window style and notifies 107 // The button uses |style| to match the browser window style.
107 // |listener| when it is clicked. 108 void UpdateNewAvatarButton(const AvatarButtonStyle style);
108 void UpdateNewAvatarButton(views::ButtonListener* listener,
109 const NewAvatarButton::AvatarButtonStyle style);
110 #endif 109 #endif
111 110
112 private: 111 private:
113 // Overriden from ProfileInfoCacheObserver. 112 // Overriden from ProfileInfoCacheObserver.
114 void OnProfileAdded(const base::FilePath& profile_path) override; 113 void OnProfileAdded(const base::FilePath& profile_path) override;
115 void OnProfileWasRemoved(const base::FilePath& profile_path, 114 void OnProfileWasRemoved(const base::FilePath& profile_path,
116 const base::string16& profile_name) override; 115 const base::string16& profile_name) override;
117 void OnProfileAvatarChanged(const base::FilePath& profile_path) override; 116 void OnProfileAvatarChanged(const base::FilePath& profile_path) override;
118 117
119 // Draws a taskbar icon if avatars are enabled, erases it otherwise. 118 // Draws a taskbar icon if avatars are enabled, erases it otherwise.
120 void UpdateTaskbarDecoration(); 119 void UpdateTaskbarDecoration();
121 120
122 // The frame that hosts this view. 121 // The frame that hosts this view.
123 BrowserFrame* frame_; 122 BrowserFrame* frame_;
124 123
125 // The BrowserView hosted within this View. 124 // The BrowserView hosted within this View.
126 BrowserView* browser_view_; 125 BrowserView* browser_view_;
127 126
128 #if defined(ENABLE_SUPERVISED_USERS) 127 #if defined(ENABLE_SUPERVISED_USERS)
129 SupervisedUserAvatarLabel* supervised_user_avatar_label_; 128 SupervisedUserAvatarLabel* supervised_user_avatar_label_;
130 #endif 129 #endif
131 130
132 #if defined(FRAME_AVATAR_BUTTON) 131 #if defined(FRAME_AVATAR_BUTTON)
133 // Menu button that displays the name of the active or guest profile. 132 // Wrapper around the in-frame avatar switcher.
134 // May be null and will not be displayed for off the record profiles. 133 // TODO(tapted): Move this component down into the subclasses that need it.
135 NewAvatarButton* new_avatar_button_; 134 AvatarButtonManager profile_switcher_;
136 #endif 135 #endif
137 136
138 // Menu button that displays the incognito icon. May be null for some frame 137 // Menu button that displays the incognito icon. May be null for some frame
139 // styles. TODO(anthonyvd): simplify/rename. 138 // styles. TODO(anthonyvd): simplify/rename.
140 AvatarMenuButton* avatar_button_; 139 AvatarMenuButton* avatar_button_;
141 }; 140 };
142 141
143 namespace chrome { 142 namespace chrome {
144 143
145 // Provided by a browser_non_client_frame_view_factory_*.cc implementation 144 // Provided by a browser_non_client_frame_view_factory_*.cc implementation
146 BrowserNonClientFrameView* CreateBrowserNonClientFrameView( 145 BrowserNonClientFrameView* CreateBrowserNonClientFrameView(
147 BrowserFrame* frame, BrowserView* browser_view); 146 BrowserFrame* frame, BrowserView* browser_view);
148 147
149 } // namespace chrome 148 } // namespace chrome
150 149
151 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_H_ 150 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame.cc ('k') | chrome/browser/ui/views/frame/browser_non_client_frame_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698