Index: chrome/browser/extensions/active_tab_permission_granter.cc |
diff --git a/chrome/browser/extensions/active_tab_permission_granter.cc b/chrome/browser/extensions/active_tab_permission_granter.cc |
index a62b18124f3604e59cdd18e6529aed2360c23efc..d6bce7eedcba00f0c274fa2d477c64bec66dcaf4 100644 |
--- a/chrome/browser/extensions/active_tab_permission_granter.cc |
+++ b/chrome/browser/extensions/active_tab_permission_granter.cc |
@@ -37,40 +37,37 @@ ActiveTabPermissionGranter::ActiveTabPermissionGranter( |
ActiveTabPermissionGranter::~ActiveTabPermissionGranter() {} |
void ActiveTabPermissionGranter::GrantIfRequested(const Extension* extension) { |
- if (!extension->HasAPIPermission(extensions::APIPermission::kActiveTab) && |
- !extension->HasAPIPermission(extensions::APIPermission::kTabCapture)) { |
+ if (granted_extensions_.Contains(extension->id())) |
return; |
- } |
- if (IsGranted(extension)) |
- return; |
+ APIPermissionSet new_apis; |
+ URLPatternSet new_hosts; |
- URLPattern pattern(UserScript::ValidUserScriptSchemes()); |
- if (pattern.Parse(web_contents()->GetURL().spec()) != |
- URLPattern::PARSE_SUCCESS) { |
+ if (extension->HasAPIPermission(APIPermission::kActiveTab)) { |
+ URLPattern pattern(UserScript::ValidUserScriptSchemes()); |
// Pattern parsing could fail if this is an unsupported URL e.g. chrome://. |
- return; |
+ if (pattern.Parse(web_contents()->GetURL().spec()) == |
+ URLPattern::PARSE_SUCCESS) { |
+ new_hosts.AddPattern(pattern); |
+ new_apis.insert(APIPermission::kTab); |
+ granted_extensions_.Insert(extension); |
+ } |
} |
- APIPermissionSet new_apis; |
- new_apis.insert(APIPermission::kTab); |
- URLPatternSet new_hosts; |
- new_hosts.AddPattern(pattern); |
- scoped_refptr<const PermissionSet> new_permissions = |
- new PermissionSet(new_apis, new_hosts, URLPatternSet()); |
- |
- PermissionsData::UpdateTabSpecificPermissions(extension, |
- tab_id_, |
- new_permissions); |
- granted_extensions_.Insert(extension); |
- Send(new ExtensionMsg_UpdateTabSpecificPermissions(GetPageID(), |
- tab_id_, |
- extension->id(), |
- new_hosts)); |
-} |
- |
-bool ActiveTabPermissionGranter::IsGranted(const Extension* extension) { |
- return granted_extensions_.Contains(extension->id()); |
+ if (extension->HasAPIPermission(APIPermission::kTabCapture)) |
+ new_apis.insert(APIPermission::kTabCaptureForTab); |
+ |
+ if (!new_apis.empty()) { |
+ scoped_refptr<const PermissionSet> new_permissions = |
+ new PermissionSet(new_apis, new_hosts, URLPatternSet()); |
+ PermissionsData::UpdateTabSpecificPermissions(extension, |
+ tab_id_, |
+ new_permissions); |
+ Send(new ExtensionMsg_UpdateTabSpecificPermissions(GetPageID(), |
+ tab_id_, |
+ extension->id(), |
+ new_hosts)); |
+ } |
} |
void ActiveTabPermissionGranter::DidNavigateMainFrame( |