| 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 cc3f817e686d92bca05ed88a08d09dd4b0f3e363..7f4c931243d30ef665ce5ea208053e9782063a87 100644
|
| --- a/chrome/browser/extensions/extension_toolbar_model.cc
|
| +++ b/chrome/browser/extensions/extension_toolbar_model.cc
|
| @@ -394,16 +394,6 @@ void ExtensionToolbarModel::RemoveExtension(const Extension* extension) {
|
| UpdatePrefs();
|
| }
|
|
|
| -void ExtensionToolbarModel::ClearItems() {
|
| - size_t items_count = toolbar_items_.size();
|
| - for (size_t i = 0; i < items_count; ++i) {
|
| - const Extension* extension = toolbar_items_.back().get();
|
| - toolbar_items_.pop_back();
|
| - FOR_EACH_OBSERVER(Observer, observers_, ToolbarExtensionRemoved(extension));
|
| - }
|
| - DCHECK(toolbar_items_.empty());
|
| -}
|
| -
|
| // Combine the currently enabled extensions that have browser actions (which
|
| // we get from the ExtensionRegistry) with the ordering we get from the
|
| // pref service. For robustness we use a somewhat inefficient process:
|
| @@ -575,11 +565,25 @@ void ExtensionToolbarModel::OnExtensionToolbarPrefChange() {
|
| }
|
| last_known_positions_.swap(pref_positions);
|
|
|
| - ClearItems();
|
| + // Clear out the old...
|
| + while (!toolbar_items_.empty()) {
|
| + scoped_refptr<const Extension> extension = toolbar_items_.back();
|
| + toolbar_items_.pop_back();
|
| + FOR_EACH_OBSERVER(
|
| + Observer, observers_, ToolbarExtensionRemoved(extension.get()));
|
| + }
|
| + DCHECK(toolbar_items_.empty());
|
|
|
| - // Re-populate.
|
| + // ...Add the new...
|
| Populate(last_known_positions_);
|
|
|
| + // ...And notify.
|
| + for (size_t i = 0; i < toolbar_items().size(); ++i) {
|
| + FOR_EACH_OBSERVER(Observer,
|
| + observers_,
|
| + ToolbarExtensionAdded(toolbar_items()[i].get(), i));
|
| + }
|
| +
|
| if (last_known_positions_.size() > pref_position_size) {
|
| // Need to update pref because we have extra icons. But can't call
|
| // UpdatePrefs() directly within observation closure.
|
|
|