Index: extensions/common/permissions/permissions_data.cc |
diff --git a/extensions/common/permissions/permissions_data.cc b/extensions/common/permissions/permissions_data.cc |
index 59428b658e7c650b945a0a72b99e700b4b763a66..825f5ff18917b2838681edc6ac102c0846f5d9e6 100644 |
--- a/extensions/common/permissions/permissions_data.cc |
+++ b/extensions/common/permissions/permissions_data.cc |
@@ -537,27 +537,29 @@ bool PermissionsData::CanExecuteScriptEverywhere(const Extension* extension) { |
// static |
bool PermissionsData::CanCaptureVisiblePage(const Extension* extension, |
- const GURL& page_url, |
int tab_id, |
std::string* error) { |
+ scoped_refptr<const PermissionSet> active_permissions = |
+ GetActivePermissions(extension); |
+ const URLPattern all_urls(URLPattern::SCHEME_ALL, |
+ URLPattern::kAllUrlsPattern); |
+ if (active_permissions->explicit_hosts().ContainsPattern(all_urls)) |
+ return true; |
+ |
if (tab_id >= 0) { |
scoped_refptr<const PermissionSet> tab_permissions = |
GetTabSpecificPermissions(extension, tab_id); |
- if (tab_permissions.get() && |
- tab_permissions->explicit_hosts().MatchesSecurityOrigin(page_url)) { |
+ if (tab_permissions && |
+ tab_permissions->HasAPIPermission(APIPermission::kTab)) { |
return true; |
} |
+ if (error) |
+ *error = errors::kActiveTabPermissionNotGranted; |
+ return false; |
} |
- if (HasHostPermission(extension, page_url) || |
- page_url.GetOrigin() == extension->url()) { |
- return true; |
- } |
- |
- if (error) { |
- *error = ErrorUtils::FormatErrorMessage(errors::kCannotAccessPage, |
- page_url.spec()); |
- } |
+ if (error) |
+ *error = errors::kAllURLOrActiveTabNeeded; |
return false; |
} |