| Index: chrome/browser/permissions/permission_util.cc
|
| diff --git a/chrome/browser/permissions/permission_util.cc b/chrome/browser/permissions/permission_util.cc
|
| index d4369c4609207aa11728227c4ac19e1b48e2f388..7f20730ec382b53f3ea32a87f9ec5e866370f310 100644
|
| --- a/chrome/browser/permissions/permission_util.cc
|
| +++ b/chrome/browser/permissions/permission_util.cc
|
| @@ -5,6 +5,9 @@
|
| #include "chrome/browser/permissions/permission_util.h"
|
|
|
| #include "base/logging.h"
|
| +#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
| +#include "chrome/browser/permissions/permission_uma_util.h"
|
| +#include "components/content_settings/core/browser/host_content_settings_map.h"
|
| #include "content/public/browser/permission_type.h"
|
|
|
| using content::PermissionType;
|
| @@ -69,3 +72,32 @@ bool PermissionUtil::GetPermissionType(ContentSettingsType type,
|
| }
|
| return true;
|
| }
|
| +
|
| +bool PermissionUtil::SetContentSettingAndRecordRevocation(
|
| + Profile* profile,
|
| + const GURL& primary_url,
|
| + const GURL& secondary_url,
|
| + ContentSettingsType content_type,
|
| + std::string resource_identifier,
|
| + ContentSetting setting) {
|
| + HostContentSettingsMap* map =
|
| + HostContentSettingsMapFactory::GetForProfile(profile);
|
| + ContentSetting previous_value = map->GetContentSetting(
|
| + primary_url, secondary_url, content_type, resource_identifier);
|
| +
|
| + map->SetContentSettingDefaultScope(primary_url, secondary_url, content_type,
|
| + resource_identifier, setting);
|
| +
|
| + ContentSetting final_value = map->GetContentSetting(
|
| + primary_url, secondary_url, content_type, resource_identifier);
|
| +
|
| + if (previous_value == CONTENT_SETTING_ALLOW &&
|
| + final_value != CONTENT_SETTING_ALLOW) {
|
| + PermissionType permission_type;
|
| + if (PermissionUtil::GetPermissionType(content_type, &permission_type)) {
|
| + PermissionUmaUtil::PermissionRevoked(permission_type, primary_url);
|
| + return true;
|
| + }
|
| + }
|
| + return false;
|
| +}
|
|
|