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

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

Issue 2442953002: Remove stl_util's deletion function use from chrome/. (Closed)
Patch Set: fix Created 4 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 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 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h" 5 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/stl_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "chrome/browser/extensions/extension_message_bubble_controller.h" 11 #include "chrome/browser/extensions/extension_message_bubble_controller.h"
12 #include "chrome/browser/extensions/tab_helper.h" 12 #include "chrome/browser/extensions/tab_helper.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/ui/browser.h" 14 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/layout_constants.h" 15 #include "chrome/browser/ui/layout_constants.h"
16 #include "chrome/browser/ui/tabs/tab_strip_model.h" 16 #include "chrome/browser/ui/tabs/tab_strip_model.h"
17 #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h" 17 #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
18 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" 18 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
19 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h" 19 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h"
20 #include "chrome/browser/ui/view_ids.h" 20 #include "chrome/browser/ui/view_ids.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 // All views should be removed as part of ToolbarActionsBar::DeleteActions(). 114 // All views should be removed as part of ToolbarActionsBar::DeleteActions().
115 DCHECK(toolbar_action_views_.empty()); 115 DCHECK(toolbar_action_views_.empty());
116 } 116 }
117 117
118 std::string BrowserActionsContainer::GetIdAt(size_t index) const { 118 std::string BrowserActionsContainer::GetIdAt(size_t index) const {
119 return toolbar_action_views_[index]->view_controller()->GetId(); 119 return toolbar_action_views_[index]->view_controller()->GetId();
120 } 120 }
121 121
122 ToolbarActionView* BrowserActionsContainer::GetViewForId( 122 ToolbarActionView* BrowserActionsContainer::GetViewForId(
123 const std::string& id) { 123 const std::string& id) {
124 for (ToolbarActionView* view : toolbar_action_views_) { 124 for (const auto& view : toolbar_action_views_) {
125 if (view->view_controller()->GetId() == id) 125 if (view->view_controller()->GetId() == id)
126 return view; 126 return view.get();
127 } 127 }
128 return nullptr; 128 return nullptr;
129 } 129 }
130 130
131 void BrowserActionsContainer::RefreshToolbarActionViews() { 131 void BrowserActionsContainer::RefreshToolbarActionViews() {
132 toolbar_actions_bar_->Update(); 132 toolbar_actions_bar_->Update();
133 } 133 }
134 134
135 size_t BrowserActionsContainer::VisibleBrowserActions() const { 135 size_t BrowserActionsContainer::VisibleBrowserActions() const {
136 size_t visible_actions = 0; 136 size_t visible_actions = 0;
137 for (const ToolbarActionView* view : toolbar_action_views_) { 137 for (const auto& view : toolbar_action_views_) {
138 if (view->visible()) 138 if (view->visible())
139 ++visible_actions; 139 ++visible_actions;
140 } 140 }
141 return visible_actions; 141 return visible_actions;
142 } 142 }
143 143
144 size_t BrowserActionsContainer::VisibleBrowserActionsAfterAnimation() const { 144 size_t BrowserActionsContainer::VisibleBrowserActionsAfterAnimation() const {
145 if (!animating()) 145 if (!animating())
146 return VisibleBrowserActions(); 146 return VisibleBrowserActions();
147 147
(...skipping 10 matching lines...) Expand all
158 158
159 views::MenuButton* BrowserActionsContainer::GetOverflowReferenceView() { 159 views::MenuButton* BrowserActionsContainer::GetOverflowReferenceView() {
160 return static_cast<views::MenuButton*>( 160 return static_cast<views::MenuButton*>(
161 GetToolbarView(browser_)->app_menu_button()); 161 GetToolbarView(browser_)->app_menu_button());
162 } 162 }
163 163
164 void BrowserActionsContainer::AddViewForAction( 164 void BrowserActionsContainer::AddViewForAction(
165 ToolbarActionViewController* view_controller, 165 ToolbarActionViewController* view_controller,
166 size_t index) { 166 size_t index) {
167 ToolbarActionView* view = new ToolbarActionView(view_controller, this); 167 ToolbarActionView* view = new ToolbarActionView(view_controller, this);
168 toolbar_action_views_.insert(toolbar_action_views_.begin() + index, view); 168 toolbar_action_views_.insert(toolbar_action_views_.begin() + index,
169 base::WrapUnique(view));
169 AddChildViewAt(view, index); 170 AddChildViewAt(view, index);
170 } 171 }
171 172
172 void BrowserActionsContainer::RemoveViewForAction( 173 void BrowserActionsContainer::RemoveViewForAction(
173 ToolbarActionViewController* action) { 174 ToolbarActionViewController* action) {
174 for (ToolbarActionViews::iterator iter = toolbar_action_views_.begin(); 175 for (ToolbarActionViews::iterator iter = toolbar_action_views_.begin();
175 iter != toolbar_action_views_.end(); ++iter) { 176 iter != toolbar_action_views_.end(); ++iter) {
176 if ((*iter)->view_controller() == action) { 177 if ((*iter)->view_controller() == action) {
177 delete *iter;
178 toolbar_action_views_.erase(iter); 178 toolbar_action_views_.erase(iter);
179 break; 179 break;
180 } 180 }
181 } 181 }
182 } 182 }
183 183
184 void BrowserActionsContainer::RemoveAllViews() { 184 void BrowserActionsContainer::RemoveAllViews() {
185 base::STLDeleteElements(&toolbar_action_views_); 185 toolbar_action_views_.clear();
186 } 186 }
187 187
188 void BrowserActionsContainer::Redraw(bool order_changed) { 188 void BrowserActionsContainer::Redraw(bool order_changed) {
189 if (!added_to_view_) { 189 if (!added_to_view_) {
190 // We don't want to redraw before the view has been fully added to the 190 // We don't want to redraw before the view has been fully added to the
191 // hierarchy. 191 // hierarchy.
192 return; 192 return;
193 } 193 }
194 194
195 // Don't allow resizing if the bar is highlighting. 195 // Don't allow resizing if the bar is highlighting.
196 if (resize_area_) 196 if (resize_area_)
197 resize_area_->SetEnabled(!toolbar_actions_bar()->is_highlighting()); 197 resize_area_->SetEnabled(!toolbar_actions_bar()->is_highlighting());
198 198
199 std::vector<ToolbarActionViewController*> actions = 199 std::vector<ToolbarActionViewController*> actions =
200 toolbar_actions_bar_->GetActions(); 200 toolbar_actions_bar_->GetActions();
201 if (order_changed) { 201 if (order_changed) {
202 // Run through the views and compare them to the desired order. If something 202 // Run through the views and compare them to the desired order. If something
203 // is out of place, find the correct spot for it. 203 // is out of place, find the correct spot for it.
204 for (int i = 0; i < static_cast<int>(actions.size()) - 1; ++i) { 204 for (int i = 0; i < static_cast<int>(actions.size()) - 1; ++i) {
205 if (actions[i] != toolbar_action_views_[i]->view_controller()) { 205 if (actions[i] != toolbar_action_views_[i]->view_controller()) {
206 // Find where the correct view is (it's guaranteed to be after our 206 // Find where the correct view is (it's guaranteed to be after our
207 // current index, since everything up to this point is correct). 207 // current index, since everything up to this point is correct).
208 int j = i + 1; 208 int j = i + 1;
209 while (actions[i] != toolbar_action_views_[j]->view_controller()) 209 while (actions[i] != toolbar_action_views_[j]->view_controller())
210 ++j; 210 ++j;
211 std::swap(toolbar_action_views_[i], toolbar_action_views_[j]); 211 std::swap(toolbar_action_views_[i], toolbar_action_views_[j]);
212 // Also move the view in the child views vector. 212 // Also move the view in the child views vector.
213 ReorderChildView(toolbar_action_views_[i], i); 213 ReorderChildView(toolbar_action_views_[i].get(), i);
214 } 214 }
215 } 215 }
216 } 216 }
217 217
218 Layout(); 218 Layout();
219 } 219 }
220 220
221 void BrowserActionsContainer::ResizeAndAnimate(gfx::Tween::Type tween_type, 221 void BrowserActionsContainer::ResizeAndAnimate(gfx::Tween::Type tween_type,
222 int target_width) { 222 int target_width) {
223 if (resize_animation_ && !toolbar_actions_bar_->suppress_animation()) { 223 if (resize_animation_ && !toolbar_actions_bar_->suppress_animation()) {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 353
354 // The range of visible icons, from start_index (inclusive) to end_index 354 // The range of visible icons, from start_index (inclusive) to end_index
355 // (exclusive). 355 // (exclusive).
356 size_t start_index = toolbar_actions_bar_->GetStartIndexInBounds(); 356 size_t start_index = toolbar_actions_bar_->GetStartIndexInBounds();
357 size_t end_index = toolbar_actions_bar_->GetEndIndexInBounds(); 357 size_t end_index = toolbar_actions_bar_->GetEndIndexInBounds();
358 358
359 // Now draw the icons for the actions in the available space. Once all the 359 // Now draw the icons for the actions in the available space. Once all the
360 // variables are in place, the layout works equally well for the main and 360 // variables are in place, the layout works equally well for the main and
361 // overflow container. 361 // overflow container.
362 for (size_t i = 0u; i < toolbar_action_views_.size(); ++i) { 362 for (size_t i = 0u; i < toolbar_action_views_.size(); ++i) {
363 ToolbarActionView* view = toolbar_action_views_[i]; 363 ToolbarActionView* view = toolbar_action_views_[i].get();
364 if (i < start_index || i >= end_index) { 364 if (i < start_index || i >= end_index) {
365 view->SetVisible(false); 365 view->SetVisible(false);
366 } else { 366 } else {
367 view->SetBoundsRect(toolbar_actions_bar_->GetFrameForIndex(i)); 367 view->SetBoundsRect(toolbar_actions_bar_->GetFrameForIndex(i));
368 view->SetVisible(true); 368 view->SetVisible(true);
369 } 369 }
370 } 370 }
371 } 371 }
372 372
373 bool BrowserActionsContainer::GetDropFormats( 373 bool BrowserActionsContainer::GetDropFormats(
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 state->role = ui::AX_ROLE_GROUP; 507 state->role = ui::AX_ROLE_GROUP;
508 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_EXTENSIONS); 508 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_EXTENSIONS);
509 } 509 }
510 510
511 void BrowserActionsContainer::WriteDragDataForView(View* sender, 511 void BrowserActionsContainer::WriteDragDataForView(View* sender,
512 const gfx::Point& press_pt, 512 const gfx::Point& press_pt,
513 OSExchangeData* data) { 513 OSExchangeData* data) {
514 toolbar_actions_bar_->OnDragStarted(); 514 toolbar_actions_bar_->OnDragStarted();
515 DCHECK(data); 515 DCHECK(data);
516 516
517 auto it = std::find(toolbar_action_views_.cbegin(), 517 auto it =
518 toolbar_action_views_.cend(), sender); 518 std::find_if(toolbar_action_views_.cbegin(), toolbar_action_views_.cend(),
519 [sender](const std::unique_ptr<ToolbarActionView>& ptr) {
520 return ptr.get() == sender;
521 });
519 DCHECK(it != toolbar_action_views_.cend()); 522 DCHECK(it != toolbar_action_views_.cend());
520 ToolbarActionViewController* view_controller = (*it)->view_controller(); 523 ToolbarActionViewController* view_controller = (*it)->view_controller();
521 gfx::Size size(ToolbarActionsBar::IconWidth(false), 524 gfx::Size size(ToolbarActionsBar::IconWidth(false),
522 ToolbarActionsBar::IconHeight()); 525 ToolbarActionsBar::IconHeight());
523 drag_utils::SetDragImageOnDataObject( 526 drag_utils::SetDragImageOnDataObject(
524 view_controller->GetIcon(GetCurrentWebContents(), size).AsImageSkia(), 527 view_controller->GetIcon(GetCurrentWebContents(), size).AsImageSkia(),
525 press_pt.OffsetFromOrigin(), 528 press_pt.OffsetFromOrigin(),
526 data); 529 data);
527 // Fill in the remaining info. 530 // Fill in the remaining info.
528 BrowserActionDragData drag_data(view_controller->GetId(), 531 BrowserActionDragData drag_data(view_controller->GetId(),
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 } 666 }
664 } 667 }
665 668
666 void BrowserActionsContainer::ClearActiveBubble(views::Widget* widget) { 669 void BrowserActionsContainer::ClearActiveBubble(views::Widget* widget) {
667 DCHECK(active_bubble_); 670 DCHECK(active_bubble_);
668 DCHECK_EQ(active_bubble_->GetWidget(), widget); 671 DCHECK_EQ(active_bubble_->GetWidget(), widget);
669 widget->RemoveObserver(this); 672 widget->RemoveObserver(this);
670 active_bubble_ = nullptr; 673 active_bubble_ = nullptr;
671 toolbar_actions_bar_->OnBubbleClosed(); 674 toolbar_actions_bar_->OnBubbleClosed();
672 } 675 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698