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

Unified Diff: extensions/common/extension_set.cc

Issue 1293673002: Create thread-safe RendererExtensionRegistry from ExtensionSet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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
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;

Powered by Google App Engine
This is Rietveld 408576698