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; |