Chromium Code Reviews| Index: chrome/browser/permissions/permission_context_base.cc |
| diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc |
| index c00f3e7aa503570ad94c778a64b0b4923857aa9d..7557e5c474c84d3f913754c24ca10fd43c0f3b56 100644 |
| --- a/chrome/browser/permissions/permission_context_base.cc |
| +++ b/chrome/browser/permissions/permission_context_base.cc |
| @@ -52,15 +52,13 @@ const char PermissionContextBase::kPermissionsKillSwitchBlockedValue[] = |
| PermissionContextBase::PermissionContextBase( |
| Profile* profile, |
| - const content::PermissionType permission_type, |
| const ContentSettingsType content_settings_type) |
| : profile_(profile), |
| - permission_type_(permission_type), |
| content_settings_type_(content_settings_type), |
| weak_factory_(this) { |
| #if defined(OS_ANDROID) |
| - permission_queue_controller_.reset(new PermissionQueueController( |
| - profile_, permission_type_, content_settings_type_)); |
| + permission_queue_controller_.reset( |
| + new PermissionQueueController(profile_, content_settings_type_)); |
| #endif |
| PermissionDecisionAutoBlocker::UpdateFromVariations(); |
| } |
| @@ -84,7 +82,8 @@ void PermissionContextBase::RequestPermission( |
| content::CONSOLE_MESSAGE_LEVEL_INFO, |
| base::StringPrintf( |
| "%s permission has been blocked.", |
| - PermissionUtil::GetPermissionString(permission_type_).c_str())); |
| + PermissionUtil::GetPermissionString(content_settings_type_) |
| + .c_str())); |
| // The kill switch is enabled for this permission; Block all requests. |
| callback.Run(CONTENT_SETTING_BLOCK); |
| return; |
| @@ -115,7 +114,7 @@ void PermissionContextBase::RequestPermission( |
| GetPermissionStatus(requesting_origin, embedding_origin); |
| if (content_setting == CONTENT_SETTING_ALLOW) { |
| HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage( |
| - requesting_origin, embedding_origin, content_settings_type_); |
| + requesting_origin, embedding_origin, content_settings_storage_type()); |
| } |
| if (content_setting == CONTENT_SETTING_ALLOW || |
| @@ -130,7 +129,7 @@ void PermissionContextBase::RequestPermission( |
| // have been dismissed too many times in a row. If the origin is allowed to |
| // request, that request will be made to ContinueRequestPermission(). |
| PermissionDecisionAutoBlocker::GetForProfile(profile_)->UpdateEmbargoedStatus( |
| - permission_type_, requesting_origin, web_contents, |
| + content_settings_type_, requesting_origin, web_contents, |
|
Peter Beverloo
2017/02/10 16:22:51
Should the auto blocker use the storage type too?
Timothy Loh
2017/02/13 04:08:36
I think this issue already exists, since it curren
|
| base::Bind(&PermissionContextBase::ContinueRequestPermission, |
| weak_factory_.GetWeakPtr(), web_contents, id, |
| requesting_origin, embedding_origin, user_gesture, callback)); |
| @@ -151,14 +150,15 @@ void PermissionContextBase::ContinueRequestPermission( |
| content::CONSOLE_MESSAGE_LEVEL_INFO, |
| base::StringPrintf( |
| "%s permission has been auto-blocked.", |
| - PermissionUtil::GetPermissionString(permission_type_).c_str())); |
| + PermissionUtil::GetPermissionString(content_settings_type_) |
| + .c_str())); |
| // Permission has been automatically blocked. |
| callback.Run(CONTENT_SETTING_BLOCK); |
| return; |
| } |
| - PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin, |
| - embedding_origin, profile_); |
| + PermissionUmaUtil::PermissionRequested( |
| + content_settings_type_, requesting_origin, embedding_origin, profile_); |
| DecidePermission(web_contents, id, requesting_origin, embedding_origin, |
| user_gesture, callback); |
| @@ -180,7 +180,7 @@ ContentSetting PermissionContextBase::GetPermissionStatus( |
| GetPermissionStatusInternal(requesting_origin, embedding_origin); |
| if (content_setting == CONTENT_SETTING_ASK && |
| PermissionDecisionAutoBlocker::GetForProfile(profile_)->IsUnderEmbargo( |
| - permission_type_, requesting_origin)) { |
| + content_settings_type_, requesting_origin)) { |
| return CONTENT_SETTING_BLOCK; |
| } |
| return content_setting; |
| @@ -191,8 +191,8 @@ void PermissionContextBase::ResetPermission( |
| const GURL& embedding_origin) { |
| HostContentSettingsMapFactory::GetForProfile(profile_) |
| ->SetContentSettingDefaultScope(requesting_origin, embedding_origin, |
| - content_settings_type_, std::string(), |
| - CONTENT_SETTING_DEFAULT); |
| + content_settings_storage_type(), |
| + std::string(), CONTENT_SETTING_DEFAULT); |
| } |
| void PermissionContextBase::CancelPermissionRequest( |
| @@ -219,7 +219,7 @@ void PermissionContextBase::CancelPermissionRequest( |
| bool PermissionContextBase::IsPermissionKillSwitchOn() const { |
| const std::string param = variations::GetVariationParamValue( |
| kPermissionsKillSwitchFieldStudy, |
| - PermissionUtil::GetPermissionString(permission_type_)); |
| + PermissionUtil::GetPermissionString(content_settings_type_)); |
| return param == kPermissionsKillSwitchBlockedValue; |
| } |
| @@ -229,7 +229,7 @@ ContentSetting PermissionContextBase::GetPermissionStatusInternal( |
| const GURL& embedding_origin) const { |
| return HostContentSettingsMapFactory::GetForProfile(profile_) |
| ->GetContentSetting(requesting_origin, embedding_origin, |
| - content_settings_type_, std::string()); |
| + content_settings_storage_type(), std::string()); |
| } |
| void PermissionContextBase::DecidePermission( |
| @@ -251,7 +251,7 @@ void PermissionContextBase::DecidePermission( |
| std::unique_ptr<PermissionRequest> request_ptr = |
| base::MakeUnique<PermissionRequestImpl>( |
| - requesting_origin, permission_type_, profile_, user_gesture, |
| + requesting_origin, content_settings_type_, profile_, user_gesture, |
| base::Bind(&PermissionContextBase::PermissionDecided, |
| weak_factory_.GetWeakPtr(), id, requesting_origin, |
| embedding_origin, user_gesture, callback), |
| @@ -299,20 +299,21 @@ void PermissionContextBase::PermissionDecided( |
| content_setting == CONTENT_SETTING_BLOCK || |
| content_setting == CONTENT_SETTING_DEFAULT); |
| if (content_setting == CONTENT_SETTING_ALLOW) { |
| - PermissionUmaUtil::PermissionGranted(permission_type_, gesture_type, |
| + PermissionUmaUtil::PermissionGranted(content_settings_type_, gesture_type, |
| requesting_origin, profile_); |
| } else if (content_setting == CONTENT_SETTING_BLOCK) { |
| - PermissionUmaUtil::PermissionDenied(permission_type_, gesture_type, |
| + PermissionUmaUtil::PermissionDenied(content_settings_type_, gesture_type, |
| requesting_origin, profile_); |
| } else { |
| - PermissionUmaUtil::PermissionDismissed(permission_type_, gesture_type, |
| - requesting_origin, profile_); |
| + PermissionUmaUtil::PermissionDismissed( |
| + content_settings_type_, gesture_type, requesting_origin, profile_); |
| } |
| } |
| if (content_setting == CONTENT_SETTING_DEFAULT && |
| PermissionDecisionAutoBlocker::GetForProfile(profile_) |
| - ->RecordDismissAndEmbargo(requesting_origin, permission_type_)) { |
| + ->RecordDismissAndEmbargo(requesting_origin, |
| + content_settings_type_)) { |
| // The permission has been embargoed, so it is blocked for this permission |
| // request, but not persisted. |
| content_setting = CONTENT_SETTING_BLOCK; |
| @@ -371,6 +372,13 @@ void PermissionContextBase::UpdateContentSetting( |
| HostContentSettingsMapFactory::GetForProfile(profile_) |
| ->SetContentSettingDefaultScope(requesting_origin, embedding_origin, |
| - content_settings_type_, std::string(), |
| - content_setting); |
| + content_settings_storage_type(), |
| + std::string(), content_setting); |
| +} |
| + |
| +ContentSettingsType PermissionContextBase::content_settings_storage_type() |
| + const { |
| + if (content_settings_type_ == CONTENT_SETTINGS_TYPE_PUSH_MESSAGING) |
| + return CONTENT_SETTINGS_TYPE_NOTIFICATIONS; |
| + return content_settings_type_; |
| } |