| 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); | 
| +    } | 
| } | 
| } | 
|  | 
|  |