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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/extension_warning_set.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_warning_set.cc
diff --git a/chrome/browser/extensions/extension_warning_set.cc b/chrome/browser/extensions/extension_warning_set.cc
index 494b8f8e77190cd8626b9fef987d2f820e7c040e..4d805923d7763ba7727ec6a2d1bf3d735b338ff1 100644
--- a/chrome/browser/extensions/extension_warning_set.cc
+++ b/chrome/browser/extensions/extension_warning_set.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/extensions/extension_warning_set.h"
+#include "base/stl_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/extension_global_error_badge.h"
@@ -201,8 +202,8 @@ const std::string ExtensionWarning::GetMessage(
}
}
-bool operator<(const linked_ptr<ExtensionWarning>& a,
- const linked_ptr<ExtensionWarning>& b) {
+bool ExtensionWarningComparator::operator()(ExtensionWarning* a,
+ ExtensionWarning* b) const {
if (a->extension_id() != b->extension_id())
return a->extension_id() < b->extension_id();
return a->warning_type() < b->warning_type();
@@ -214,14 +215,19 @@ bool operator<(const linked_ptr<ExtensionWarning>& a,
ExtensionWarningSet::ExtensionWarningSet() {}
-ExtensionWarningSet::~ExtensionWarningSet() {}
+ExtensionWarningSet::~ExtensionWarningSet() {
+ // We cannot delete elements that are still in the set because operator<
+ // cannot be executed on freed pointers that are still in the set.
+ std::vector<ExtensionWarning*> tmp(warnings_.begin(), warnings_.end());
+ STLDeleteContainerPointers(tmp.begin(), tmp.end());
+}
void ExtensionWarningSet::Insert(scoped_ptr<ExtensionWarning> warning) {
- warnings_.insert(make_linked_ptr(warning.release()));
+ warnings_.insert(warning.release());
}
-std::set<linked_ptr<ExtensionWarning> > ExtensionWarningSet::Release() {
- std::set<linked_ptr<ExtensionWarning> > other;
+ExtensionWarningSet::Set ExtensionWarningSet::Release() {
+ ExtensionWarningSet::Set other;
warnings_.swap(other);
return other;
}
@@ -239,7 +245,12 @@ ExtensionWarningService::ExtensionWarningService(Profile* profile)
// ExtensionWarningService
//
-ExtensionWarningService::~ExtensionWarningService() {}
+ExtensionWarningService::~ExtensionWarningService() {
+ // We cannot delete elements that are still in the set because operator<
+ // cannot be executed on freed pointers that are still in the set.
+ std::vector<ExtensionWarning*> tmp(warnings_.begin(), warnings_.end());
+ STLDeleteContainerPointers(tmp.begin(), tmp.end());
+}
void ExtensionWarningService::ClearWarnings(
const std::set<ExtensionWarning::WarningType>& types) {
@@ -248,7 +259,9 @@ void ExtensionWarningService::ClearWarnings(
for (iterator i = warnings_.begin(); i != warnings_.end();) {
if (types.find((*i)->warning_type()) != types.end()) {
deleted_anything = true;
+ ExtensionWarning* warning = *i;
warnings_.erase(i++);
+ delete warning;
} else {
++i;
}
@@ -291,7 +304,7 @@ void ExtensionWarningService::AddWarnings(
DCHECK(CalledOnValidThread());
size_t old_size = warnings_.size();
- std::set<linked_ptr<ExtensionWarning> > warning_set = warnings->Release();
+ ExtensionWarningSet::Set warning_set = warnings->Release();
warnings_.insert(warning_set.begin(), warning_set.end());
if (old_size != warnings_.size()) {
« 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