OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/extensions/extension_prefs.h" | 7 #include "chrome/browser/extensions/extension_prefs.h" |
8 #include "chrome/browser/extensions/extensions_service.h" | 8 #include "chrome/browser/extensions/extensions_service.h" |
9 #include "chrome/browser/prefs/pref_service.h" | 9 #include "chrome/browser/prefs/pref_service.h" |
10 #include "chrome/browser/profile.h" | 10 #include "chrome/browser/profile.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 if (pos == end()) { | 51 if (pos == end()) { |
52 NOTREACHED(); | 52 NOTREACHED(); |
53 return; | 53 return; |
54 } | 54 } |
55 toolitems_.erase(pos); | 55 toolitems_.erase(pos); |
56 | 56 |
57 int i = 0; | 57 int i = 0; |
58 bool inserted = false; | 58 bool inserted = false; |
59 for (ExtensionList::iterator iter = begin(); iter != end(); ++iter, ++i) { | 59 for (ExtensionList::iterator iter = begin(); iter != end(); ++iter, ++i) { |
60 if (i == index) { | 60 if (i == index) { |
61 toolitems_.insert(iter, extension); | 61 toolitems_.insert(iter, make_scoped_refptr(extension)); |
62 inserted = true; | 62 inserted = true; |
63 break; | 63 break; |
64 } | 64 } |
65 } | 65 } |
66 | 66 |
67 if (!inserted) { | 67 if (!inserted) { |
68 DCHECK_EQ(index, static_cast<int>(toolitems_.size())); | 68 DCHECK_EQ(index, static_cast<int>(toolitems_.size())); |
69 index = toolitems_.size(); | 69 index = toolitems_.size(); |
70 | 70 |
71 toolitems_.push_back(extension); | 71 toolitems_.push_back(make_scoped_refptr(extension)); |
72 } | 72 } |
73 | 73 |
74 FOR_EACH_OBSERVER(Observer, observers_, BrowserActionMoved(extension, index)); | 74 FOR_EACH_OBSERVER(Observer, observers_, BrowserActionMoved(extension, index)); |
75 | 75 |
76 UpdatePrefs(); | 76 UpdatePrefs(); |
77 } | 77 } |
78 | 78 |
79 void ExtensionToolbarModel::SetVisibleIconCount(int count) { | 79 void ExtensionToolbarModel::SetVisibleIconCount(int count) { |
80 visible_icon_count_ = count == static_cast<int>(size()) ? -1 : count; | 80 visible_icon_count_ = count == static_cast<int>(size()) ? -1 : count; |
81 prefs_->SetInteger(prefs::kExtensionToolbarSize, visible_icon_count_); | 81 prefs_->SetInteger(prefs::kExtensionToolbarSize, visible_icon_count_); |
(...skipping 22 matching lines...) Expand all Loading... |
104 } | 104 } |
105 } | 105 } |
106 | 106 |
107 void ExtensionToolbarModel::AddExtension(const Extension* extension) { | 107 void ExtensionToolbarModel::AddExtension(const Extension* extension) { |
108 // We only care about extensions with browser actions. | 108 // We only care about extensions with browser actions. |
109 if (!extension->browser_action()) | 109 if (!extension->browser_action()) |
110 return; | 110 return; |
111 | 111 |
112 if (extension->id() == last_extension_removed_ && | 112 if (extension->id() == last_extension_removed_ && |
113 last_extension_removed_index_ < toolitems_.size()) { | 113 last_extension_removed_index_ < toolitems_.size()) { |
114 toolitems_.insert(begin() + last_extension_removed_index_, extension); | 114 toolitems_.insert(begin() + last_extension_removed_index_, |
| 115 make_scoped_refptr(extension)); |
115 FOR_EACH_OBSERVER(Observer, observers_, | 116 FOR_EACH_OBSERVER(Observer, observers_, |
116 BrowserActionAdded(extension, last_extension_removed_index_)); | 117 BrowserActionAdded(extension, last_extension_removed_index_)); |
117 } else { | 118 } else { |
118 toolitems_.push_back(extension); | 119 toolitems_.push_back(make_scoped_refptr(extension)); |
119 FOR_EACH_OBSERVER(Observer, observers_, | 120 FOR_EACH_OBSERVER(Observer, observers_, |
120 BrowserActionAdded(extension, toolitems_.size() - 1)); | 121 BrowserActionAdded(extension, toolitems_.size() - 1)); |
121 } | 122 } |
122 | 123 |
123 last_extension_removed_ = ""; | 124 last_extension_removed_ = ""; |
124 last_extension_removed_index_ = -1; | 125 last_extension_removed_index_ = -1; |
125 | 126 |
126 UpdatePrefs(); | 127 UpdatePrefs(); |
127 } | 128 } |
128 | 129 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 const Extension* extension = service_->extensions()->at(i); | 166 const Extension* extension = service_->extensions()->at(i); |
166 if (!extension->browser_action()) | 167 if (!extension->browser_action()) |
167 continue; | 168 continue; |
168 | 169 |
169 std::vector<std::string>::iterator pos = | 170 std::vector<std::string>::iterator pos = |
170 std::find(pref_order.begin(), pref_order.end(), extension->id()); | 171 std::find(pref_order.begin(), pref_order.end(), extension->id()); |
171 if (pos != pref_order.end()) { | 172 if (pos != pref_order.end()) { |
172 int index = std::distance(pref_order.begin(), pos); | 173 int index = std::distance(pref_order.begin(), pos); |
173 sorted[index] = extension; | 174 sorted[index] = extension; |
174 } else { | 175 } else { |
175 unsorted.push_back(extension); | 176 unsorted.push_back(make_scoped_refptr(extension)); |
176 } | 177 } |
177 } | 178 } |
178 | 179 |
179 // Merge the lists. | 180 // Merge the lists. |
180 toolitems_.reserve(sorted.size() + unsorted.size()); | 181 toolitems_.reserve(sorted.size() + unsorted.size()); |
181 for (ExtensionList::iterator iter = sorted.begin(); | 182 for (ExtensionList::iterator iter = sorted.begin(); |
182 iter != sorted.end(); ++iter) { | 183 iter != sorted.end(); ++iter) { |
183 if (*iter != NULL) | 184 if (*iter != NULL) |
184 toolitems_.push_back(*iter); | 185 toolitems_.push_back(*iter); |
185 } | 186 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 int incognito_index = 0, i = 0; | 230 int incognito_index = 0, i = 0; |
230 for (ExtensionList::iterator iter = begin(); iter != end(); | 231 for (ExtensionList::iterator iter = begin(); iter != end(); |
231 ++iter, ++i) { | 232 ++iter, ++i) { |
232 if (original_index == i) | 233 if (original_index == i) |
233 break; | 234 break; |
234 if (service_->IsIncognitoEnabled(*iter)) | 235 if (service_->IsIncognitoEnabled(*iter)) |
235 ++incognito_index; | 236 ++incognito_index; |
236 } | 237 } |
237 return incognito_index; | 238 return incognito_index; |
238 } | 239 } |
OLD | NEW |