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

Unified Diff: chrome/browser/extensions/extension_toolbar_model.cc

Issue 661493004: Add infrastructure for Chrome Actions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Abstract away more extensions Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_toolbar_model.cc
diff --git a/chrome/browser/extensions/extension_toolbar_model.cc b/chrome/browser/extensions/extension_toolbar_model.cc
index ac4732989e035a4b21b3cc77fe8aae5398e72d23..c8e110d38d3fe44e95c7c2c3aacf7f3a3ea36b44 100644
--- a/chrome/browser/extensions/extension_toolbar_model.cc
+++ b/chrome/browser/extensions/extension_toolbar_model.cc
@@ -80,19 +80,21 @@ void ExtensionToolbarModel::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
-void ExtensionToolbarModel::MoveExtensionIcon(const Extension* extension,
+void ExtensionToolbarModel::MoveExtensionIcon(const std::string& id,
size_t index) {
- ExtensionList::iterator pos = std::find(toolbar_items_.begin(),
- toolbar_items_.end(), extension);
+ ExtensionList::iterator pos = toolbar_items_.begin();
+ while (pos != toolbar_items_.end() && (*pos)->id() != id)
+ ++pos;
if (pos == toolbar_items_.end()) {
NOTREACHED();
return;
}
+ scoped_refptr<const Extension> extension = *pos;
toolbar_items_.erase(pos);
ExtensionIdList::iterator pos_id = std::find(last_known_positions_.begin(),
last_known_positions_.end(),
- extension->id());
+ id);
if (pos_id != last_known_positions_.end())
last_known_positions_.erase(pos_id);
@@ -104,19 +106,19 @@ void ExtensionToolbarModel::MoveExtensionIcon(const Extension* extension,
last_known_positions_.insert(std::find(last_known_positions_.begin(),
last_known_positions_.end(),
(*iter)->id()),
- extension->id());
+ id);
toolbar_items_.insert(iter, extension);
} else {
// Otherwise, put |extension| at the end.
DCHECK_EQ(toolbar_items_.size(), index);
index = toolbar_items_.size();
- toolbar_items_.push_back(make_scoped_refptr(extension));
- last_known_positions_.push_back(extension->id());
+ toolbar_items_.push_back(extension);
+ last_known_positions_.push_back(id);
}
FOR_EACH_OBSERVER(
- Observer, observers_, ToolbarExtensionMoved(extension, index));
- MaybeUpdateVisibilityPref(extension, index);
+ Observer, observers_, ToolbarExtensionMoved(extension.get(), index));
+ MaybeUpdateVisibilityPref(extension.get(), index);
UpdatePrefs();
}
@@ -228,7 +230,7 @@ void ExtensionToolbarModel::Observe(
new_index = new_size;
}
SetVisibleIconCount(new_size);
- MoveExtensionIcon(extension, new_index);
+ MoveExtensionIcon(extension->id(), new_index);
} else { // Don't include all extensions.
if (visible)
AddExtension(extension);
@@ -602,7 +604,7 @@ void ExtensionToolbarModel::EnsureVisibility(
extension != toolbar_items_.end(); ++extension) {
if ((*extension)->id() == (*it)) {
if (extension - toolbar_items_.begin() >= visible_icon_count_)
- MoveExtensionIcon(extension->get(), 0);
+ MoveExtensionIcon((*extension)->id(), 0);
break;
}
}

Powered by Google App Engine
This is Rietveld 408576698