| 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 0d0bb8787216086d600bdce88f42c9ef73107861..4db37b31a4e90e14e1657b8408b735edc582dd7c 100644
|
| --- a/chrome/browser/permissions/permission_context_base.cc
|
| +++ b/chrome/browser/permissions/permission_context_base.cc
|
| @@ -29,7 +29,6 @@
|
| #include "chrome/common/chrome_features.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "components/content_settings/core/browser/host_content_settings_map.h"
|
| -#include "components/content_settings/core/browser/website_settings_registry.h"
|
| #include "components/prefs/pref_service.h"
|
| #include "components/safe_browsing_db/database_manager.h"
|
| #include "components/variations/variations_associated_data.h"
|
| @@ -58,15 +57,13 @@ PermissionResult::~PermissionResult() {}
|
|
|
| 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();
|
| }
|
| @@ -90,7 +87,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;
|
| @@ -101,9 +99,7 @@ void PermissionContextBase::RequestPermission(
|
|
|
| if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) {
|
| std::string type_name =
|
| - content_settings::WebsiteSettingsRegistry::GetInstance()
|
| - ->Get(content_settings_type_)
|
| - ->name();
|
| + PermissionUtil::GetPermissionString(content_settings_type_);
|
|
|
| DVLOG(1) << "Attempt to use " << type_name
|
| << " from an invalid URL: " << requesting_origin << ","
|
| @@ -121,7 +117,7 @@ void PermissionContextBase::RequestPermission(
|
| GetPermissionStatus(requesting_origin, embedding_origin);
|
| if (result.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 (result.content_setting == CONTENT_SETTING_ALLOW ||
|
| @@ -136,7 +132,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,
|
| base::Bind(&PermissionContextBase::ContinueRequestPermission,
|
| weak_factory_.GetWeakPtr(), web_contents, id,
|
| requesting_origin, embedding_origin, user_gesture, callback));
|
| @@ -156,7 +152,8 @@ 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.
|
| PermissionUmaUtil::RecordPermissionEmbargoStatus(
|
| PermissionEmbargoStatus::PERMISSIONS_BLACKLISTING);
|
| @@ -164,8 +161,8 @@ void PermissionContextBase::ContinueRequestPermission(
|
| 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);
|
| @@ -193,7 +190,7 @@ PermissionResult 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 PermissionResult(CONTENT_SETTING_BLOCK,
|
| PermissionStatusSource::UNSPECIFIED);
|
| }
|
| @@ -206,8 +203,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(
|
| @@ -234,7 +231,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;
|
| }
|
| @@ -244,7 +241,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(
|
| @@ -266,7 +263,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),
|
| @@ -316,17 +313,18 @@ 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 (PermissionDecisionAutoBlocker::GetForProfile(profile_)
|
| - ->RecordDismissAndEmbargo(requesting_origin, permission_type_)) {
|
| + ->RecordDismissAndEmbargo(requesting_origin,
|
| + content_settings_type_)) {
|
| embargo_status = PermissionEmbargoStatus::REPEATED_DISMISSALS;
|
| }
|
| }
|
| @@ -386,6 +384,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_;
|
| }
|
|
|