Chromium Code Reviews| Index: chrome/browser/extensions/extension_info_map.cc |
| diff --git a/chrome/browser/extensions/extension_info_map.cc b/chrome/browser/extensions/extension_info_map.cc |
| index 50d75d508f450f2ec12a0e452efda055414433c0..0b33389e240564b8fe0d96c1d39abe1f3c0926b1 100644 |
| --- a/chrome/browser/extensions/extension_info_map.cc |
| +++ b/chrome/browser/extensions/extension_info_map.cc |
| @@ -5,6 +5,8 @@ |
| #include "chrome/browser/extensions/extension_info_map.h" |
| #include "chrome/common/extensions/extension.h" |
| +#include "chrome/common/extensions/extension_set.h" |
| +#include "chrome/common/url_constants.h" |
| #include "content/browser/browser_thread.h" |
| namespace { |
| @@ -122,3 +124,23 @@ bool ExtensionInfoMap::IsExtensionInProcess( |
| ExtensionProcessIDMap::value_type(extension_id, process_id)) != |
| extension_process_ids_.end(); |
| } |
| + |
| +bool ExtensionInfoMap::SecurityOriginHasAPIPermission( |
| + const GURL& origin, int process_id, |
|
Aaron Boodman
2011/10/31 23:57:11
How about adding GetByOrigin to ExtensionSet? That
dcheng
2011/11/01 18:18:02
Before I update this, what would GetByOrigin retur
Aaron Boodman
2011/11/01 19:20:57
Yeah, I realized this won't work on the train ride
|
| + ExtensionAPIPermission::ID permission) const { |
| + if (origin.SchemeIs(chrome::kExtensionScheme)) { |
| + const std::string& id = origin.host(); |
| + return extensions_.GetByID(id)->HasAPIPermission(permission) && |
| + IsExtensionInProcess(id, process_id); |
| + } |
| + |
| + ExtensionSet::ExtensionMap::const_iterator i = extensions_.begin(); |
| + for (; i != extensions_.end(); ++i) { |
| + if (i->second->web_extent().MatchesSecurityOrigin(origin) && |
| + IsExtensionInProcess(i->first, process_id) && |
| + i->second->HasAPIPermission(permission)) { |
| + return true; |
| + } |
| + } |
| + return false; |
| +} |