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