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

Side by Side Diff: chrome/browser/ui/toolbar/toolbar_actions_bar.cc

Issue 726813002: [Extensions Toolbar] Make the ExtensionToolbarModel icon count more stable (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Peter's Created 6 years, 1 month 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" 5 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "chrome/browser/extensions/extension_action_manager.h" 8 #include "chrome/browser/extensions/extension_action_manager.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 } 195 }
196 #endif 196 #endif
197 197
198 // The overflow displays any icons not shown by the main bar. 198 // The overflow displays any icons not shown by the main bar.
199 return in_overflow_mode_ ? 199 return in_overflow_mode_ ?
200 model_->toolbar_items().size() - model_visible_size : model_visible_size; 200 model_->toolbar_items().size() - model_visible_size : model_visible_size;
201 } 201 }
202 202
203 void ToolbarActionsBar::CreateActions() { 203 void ToolbarActionsBar::CreateActions() {
204 DCHECK(toolbar_actions_.empty()); 204 DCHECK(toolbar_actions_.empty());
205 if (!model_) 205 // We wait for the extension system to be initialized before we add any
206 // actions, as they rely on the extension system to function.
207 if (!model_ || !model_->extensions_initialized())
206 return; 208 return;
207 209
208 { 210 {
209 // We don't redraw the view while creating actions. 211 // We don't redraw the view while creating actions.
210 base::AutoReset<bool> layout_resetter(&suppress_layout_, true); 212 base::AutoReset<bool> layout_resetter(&suppress_layout_, true);
211 213
212 // Extension actions come first. 214 // Extension actions come first.
213 extensions::ExtensionActionManager* action_manager = 215 extensions::ExtensionActionManager* action_manager =
214 extensions::ExtensionActionManager::Get(browser_->profile()); 216 extensions::ExtensionActionManager::Get(browser_->profile());
215 const extensions::ExtensionList& toolbar_items = model_->GetItemOrderForTab( 217 const extensions::ExtensionList& toolbar_items = model_->GetItemOrderForTab(
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 // appearing, etc), it's not worth the extra complexity to create and insert 424 // appearing, etc), it's not worth the extra complexity to create and insert
423 // only the new actions. 425 // only the new actions.
424 DeleteActions(); 426 DeleteActions();
425 CreateActions(); 427 CreateActions();
426 delegate_->ResizeAndAnimate(gfx::Tween::LINEAR, 428 delegate_->ResizeAndAnimate(gfx::Tween::LINEAR,
427 GetPreferredSize().width(), 429 GetPreferredSize().width(),
428 true); // suppress chevron 430 true); // suppress chevron
429 } 431 }
430 432
431 void ToolbarActionsBar::OnToolbarModelInitialized() { 433 void ToolbarActionsBar::OnToolbarModelInitialized() {
432 ToolbarVisibleCountChanged(); // We may not have resized since the start. 434 // We shouldn't have any actions before the model is initialized.
433 delegate_->Redraw(false); // Order didn't change. 435 DCHECK(toolbar_actions_.empty());
434 suppress_animation_ = false; 436 suppress_animation_ = false;
437 CreateActions();
438 if (!toolbar_actions_.empty()) {
439 delegate_->Redraw(false);
440 ToolbarVisibleCountChanged();
441 }
435 } 442 }
436 443
437 void ToolbarActionsBar::OnToolbarReorderNecessary( 444 void ToolbarActionsBar::OnToolbarReorderNecessary(
438 content::WebContents* web_contents) { 445 content::WebContents* web_contents) {
439 if (GetCurrentWebContents() == web_contents) 446 if (GetCurrentWebContents() == web_contents)
440 ReorderActions(); 447 ReorderActions();
441 } 448 }
442 449
443 Browser* ToolbarActionsBar::GetBrowser() { 450 Browser* ToolbarActionsBar::GetBrowser() {
444 return browser_; 451 return browser_;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 for (ToolbarActionViewController* action : toolbar_actions_) { 493 for (ToolbarActionViewController* action : toolbar_actions_) {
487 if (action->GetId() == id) 494 if (action->GetId() == id)
488 return action; 495 return action;
489 } 496 }
490 return nullptr; 497 return nullptr;
491 } 498 }
492 499
493 content::WebContents* ToolbarActionsBar::GetCurrentWebContents() { 500 content::WebContents* ToolbarActionsBar::GetCurrentWebContents() {
494 return browser_->tab_strip_model()->GetActiveWebContents(); 501 return browser_->tab_strip_model()->GetActiveWebContents();
495 } 502 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698