Chromium Code Reviews| Index: extensions/common/extension_set.cc |
| diff --git a/extensions/common/extension_set.cc b/extensions/common/extension_set.cc |
| index c4c15d4e1f2bc3b8f291f590f7be0b109a21583e..ec98757171efe5995f7af82919bd8a5411738aeb 100644 |
| --- a/extensions/common/extension_set.cc |
| +++ b/extensions/common/extension_set.cc |
| @@ -44,6 +44,7 @@ bool ExtensionSet::Contains(const std::string& extension_id) const { |
| } |
| bool ExtensionSet::Insert(const scoped_refptr<const Extension>& extension) { |
| + base::AutoLock auto_lock(runtime_lock_); |
|
not at google - send to devlin
2015/08/13 23:33:55
I think we'll need the lock over every method, not
|
| bool was_present = ContainsKey(extensions_, extension->id()); |
| extensions_[extension->id()] = extension; |
| if (!was_present && !modification_callback_.is_null()) |
| @@ -61,6 +62,7 @@ bool ExtensionSet::InsertAll(const ExtensionSet& extensions) { |
| } |
| bool ExtensionSet::Remove(const std::string& id) { |
| + base::AutoLock auto_lock(runtime_lock_); |
| bool was_present = extensions_.erase(id) > 0; |
| if (was_present && !modification_callback_.is_null()) |
| modification_callback_.Run(GetIDs()); |
| @@ -68,6 +70,7 @@ bool ExtensionSet::Remove(const std::string& id) { |
| } |
| void ExtensionSet::Clear() { |
| + base::AutoLock auto_lock(runtime_lock_); |
| extensions_.clear(); |
| } |
| @@ -95,6 +98,7 @@ const Extension* ExtensionSet::GetAppByURL(const GURL& url) const { |
| } |
| const Extension* ExtensionSet::GetHostedAppByURL(const GURL& url) const { |
| + base::AutoLock auto_lock(runtime_lock_); |
| for (ExtensionMap::const_iterator iter = extensions_.begin(); |
| iter != extensions_.end(); ++iter) { |
| if (iter->second->web_extent().MatchesURL(url)) |
| @@ -106,6 +110,7 @@ const Extension* ExtensionSet::GetHostedAppByURL(const GURL& url) const { |
| const Extension* ExtensionSet::GetHostedAppByOverlappingWebExtent( |
| const URLPatternSet& extent) const { |
| + base::AutoLock auto_lock(runtime_lock_); |
| for (ExtensionMap::const_iterator iter = extensions_.begin(); |
| iter != extensions_.end(); ++iter) { |
| if (iter->second->web_extent().OverlapsWith(extent)) |
| @@ -122,6 +127,7 @@ bool ExtensionSet::InSameExtent(const GURL& old_url, |
| } |
| const Extension* ExtensionSet::GetByID(const std::string& id) const { |
| + base::AutoLock auto_lock(runtime_lock_); |
| ExtensionMap::const_iterator i = extensions_.find(id); |
| if (i != extensions_.end()) |
| return i->second.get(); |
| @@ -130,6 +136,7 @@ const Extension* ExtensionSet::GetByID(const std::string& id) const { |
| } |
| ExtensionIdSet ExtensionSet::GetIDs() const { |
| + base::AutoLock auto_lock(runtime_lock_); |
| ExtensionIdSet ids; |
| for (ExtensionMap::const_iterator it = extensions_.begin(); |
| it != extensions_.end(); ++it) { |
| @@ -139,6 +146,7 @@ ExtensionIdSet ExtensionSet::GetIDs() const { |
| } |
| bool ExtensionSet::ExtensionBindingsAllowed(const GURL& url) const { |
| + base::AutoLock auto_lock(runtime_lock_); |
| if (url.SchemeIs(kExtensionScheme)) |
| return true; |