Commit 6144057e authored by kalman@chromium.org's avatar kalman@chromium.org

Fix memory leak in ActiveTabPermissionManager.


Review URL: https://chromiumcodereview.appspot.com/10824149

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149665 0039d316-1c4b-4281-b951-d872f2087c98
parent b30c0b41
...@@ -53,9 +53,10 @@ void ActiveTabPermissionManager::GrantIfRequested(const Extension* extension) { ...@@ -53,9 +53,10 @@ void ActiveTabPermissionManager::GrantIfRequested(const Extension* extension) {
new_apis.insert(APIPermission::kTab); new_apis.insert(APIPermission::kTab);
URLPatternSet new_hosts; URLPatternSet new_hosts;
new_hosts.AddPattern(pattern); new_hosts.AddPattern(pattern);
scoped_refptr<const PermissionSet> new_permissions =
new PermissionSet(new_apis, new_hosts, URLPatternSet());
extension->UpdateTabSpecificPermissions( extension->UpdateTabSpecificPermissions(tab_id_, new_permissions);
tab_id_, new PermissionSet(new_apis, new_hosts, URLPatternSet()));
granted_extensions_.Insert(extension); granted_extensions_.Insert(extension);
Send(new ExtensionMsg_UpdateTabSpecificPermissions(GetPageID(), Send(new ExtensionMsg_UpdateTabSpecificPermissions(GetPageID(),
tab_id_, tab_id_,
......
...@@ -3829,7 +3829,7 @@ scoped_refptr<const PermissionSet> Extension::GetTabSpecificPermissions( ...@@ -3829,7 +3829,7 @@ scoped_refptr<const PermissionSet> Extension::GetTabSpecificPermissions(
void Extension::UpdateTabSpecificPermissions( void Extension::UpdateTabSpecificPermissions(
int tab_id, int tab_id,
const PermissionSet* permissions) const { scoped_refptr<const PermissionSet> permissions) const {
base::AutoLock auto_lock(runtime_data_lock_); base::AutoLock auto_lock(runtime_data_lock_);
runtime_data_.UpdateTabSpecificPermissions(tab_id, permissions); runtime_data_.UpdateTabSpecificPermissions(tab_id, permissions);
} }
...@@ -3887,12 +3887,12 @@ scoped_refptr<const PermissionSet> ...@@ -3887,12 +3887,12 @@ scoped_refptr<const PermissionSet>
void Extension::RuntimeData::UpdateTabSpecificPermissions( void Extension::RuntimeData::UpdateTabSpecificPermissions(
int tab_id, int tab_id,
const PermissionSet* permissions) { scoped_refptr<const PermissionSet> permissions) {
CHECK_GE(tab_id, 0); CHECK_GE(tab_id, 0);
if (tab_specific_permissions_.count(tab_id)) { if (tab_specific_permissions_.count(tab_id)) {
tab_specific_permissions_[tab_id] = PermissionSet::CreateUnion( tab_specific_permissions_[tab_id] = PermissionSet::CreateUnion(
tab_specific_permissions_[tab_id], tab_specific_permissions_[tab_id],
permissions); permissions.get());
} else { } else {
tab_specific_permissions_[tab_id] = permissions; tab_specific_permissions_[tab_id] = permissions;
} }
......
...@@ -571,8 +571,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> { ...@@ -571,8 +571,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Updates the tab-specific permissions of |tab_id| to include those from // Updates the tab-specific permissions of |tab_id| to include those from
// |permissions|. // |permissions|.
void UpdateTabSpecificPermissions(int tab_id, void UpdateTabSpecificPermissions(
const PermissionSet* permissions) const; int tab_id,
scoped_refptr<const PermissionSet> permissions) const;
// Clears the tab-specific permissions of |tab_id|. // Clears the tab-specific permissions of |tab_id|.
void ClearTabSpecificPermissions(int tab_id) const; void ClearTabSpecificPermissions(int tab_id) const;
...@@ -728,8 +729,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> { ...@@ -728,8 +729,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
scoped_refptr<const PermissionSet> GetTabSpecificPermissions(int tab_id) scoped_refptr<const PermissionSet> GetTabSpecificPermissions(int tab_id)
const; const;
void UpdateTabSpecificPermissions(int tab_id, void UpdateTabSpecificPermissions(
const PermissionSet* permissions); int tab_id,
scoped_refptr<const PermissionSet> permissions);
void ClearTabSpecificPermissions(int tab_id); void ClearTabSpecificPermissions(int tab_id);
private: private:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment