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

Side by Side Diff: chrome/browser/extensions/extension_toolbar_model.cc

Issue 988633002: [CLEANUP] Rename some methods of ExtensionToolbarModel to be OnFoo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 #include "chrome/browser/extensions/extension_toolbar_model.h" 5 #include "chrome/browser/extensions/extension_toolbar_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 id); 108 id);
109 toolbar_items_.insert(iter, extension); 109 toolbar_items_.insert(iter, extension);
110 } else { 110 } else {
111 // Otherwise, put |extension| at the end. 111 // Otherwise, put |extension| at the end.
112 DCHECK_EQ(toolbar_items_.size(), index); 112 DCHECK_EQ(toolbar_items_.size(), index);
113 index = toolbar_items_.size(); 113 index = toolbar_items_.size();
114 toolbar_items_.push_back(extension); 114 toolbar_items_.push_back(extension);
115 last_known_positions_.push_back(id); 115 last_known_positions_.push_back(id);
116 } 116 }
117 117
118 FOR_EACH_OBSERVER( 118 FOR_EACH_OBSERVER(Observer, observers_,
119 Observer, observers_, ToolbarExtensionMoved(extension.get(), index)); 119 OnToolbarExtensionMoved(extension.get(), index));
120 MaybeUpdateVisibilityPref(extension.get(), index); 120 MaybeUpdateVisibilityPref(extension.get(), index);
121 UpdatePrefs(); 121 UpdatePrefs();
122 } 122 }
123 123
124 void ExtensionToolbarModel::SetVisibleIconCount(size_t count) { 124 void ExtensionToolbarModel::SetVisibleIconCount(size_t count) {
125 visible_icon_count_ = (count >= toolbar_items_.size()) ? -1 : count; 125 visible_icon_count_ = (count >= toolbar_items_.size()) ? -1 : count;
126 126
127 // Only set the prefs if we're not in highlight mode and the profile is not 127 // Only set the prefs if we're not in highlight mode and the profile is not
128 // incognito. Highlight mode is designed to be a transitory state, and should 128 // incognito. Highlight mode is designed to be a transitory state, and should
129 // not persist across browser restarts (though it may be re-entered), and we 129 // not persist across browser restarts (though it may be re-entered), and we
130 // don't store anything in incognito. 130 // don't store anything in incognito.
131 if (!is_highlighting_ && !profile_->IsOffTheRecord()) { 131 if (!is_highlighting_ && !profile_->IsOffTheRecord()) {
132 // Additionally, if we are using the new toolbar, any icons which are in the 132 // Additionally, if we are using the new toolbar, any icons which are in the
133 // overflow menu are considered "hidden". But it so happens that the times 133 // overflow menu are considered "hidden". But it so happens that the times
134 // we are likely to call SetVisibleIconCount() are also those when we are 134 // we are likely to call SetVisibleIconCount() are also those when we are
135 // in flux. So wait for things to cool down before setting the prefs. 135 // in flux. So wait for things to cool down before setting the prefs.
136 base::MessageLoop::current()->PostTask( 136 base::MessageLoop::current()->PostTask(
137 FROM_HERE, 137 FROM_HERE,
138 base::Bind(&ExtensionToolbarModel::MaybeUpdateVisibilityPrefs, 138 base::Bind(&ExtensionToolbarModel::MaybeUpdateVisibilityPrefs,
139 weak_ptr_factory_.GetWeakPtr())); 139 weak_ptr_factory_.GetWeakPtr()));
140 prefs_->SetInteger(pref_names::kToolbarSize, visible_icon_count_); 140 prefs_->SetInteger(pref_names::kToolbarSize, visible_icon_count_);
141 } 141 }
142 142
143 FOR_EACH_OBSERVER(Observer, observers_, ToolbarVisibleCountChanged()); 143 FOR_EACH_OBSERVER(Observer, observers_, OnToolbarVisibleCountChanged());
144 } 144 }
145 145
146 void ExtensionToolbarModel::OnExtensionActionUpdated( 146 void ExtensionToolbarModel::OnExtensionActionUpdated(
147 ExtensionAction* extension_action, 147 ExtensionAction* extension_action,
148 content::WebContents* web_contents, 148 content::WebContents* web_contents,
149 content::BrowserContext* browser_context) { 149 content::BrowserContext* browser_context) {
150 const Extension* extension = 150 const Extension* extension =
151 ExtensionRegistry::Get(profile_)->enabled_extensions().GetByID( 151 ExtensionRegistry::Get(profile_)->enabled_extensions().GetByID(
152 extension_action->extension_id()); 152 extension_action->extension_id());
153 // Notify observers if the extension exists and is in the model. 153 // Notify observers if the extension exists and is in the model.
154 if (std::find(toolbar_items_.begin(), toolbar_items_.end(), extension) != 154 if (std::find(toolbar_items_.begin(), toolbar_items_.end(), extension) !=
155 toolbar_items_.end()) { 155 toolbar_items_.end()) {
156 FOR_EACH_OBSERVER( 156 FOR_EACH_OBSERVER(Observer, observers_,
157 Observer, observers_, ToolbarExtensionUpdated(extension)); 157 OnToolbarExtensionUpdated(extension));
158 } 158 }
159 } 159 }
160 160
161 void ExtensionToolbarModel::OnExtensionLoaded( 161 void ExtensionToolbarModel::OnExtensionLoaded(
162 content::BrowserContext* browser_context, 162 content::BrowserContext* browser_context,
163 const Extension* extension) { 163 const Extension* extension) {
164 // We don't want to add the same extension twice. It may have already been 164 // We don't want to add the same extension twice. It may have already been
165 // added by EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED below, if the user 165 // added by EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED below, if the user
166 // hides the browser action and then disables and enables the extension. 166 // hides the browser action and then disables and enables the extension.
167 for (size_t i = 0; i < toolbar_items_.size(); i++) { 167 for (size_t i = 0; i < toolbar_items_.size(); i++) {
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 } else { 340 } else {
341 new_index = FindNewPositionFromLastKnownGood(extension); 341 new_index = FindNewPositionFromLastKnownGood(extension);
342 } 342 }
343 343
344 toolbar_items_.insert(toolbar_items_.begin() + new_index, extension); 344 toolbar_items_.insert(toolbar_items_.begin() + new_index, extension);
345 345
346 // If we're currently highlighting, then even though we add a browser action 346 // If we're currently highlighting, then even though we add a browser action
347 // to the full list (|toolbar_items_|, there won't be another *visible* 347 // to the full list (|toolbar_items_|, there won't be another *visible*
348 // browser action, which was what the observers care about. 348 // browser action, which was what the observers care about.
349 if (!is_highlighting_) { 349 if (!is_highlighting_) {
350 FOR_EACH_OBSERVER( 350 FOR_EACH_OBSERVER(Observer, observers_,
351 Observer, observers_, ToolbarExtensionAdded(extension, new_index)); 351 OnToolbarExtensionAdded(extension, new_index));
352 352
353 int visible_count_delta = 0; 353 int visible_count_delta = 0;
354 if (is_new_extension && !all_icons_visible()) { 354 if (is_new_extension && !all_icons_visible()) {
355 // If this is a new extension (and not all extensions are visible), we 355 // If this is a new extension (and not all extensions are visible), we
356 // expand the toolbar out so that the new one can be seen. 356 // expand the toolbar out so that the new one can be seen.
357 visible_count_delta = 1; 357 visible_count_delta = 1;
358 } else if (profile_->IsOffTheRecord()) { 358 } else if (profile_->IsOffTheRecord()) {
359 // If this is an incognito profile, we also have to check to make sure the 359 // If this is an incognito profile, we also have to check to make sure the
360 // overflow matches the main bar's status. 360 // overflow matches the main bar's status.
361 ExtensionToolbarModel* main_model = 361 ExtensionToolbarModel* main_model =
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 toolbar_items_.erase(pos); 395 toolbar_items_.erase(pos);
396 396
397 // If we're in highlight mode, we also have to remove the extension from 397 // If we're in highlight mode, we also have to remove the extension from
398 // the highlighted list. 398 // the highlighted list.
399 if (is_highlighting_) { 399 if (is_highlighting_) {
400 pos = std::find(highlighted_items_.begin(), 400 pos = std::find(highlighted_items_.begin(),
401 highlighted_items_.end(), 401 highlighted_items_.end(),
402 extension); 402 extension);
403 if (pos != highlighted_items_.end()) { 403 if (pos != highlighted_items_.end()) {
404 highlighted_items_.erase(pos); 404 highlighted_items_.erase(pos);
405 FOR_EACH_OBSERVER( 405 FOR_EACH_OBSERVER(Observer, observers_,
406 Observer, observers_, ToolbarExtensionRemoved(extension)); 406 OnToolbarExtensionRemoved(extension));
407 // If the highlighted list is now empty, we stop highlighting. 407 // If the highlighted list is now empty, we stop highlighting.
408 if (highlighted_items_.empty()) 408 if (highlighted_items_.empty())
409 StopHighlighting(); 409 StopHighlighting();
410 } 410 }
411 } else { 411 } else {
412 FOR_EACH_OBSERVER(Observer, observers_, ToolbarExtensionRemoved(extension)); 412 FOR_EACH_OBSERVER(Observer, observers_,
413 OnToolbarExtensionRemoved(extension));
413 } 414 }
414 415
415 UpdatePrefs(); 416 UpdatePrefs();
416 } 417 }
417 418
418 // Combine the currently enabled extensions that have browser actions (which 419 // Combine the currently enabled extensions that have browser actions (which
419 // we get from the ExtensionRegistry) with the ordering we get from the 420 // we get from the ExtensionRegistry) with the ordering we get from the
420 // pref service. For robustness we use a somewhat inefficient process: 421 // pref service. For robustness we use a somewhat inefficient process:
421 // 1. Create a vector of extensions sorted by their pref values. This vector may 422 // 1. Create a vector of extensions sorted by their pref values. This vector may
422 // have holes. 423 // have holes.
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 last_known_positions_[i]) == pref_positions.end()) { 588 last_known_positions_[i]) == pref_positions.end()) {
588 pref_positions.push_back(last_known_positions_[i]); 589 pref_positions.push_back(last_known_positions_[i]);
589 } 590 }
590 } 591 }
591 last_known_positions_.swap(pref_positions); 592 last_known_positions_.swap(pref_positions);
592 593
593 // Clear out the old... 594 // Clear out the old...
594 while (!toolbar_items_.empty()) { 595 while (!toolbar_items_.empty()) {
595 scoped_refptr<const Extension> extension = toolbar_items_.back(); 596 scoped_refptr<const Extension> extension = toolbar_items_.back();
596 toolbar_items_.pop_back(); 597 toolbar_items_.pop_back();
597 FOR_EACH_OBSERVER( 598 FOR_EACH_OBSERVER(Observer, observers_,
598 Observer, observers_, ToolbarExtensionRemoved(extension.get())); 599 OnToolbarExtensionRemoved(extension.get()));
599 } 600 }
600 DCHECK(toolbar_items_.empty()); 601 DCHECK(toolbar_items_.empty());
601 602
602 // ...Add the new... 603 // ...Add the new...
603 Populate(&last_known_positions_); 604 Populate(&last_known_positions_);
604 605
605 // ...And notify. 606 // ...And notify.
606 for (size_t i = 0; i < toolbar_items().size(); ++i) { 607 for (size_t i = 0; i < toolbar_items().size(); ++i) {
607 FOR_EACH_OBSERVER(Observer, 608 FOR_EACH_OBSERVER(Observer, observers_,
608 observers_, 609 OnToolbarExtensionAdded(toolbar_items()[i].get(), i));
609 ToolbarExtensionAdded(toolbar_items()[i].get(), i));
610 } 610 }
611 611
612 if (last_known_positions_.size() > pref_position_size) { 612 if (last_known_positions_.size() > pref_position_size) {
613 // Need to update pref because we have extra icons. But can't call 613 // Need to update pref because we have extra icons. But can't call
614 // UpdatePrefs() directly within observation closure. 614 // UpdatePrefs() directly within observation closure.
615 base::MessageLoop::current()->PostTask( 615 base::MessageLoop::current()->PostTask(
616 FROM_HERE, 616 FROM_HERE,
617 base::Bind(&ExtensionToolbarModel::UpdatePrefs, 617 base::Bind(&ExtensionToolbarModel::UpdatePrefs,
618 weak_ptr_factory_.GetWeakPtr())); 618 weak_ptr_factory_.GetWeakPtr()));
619 } 619 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 } 687 }
688 688
689 // If we have any items in |highlighted_items_|, then we entered highlighting 689 // If we have any items in |highlighted_items_|, then we entered highlighting
690 // mode. 690 // mode.
691 if (highlighted_items_.size()) { 691 if (highlighted_items_.size()) {
692 old_visible_icon_count_ = visible_icon_count_; 692 old_visible_icon_count_ = visible_icon_count_;
693 is_highlighting_ = true; 693 is_highlighting_ = true;
694 if (visible_icon_count() < extension_ids.size()) 694 if (visible_icon_count() < extension_ids.size())
695 SetVisibleIconCount(extension_ids.size()); 695 SetVisibleIconCount(extension_ids.size());
696 696
697 FOR_EACH_OBSERVER(Observer, observers_, ToolbarHighlightModeChanged(true)); 697 FOR_EACH_OBSERVER(Observer, observers_,
698 OnToolbarHighlightModeChanged(true));
698 return true; 699 return true;
699 } 700 }
700 701
701 // Otherwise, we didn't enter highlighting mode (and, in fact, exited it if 702 // Otherwise, we didn't enter highlighting mode (and, in fact, exited it if
702 // we were otherwise in it). 703 // we were otherwise in it).
703 if (is_highlighting_) 704 if (is_highlighting_)
704 StopHighlighting(); 705 StopHighlighting();
705 return false; 706 return false;
706 } 707 }
707 708
708 void ExtensionToolbarModel::StopHighlighting() { 709 void ExtensionToolbarModel::StopHighlighting() {
709 if (is_highlighting_) { 710 if (is_highlighting_) {
710 highlighted_items_.clear(); 711 highlighted_items_.clear();
711 is_highlighting_ = false; 712 is_highlighting_ = false;
712 if (old_visible_icon_count_ != visible_icon_count_) 713 if (old_visible_icon_count_ != visible_icon_count_)
713 SetVisibleIconCount(old_visible_icon_count_); 714 SetVisibleIconCount(old_visible_icon_count_);
714 FOR_EACH_OBSERVER(Observer, observers_, ToolbarHighlightModeChanged(false)); 715 FOR_EACH_OBSERVER(Observer, observers_,
716 OnToolbarHighlightModeChanged(false));
715 } 717 }
716 } 718 }
717 719
718 } // namespace extensions 720 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_toolbar_model.h ('k') | chrome/browser/extensions/extension_toolbar_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698