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

Side by Side Diff: chrome/browser/ui/views/toolbar/browser_actions_container.h

Issue 1654223002: Views - init less stuff in tabless browsers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: self review Created 4 years, 10 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_
6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ 6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/observer_list.h" 11 #include "base/observer_list.h"
12 #include "chrome/browser/extensions/extension_keybinding_registry.h"
13 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" 12 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
14 #include "chrome/browser/ui/toolbar/toolbar_actions_bar_delegate.h" 13 #include "chrome/browser/ui/toolbar/toolbar_actions_bar_delegate.h"
15 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views .h"
16 #include "chrome/browser/ui/views/toolbar/chevron_menu_button.h" 14 #include "chrome/browser/ui/views/toolbar/chevron_menu_button.h"
17 #include "chrome/browser/ui/views/toolbar/toolbar_action_view.h" 15 #include "chrome/browser/ui/views/toolbar/toolbar_action_view.h"
18 #include "ui/gfx/animation/animation_delegate.h" 16 #include "ui/gfx/animation/animation_delegate.h"
19 #include "ui/gfx/animation/slide_animation.h" 17 #include "ui/gfx/animation/slide_animation.h"
20 #include "ui/gfx/animation/tween.h" 18 #include "ui/gfx/animation/tween.h"
21 #include "ui/views/controls/resize_area_delegate.h" 19 #include "ui/views/controls/resize_area_delegate.h"
22 #include "ui/views/drag_controller.h" 20 #include "ui/views/drag_controller.h"
23 #include "ui/views/view.h" 21 #include "ui/views/view.h"
24 #include "ui/views/widget/widget_observer.h" 22 #include "ui/views/widget/widget_observer.h"
25 23
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 // size (animation_target_size_), using |resize_amount| to keep track of the 115 // size (animation_target_size_), using |resize_amount| to keep track of the
118 // animation progress. 116 // animation progress.
119 // 117 //
120 // NOTE: When adding Browser Actions to a maximum width container (no overflow) 118 // NOTE: When adding Browser Actions to a maximum width container (no overflow)
121 // we make sure to suppress the chevron menu if it wasn't visible. This is 119 // we make sure to suppress the chevron menu if it wasn't visible. This is
122 // because we won't have enough space to show the new Browser Action until the 120 // because we won't have enough space to show the new Browser Action until the
123 // animation ends and we don't want the chevron to flash into view while we are 121 // animation ends and we don't want the chevron to flash into view while we are
124 // growing the container. 122 // growing the container.
125 // 123 //
126 //////////////////////////////////////////////////////////////////////////////// 124 ////////////////////////////////////////////////////////////////////////////////
127 class BrowserActionsContainer 125 class BrowserActionsContainer : public views::View,
128 : public views::View, 126 public ToolbarActionsBarDelegate,
129 public ToolbarActionsBarDelegate, 127 public views::ResizeAreaDelegate,
130 public views::ResizeAreaDelegate, 128 public gfx::AnimationDelegate,
131 public gfx::AnimationDelegate, 129 public ToolbarActionView::Delegate,
132 public ToolbarActionView::Delegate, 130 public views::WidgetObserver {
133 public views::WidgetObserver,
134 public extensions::ExtensionKeybindingRegistry::Delegate {
135 public: 131 public:
136 // Constructs a BrowserActionContainer for a particular |browser| object. For 132 // Constructs a BrowserActionContainer for a particular |browser| object. For
137 // documentation of |main_container|, see class comments. 133 // documentation of |main_container|, see class comments.
138 BrowserActionsContainer(Browser* browser, 134 BrowserActionsContainer(Browser* browser,
139 BrowserActionsContainer* main_container); 135 BrowserActionsContainer* main_container);
140 ~BrowserActionsContainer() override; 136 ~BrowserActionsContainer() override;
141 137
142 void Init(); 138 void Init();
143 139
144 // Get the number of toolbar actions being displayed. 140 // Get the number of toolbar actions being displayed.
145 size_t num_toolbar_actions() const { return toolbar_action_views_.size(); } 141 size_t num_toolbar_actions() const { return toolbar_action_views_.size(); }
146 142
147 // Returns the chevron, if any. 143 // Returns the chevron, if any.
148 views::View* chevron() { return chevron_; } 144 views::View* chevron() { return chevron_; }
149 const views::View* chevron() const { return chevron_; } 145 const views::View* chevron() const { return chevron_; }
150 146
151 // Returns the browser this container is associated with. 147 // Returns the browser this container is associated with.
152 Browser* browser() const { return browser_; } 148 Browser* browser() const { return browser_; }
153 149
154 ToolbarActionsBar* toolbar_actions_bar() { 150 ToolbarActionsBar* toolbar_actions_bar() {
155 return toolbar_actions_bar_.get(); 151 return toolbar_actions_bar_.get();
156 } 152 }
157 153
158 // The class that registers for keyboard shortcuts for extension commands.
159 extensions::ExtensionKeybindingRegistry* extension_keybinding_registry() {
160 return extension_keybinding_registry_.get();
161 }
162
163 // Get a particular toolbar action view. 154 // Get a particular toolbar action view.
164 ToolbarActionView* GetToolbarActionViewAt(int index) { 155 ToolbarActionView* GetToolbarActionViewAt(int index) {
165 return toolbar_action_views_[index]; 156 return toolbar_action_views_[index];
166 } 157 }
167 158
168 // Whether we are performing resize animation on the container. 159 // Whether we are performing resize animation on the container.
169 bool animating() const { 160 bool animating() const {
170 return resize_animation_ && resize_animation_->is_animating(); 161 return resize_animation_ && resize_animation_->is_animating();
171 } 162 }
172 163
173 // Returns the ID of the action represented by the view at |index|. 164 // Returns the ID of the action represented by the view at |index|.
174 std::string GetIdAt(size_t index) const; 165 std::string GetIdAt(size_t index) const;
175 166
176 // Returns the ToolbarActionView* associated with the given |extension|, or 167 // Returns the ToolbarActionView* associated with the given |extension|, or
177 // NULL if none exists. 168 // NULL if none exists.
178 ToolbarActionView* GetViewForId(const std::string& id); 169 ToolbarActionView* GetViewForId(const std::string& id);
179 170
180 // Update the views to reflect the state of the toolbar actions. 171 // Update the views to reflect the state of the toolbar actions.
181 void RefreshToolbarActionViews(); 172 void RefreshToolbarActionViews();
182 173
183 // Returns how many actions are currently visible. If the intent is to find 174 // Returns how many actions are currently visible. If the intent is to find
184 // how many are visible once the container finishes animation, see 175 // how many are visible once the container finishes animation, see
185 // VisibleBrowserActionsAfterAnimation() below. 176 // VisibleBrowserActionsAfterAnimation() below.
186 size_t VisibleBrowserActions() const; 177 size_t VisibleBrowserActions() const;
187 178
188 // Returns how many actions will be visible once the container finishes 179 // Returns how many actions will be visible once the container finishes
189 // animating to a new size, or (if not animating) the currently visible icons. 180 // animating to a new size, or (if not animating) the currently visible icons.
190 size_t VisibleBrowserActionsAfterAnimation() const; 181 size_t VisibleBrowserActionsAfterAnimation() const;
191 182
192 // Executes |command| registered by |extension|.
193 void ExecuteExtensionCommand(const extensions::Extension* extension,
194 const extensions::Command& command);
195
196 // Returns the preferred width given the limit of |max_width|. (Unlike most 183 // Returns the preferred width given the limit of |max_width|. (Unlike most
197 // views, since we don't want to show part of an icon or a large space after 184 // views, since we don't want to show part of an icon or a large space after
198 // the omnibox, this is probably *not* |max_width|). 185 // the omnibox, this is probably *not* |max_width|).
199 int GetWidthForMaxWidth(int max_width) const; 186 int GetWidthForMaxWidth(int max_width) const;
200 187
201 // Overridden from views::View: 188 // Overridden from views::View:
202 gfx::Size GetPreferredSize() const override; 189 gfx::Size GetPreferredSize() const override;
203 int GetHeightForWidth(int width) const override; 190 int GetHeightForWidth(int width) const override;
204 gfx::Size GetMinimumSize() const override; 191 gfx::Size GetMinimumSize() const override;
205 void Layout() override; 192 void Layout() override;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 void StopAnimating() override; 240 void StopAnimating() override;
254 int GetChevronWidth() const override; 241 int GetChevronWidth() const override;
255 void ShowExtensionMessageBubble( 242 void ShowExtensionMessageBubble(
256 scoped_ptr<extensions::ExtensionMessageBubbleController> controller, 243 scoped_ptr<extensions::ExtensionMessageBubbleController> controller,
257 ToolbarActionViewController* anchor_action) override; 244 ToolbarActionViewController* anchor_action) override;
258 245
259 // views::WidgetObserver: 246 // views::WidgetObserver:
260 void OnWidgetClosing(views::Widget* widget) override; 247 void OnWidgetClosing(views::Widget* widget) override;
261 void OnWidgetDestroying(views::Widget* widget) override; 248 void OnWidgetDestroying(views::Widget* widget) override;
262 249
263 // Overridden from extension::ExtensionKeybindingRegistry::Delegate:
264 extensions::ActiveTabPermissionGranter* GetActiveTabPermissionGranter()
265 override;
266
267 views::BubbleDelegateView* active_bubble() { return active_bubble_; } 250 views::BubbleDelegateView* active_bubble() { return active_bubble_; }
268 251
269 ChevronMenuButton* chevron_for_testing() { return chevron_; } 252 ChevronMenuButton* chevron_for_testing() { return chevron_; }
270 253
271 protected: 254 protected:
272 // Overridden from views::View: 255 // Overridden from views::View:
273 void ViewHierarchyChanged( 256 void ViewHierarchyChanged(
274 const ViewHierarchyChangedDetails& details) override; 257 const ViewHierarchyChangedDetails& details) override;
275 void OnPaint(gfx::Canvas* canvas) override; 258 void OnPaint(gfx::Canvas* canvas) override;
276 void OnThemeChanged() override; 259 void OnThemeChanged() override;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 int resize_amount_; 324 int resize_amount_;
342 325
343 // Keeps track of the absolute pixel width the container should have when we 326 // Keeps track of the absolute pixel width the container should have when we
344 // are done animating. 327 // are done animating.
345 int animation_target_size_; 328 int animation_target_size_;
346 329
347 // The DropPosition for the current drag-and-drop operation, or NULL if there 330 // The DropPosition for the current drag-and-drop operation, or NULL if there
348 // is none. 331 // is none.
349 scoped_ptr<DropPosition> drop_position_; 332 scoped_ptr<DropPosition> drop_position_;
350 333
351 // The class that registers for keyboard shortcuts for extension commands.
352 scoped_ptr<ExtensionKeybindingRegistryViews> extension_keybinding_registry_;
353
354 // The extension bubble that is actively showing, if any. 334 // The extension bubble that is actively showing, if any.
355 views::BubbleDelegateView* active_bubble_; 335 views::BubbleDelegateView* active_bubble_;
356 336
357 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainer); 337 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainer);
358 }; 338 };
359 339
360 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ 340 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.cc ('k') | chrome/browser/ui/views/toolbar/browser_actions_container.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698