| 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(
|
|
|