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

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

Issue 10909096: Remove use of linked_ptr from ExtensionWarningSet Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/extensions/extension_warning_set.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_warning_set.h" 5 #include "chrome/browser/extensions/extension_warning_set.h"
6 6
7 #include "base/stl_util.h"
7 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/extensions/extension_global_error_badge.h" 10 #include "chrome/browser/extensions/extension_global_error_badge.h"
10 #include "chrome/browser/extensions/extension_service.h" 11 #include "chrome/browser/extensions/extension_service.h"
11 #include "chrome/browser/extensions/extension_system.h" 12 #include "chrome/browser/extensions/extension_system.h"
12 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/profiles/profile_manager.h" 14 #include "chrome/browser/profiles/profile_manager.h"
14 #include "chrome/browser/ui/global_error/global_error_service.h" 15 #include "chrome/browser/ui/global_error/global_error_service.h"
15 #include "chrome/browser/ui/global_error/global_error_service_factory.h" 16 #include "chrome/browser/ui/global_error/global_error_service_factory.h"
16 #include "chrome/common/chrome_notification_types.h" 17 #include "chrome/common/chrome_notification_types.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 final_parameters[1], final_parameters[2]); 195 final_parameters[1], final_parameters[2]);
195 case 4: 196 case 4:
196 return l10n_util::GetStringFUTF8(message_id_, final_parameters[0], 197 return l10n_util::GetStringFUTF8(message_id_, final_parameters[0],
197 final_parameters[1], final_parameters[2], final_parameters[3]); 198 final_parameters[1], final_parameters[2], final_parameters[3]);
198 default: 199 default:
199 NOTREACHED(); 200 NOTREACHED();
200 return std::string(); 201 return std::string();
201 } 202 }
202 } 203 }
203 204
204 bool operator<(const linked_ptr<ExtensionWarning>& a, 205 bool ExtensionWarningComparator::operator()(ExtensionWarning* a,
205 const linked_ptr<ExtensionWarning>& b) { 206 ExtensionWarning* b) const {
206 if (a->extension_id() != b->extension_id()) 207 if (a->extension_id() != b->extension_id())
207 return a->extension_id() < b->extension_id(); 208 return a->extension_id() < b->extension_id();
208 return a->warning_type() < b->warning_type(); 209 return a->warning_type() < b->warning_type();
209 } 210 }
210 211
211 // 212 //
212 // ExtensionWarningSet 213 // ExtensionWarningSet
213 // 214 //
214 215
215 ExtensionWarningSet::ExtensionWarningSet() {} 216 ExtensionWarningSet::ExtensionWarningSet() {}
216 217
217 ExtensionWarningSet::~ExtensionWarningSet() {} 218 ExtensionWarningSet::~ExtensionWarningSet() {
219 // We cannot delete elements that are still in the set because operator<
220 // cannot be executed on freed pointers that are still in the set.
221 std::vector<ExtensionWarning*> tmp(warnings_.begin(), warnings_.end());
222 STLDeleteContainerPointers(tmp.begin(), tmp.end());
223 }
218 224
219 void ExtensionWarningSet::Insert(scoped_ptr<ExtensionWarning> warning) { 225 void ExtensionWarningSet::Insert(scoped_ptr<ExtensionWarning> warning) {
220 warnings_.insert(make_linked_ptr(warning.release())); 226 warnings_.insert(warning.release());
221 } 227 }
222 228
223 std::set<linked_ptr<ExtensionWarning> > ExtensionWarningSet::Release() { 229 ExtensionWarningSet::Set ExtensionWarningSet::Release() {
224 std::set<linked_ptr<ExtensionWarning> > other; 230 ExtensionWarningSet::Set other;
225 warnings_.swap(other); 231 warnings_.swap(other);
226 return other; 232 return other;
227 } 233 }
228 234
229 bool ExtensionWarningSet::IsEmpty() const { 235 bool ExtensionWarningSet::IsEmpty() const {
230 return warnings_.empty(); 236 return warnings_.empty();
231 } 237 }
232 238
233 ExtensionWarningService::ExtensionWarningService(Profile* profile) 239 ExtensionWarningService::ExtensionWarningService(Profile* profile)
234 : profile_(profile) { 240 : profile_(profile) {
235 DCHECK(CalledOnValidThread()); 241 DCHECK(CalledOnValidThread());
236 } 242 }
237 243
238 // 244 //
239 // ExtensionWarningService 245 // ExtensionWarningService
240 // 246 //
241 247
242 ExtensionWarningService::~ExtensionWarningService() {} 248 ExtensionWarningService::~ExtensionWarningService() {
249 // We cannot delete elements that are still in the set because operator<
250 // cannot be executed on freed pointers that are still in the set.
251 std::vector<ExtensionWarning*> tmp(warnings_.begin(), warnings_.end());
252 STLDeleteContainerPointers(tmp.begin(), tmp.end());
253 }
243 254
244 void ExtensionWarningService::ClearWarnings( 255 void ExtensionWarningService::ClearWarnings(
245 const std::set<ExtensionWarning::WarningType>& types) { 256 const std::set<ExtensionWarning::WarningType>& types) {
246 DCHECK(CalledOnValidThread()); 257 DCHECK(CalledOnValidThread());
247 bool deleted_anything = false; 258 bool deleted_anything = false;
248 for (iterator i = warnings_.begin(); i != warnings_.end();) { 259 for (iterator i = warnings_.begin(); i != warnings_.end();) {
249 if (types.find((*i)->warning_type()) != types.end()) { 260 if (types.find((*i)->warning_type()) != types.end()) {
250 deleted_anything = true; 261 deleted_anything = true;
262 ExtensionWarning* warning = *i;
251 warnings_.erase(i++); 263 warnings_.erase(i++);
264 delete warning;
252 } else { 265 } else {
253 ++i; 266 ++i;
254 } 267 }
255 } 268 }
256 269
257 if (deleted_anything) { 270 if (deleted_anything) {
258 NotifyWarningsChanged(); 271 NotifyWarningsChanged();
259 UpdateWarningBadge(); 272 UpdateWarningBadge();
260 } 273 }
261 } 274 }
(...skipping 22 matching lines...) Expand all
284 if ((*i)->extension_id() == extension_id) 297 if ((*i)->extension_id() == extension_id)
285 result->push_back((*i)->GetMessage(extension_service)); 298 result->push_back((*i)->GetMessage(extension_service));
286 } 299 }
287 } 300 }
288 301
289 void ExtensionWarningService::AddWarnings( 302 void ExtensionWarningService::AddWarnings(
290 scoped_ptr<ExtensionWarningSet> warnings) { 303 scoped_ptr<ExtensionWarningSet> warnings) {
291 DCHECK(CalledOnValidThread()); 304 DCHECK(CalledOnValidThread());
292 size_t old_size = warnings_.size(); 305 size_t old_size = warnings_.size();
293 306
294 std::set<linked_ptr<ExtensionWarning> > warning_set = warnings->Release(); 307 ExtensionWarningSet::Set warning_set = warnings->Release();
295 warnings_.insert(warning_set.begin(), warning_set.end()); 308 warnings_.insert(warning_set.begin(), warning_set.end());
296 309
297 if (old_size != warnings_.size()) { 310 if (old_size != warnings_.size()) {
298 NotifyWarningsChanged(); 311 NotifyWarningsChanged();
299 UpdateWarningBadge(); 312 UpdateWarningBadge();
300 } 313 }
301 } 314 }
302 315
303 // static 316 // static
304 void ExtensionWarningService::NotifyWarningsOnUI( 317 void ExtensionWarningService::NotifyWarningsOnUI(
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 // Activate or hide the warning badge in case the current state is incorrect. 364 // Activate or hide the warning badge in case the current state is incorrect.
352 if (error && !need_warning_badge) { 365 if (error && !need_warning_badge) {
353 service->RemoveGlobalError(error); 366 service->RemoveGlobalError(error);
354 delete error; 367 delete error;
355 } else if (!error && need_warning_badge) { 368 } else if (!error && need_warning_badge) {
356 service->AddGlobalError(new ExtensionGlobalErrorBadge); 369 service->AddGlobalError(new ExtensionGlobalErrorBadge);
357 } 370 }
358 } 371 }
359 372
360 } // namespace extensions 373 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_warning_set.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698