Index: extensions/browser/error_map.cc |
diff --git a/extensions/browser/error_map.cc b/extensions/browser/error_map.cc |
index 0495ae0841cdf359c0999ffcd5996ecf822da6c2..b0083a89fb7f498ec2f3a7dcd1b157f9c9da3c77 100644 |
--- a/extensions/browser/error_map.cc |
+++ b/extensions/browser/error_map.cc |
@@ -87,7 +87,8 @@ class ErrorMap::ExtensionEntry { |
// Delete any errors in the entry that match the given ids and type, if |
// provided. |
- void DeleteErrors(const ErrorMap::Filter& filter); |
+ // Returns true if any errors were deleted. |
+ bool DeleteErrors(const ErrorMap::Filter& filter); |
// Delete all errors in the entry. |
void DeleteAllErrors(); |
@@ -112,15 +113,18 @@ ErrorMap::ExtensionEntry::~ExtensionEntry() { |
DeleteAllErrors(); |
} |
-void ErrorMap::ExtensionEntry::DeleteErrors(const Filter& filter) { |
+bool ErrorMap::ExtensionEntry::DeleteErrors(const Filter& filter) { |
+ bool deleted = false; |
for (ErrorList::iterator iter = list_.begin(); iter != list_.end();) { |
if (filter.Matches(*iter)) { |
delete *iter; |
iter = list_.erase(iter); |
+ deleted = true; |
} else { |
++iter; |
} |
} |
+ return deleted; |
} |
void ErrorMap::ExtensionEntry::DeleteAllErrors() { |
@@ -182,14 +186,19 @@ const ExtensionError* ErrorMap::AddError(scoped_ptr<ExtensionError> error) { |
return iter->second->AddError(error.Pass()); |
} |
-void ErrorMap::RemoveErrors(const Filter& filter) { |
+void ErrorMap::RemoveErrors(const Filter& filter, |
+ std::set<std::string>* affected_ids) { |
if (!filter.restrict_to_extension_id.empty()) { |
EntryMap::iterator iter = map_.find(filter.restrict_to_extension_id); |
- if (iter != map_.end()) |
- iter->second->DeleteErrors(filter); |
+ if (iter != map_.end()) { |
+ if (iter->second->DeleteErrors(filter) && affected_ids) |
+ affected_ids->insert(filter.restrict_to_extension_id); |
+ } |
} else { |
- for (auto& key_val : map_) |
- key_val.second->DeleteErrors(filter); |
+ for (auto& key_val : map_) { |
+ if (key_val.second->DeleteErrors(filter) && affected_ids) |
+ affected_ids->insert(key_val.first); |
+ } |
} |
} |