Index: chrome/browser/ui/webui/options/content_settings_handler.cc |
diff --git a/chrome/browser/ui/webui/options/content_settings_handler.cc b/chrome/browser/ui/webui/options/content_settings_handler.cc |
index 486a0036adb9b1f2f1c6e6cd95c962d2889c88e0..cb3575f65da3d119c02cbba85f344994b5b68b03 100644 |
--- a/chrome/browser/ui/webui/options/content_settings_handler.cc |
+++ b/chrome/browser/ui/webui/options/content_settings_handler.cc |
@@ -30,6 +30,8 @@ |
#include "chrome/browser/extensions/extension_special_storage_policy.h" |
#include "chrome/browser/notifications/desktop_notification_profile_util.h" |
#include "chrome/browser/permissions/chooser_context_base.h" |
+#include "chrome/browser/permissions/permission_uma_util.h" |
+#include "chrome/browser/permissions/permission_util.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser_list.h" |
#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h" |
@@ -790,7 +792,8 @@ void ContentSettingsHandler::UpdateSettingDefaultFromModel( |
ContentSettingsType type) { |
std::string provider_id; |
ContentSetting default_setting = |
- GetContentSettingsMap()->GetDefaultContentSetting(type, &provider_id); |
+ HostContentSettingsMapFactory::GetForProfile(GetProfile()) |
+ ->GetDefaultContentSetting(type, &provider_id); |
#if defined(ENABLE_PLUGINS) |
default_setting = |
@@ -832,6 +835,8 @@ void ContentSettingsHandler::UpdateSettingDefaultFromModel( |
void ContentSettingsHandler::UpdateMediaSettingsFromPrefs( |
ContentSettingsType type) { |
PrefService* prefs = user_prefs::UserPrefs::Get(GetBrowserContext(web_ui())); |
+ HostContentSettingsMap* settings_map = |
+ HostContentSettingsMapFactory::GetForProfile(GetProfile()); |
MediaSettingsInfo::ForOneType& settings = media_settings_->forType(type); |
std::string policy_pref = (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) |
? prefs::kAudioCaptureAllowed |
@@ -840,7 +845,7 @@ void ContentSettingsHandler::UpdateMediaSettingsFromPrefs( |
settings.policy_disable = !prefs->GetBoolean(policy_pref) && |
prefs->IsManagedPreference(policy_pref); |
settings.default_setting = |
- GetContentSettingsMap()->GetDefaultContentSetting(type, NULL); |
+ settings_map->GetDefaultContentSetting(type, nullptr); |
settings.default_setting_initialized = true; |
UpdateFlashMediaLinksVisibility(type); |
@@ -1007,13 +1012,12 @@ void ContentSettingsHandler::UpdateNotificationExceptionsView() { |
void ContentSettingsHandler::CompareMediaExceptionsWithFlash( |
ContentSettingsType type) { |
MediaSettingsInfo::ForOneType& settings = media_settings_->forType(type); |
+ HostContentSettingsMap* settings_map = |
+ HostContentSettingsMapFactory::GetForProfile(GetProfile()); |
base::ListValue exceptions; |
- site_settings::GetExceptionsFromHostContentSettingsMap( |
- GetContentSettingsMap(), |
- type, |
- web_ui(), |
- &exceptions); |
+ site_settings::GetExceptionsFromHostContentSettingsMap(settings_map, type, |
+ web_ui(), &exceptions); |
settings.exceptions.clear(); |
for (base::ListValue::const_iterator entry = exceptions.begin(); |
@@ -1151,8 +1155,10 @@ void ContentSettingsHandler::UpdateZoomLevelsExceptionsView() { |
void ContentSettingsHandler::UpdateExceptionsViewFromHostContentSettingsMap( |
ContentSettingsType type) { |
base::ListValue exceptions; |
- site_settings::GetExceptionsFromHostContentSettingsMap( |
- GetContentSettingsMap(), type, web_ui(), &exceptions); |
+ HostContentSettingsMap* settings_map = |
+ HostContentSettingsMapFactory::GetForProfile(GetProfile()); |
+ site_settings::GetExceptionsFromHostContentSettingsMap(settings_map, type, |
+ web_ui(), &exceptions); |
base::StringValue type_string( |
site_settings::ContentSettingsTypeToGroupName(type)); |
web_ui()->CallJavascriptFunctionUnsafe("ContentSettings.setExceptions", |
@@ -1182,7 +1188,8 @@ void ContentSettingsHandler::UpdateExceptionsViewFromHostContentSettingsMap( |
void ContentSettingsHandler::UpdateExceptionsViewFromOTRHostContentSettingsMap( |
ContentSettingsType type) { |
- const HostContentSettingsMap* otr_settings_map = GetOTRContentSettingsMap(); |
+ const HostContentSettingsMap* otr_settings_map = |
+ HostContentSettingsMapFactory::GetForProfile(GetOTRProfile()); |
if (!otr_settings_map) |
return; |
base::ListValue exceptions; |
@@ -1297,23 +1304,31 @@ void ContentSettingsHandler::RemoveExceptionFromHostContentSettingsMap( |
DCHECK(rv); |
// The fourth argument to this handler is optional. |
- std::string secondary_pattern; |
+ std::string secondary_pattern_string; |
if (args->GetSize() >= 4U) { |
- rv = args->GetString(3, &secondary_pattern); |
+ rv = args->GetString(3, &secondary_pattern_string); |
DCHECK(rv); |
} |
+ Profile* profile = mode == "normal" ? GetProfile() : GetOTRProfile(); |
+ if (!profile) |
+ return; |
+ |
HostContentSettingsMap* settings_map = |
- mode == "normal" ? GetContentSettingsMap() : |
- GetOTRContentSettingsMap(); |
- if (settings_map) { |
- settings_map->SetContentSettingCustomScope( |
- ContentSettingsPattern::FromString(pattern), |
- secondary_pattern.empty() |
- ? ContentSettingsPattern::Wildcard() |
- : ContentSettingsPattern::FromString(secondary_pattern), |
- type, std::string(), CONTENT_SETTING_DEFAULT); |
- } |
+ HostContentSettingsMapFactory::GetForProfile(profile); |
+ ContentSettingsPattern primary_pattern = |
+ ContentSettingsPattern::FromString(pattern); |
+ ContentSettingsPattern secondary_pattern = |
+ secondary_pattern_string.empty() |
+ ? ContentSettingsPattern::Wildcard() |
+ : ContentSettingsPattern::FromString(secondary_pattern_string); |
+ PermissionUtil::ScopedRevocationReporter scoped_revocation_reporter( |
+ profile, primary_pattern, secondary_pattern, type, |
+ PermissionSourceUI::SITE_SETTINGS); |
+ |
+ settings_map->SetContentSettingCustomScope( |
+ primary_pattern, secondary_pattern, type, std::string(), |
+ CONTENT_SETTING_DEFAULT); |
} |
void ContentSettingsHandler::RemoveZoomLevelException( |
@@ -1463,30 +1478,34 @@ void ContentSettingsHandler::SetException(const base::ListValue* args) { |
ContentSettingsType type = |
site_settings::ContentSettingsTypeFromGroupName(type_string); |
- if (type == CONTENT_SETTINGS_TYPE_GEOLOCATION || |
- type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || |
- type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { |
- NOTREACHED(); |
- } else { |
- HostContentSettingsMap* settings_map = |
- mode == "normal" ? GetContentSettingsMap() : |
- GetOTRContentSettingsMap(); |
+ DCHECK(type != CONTENT_SETTINGS_TYPE_GEOLOCATION && |
+ type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC && |
+ type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); |
- // The settings map could be null if the mode was OTR but the OTR profile |
- // got destroyed before we received this message. |
- if (!settings_map) |
- return; |
+ Profile* profile = mode == "normal" ? GetProfile() : GetOTRProfile(); |
- ContentSetting setting_type; |
- bool result = |
- content_settings::ContentSettingFromString(setting, &setting_type); |
- DCHECK(result); |
+ // The profile could be nullptr if the mode was OTR but the OTR profile |
+ // got destroyed before we received this message. |
+ if (!profile) |
+ return; |
- settings_map->SetContentSettingCustomScope( |
- ContentSettingsPattern::FromString(pattern), |
- ContentSettingsPattern::Wildcard(), type, std::string(), setting_type); |
- WebSiteSettingsUmaUtil::LogPermissionChange(type, setting_type); |
- } |
+ ContentSetting setting_type; |
+ bool result = |
+ content_settings::ContentSettingFromString(setting, &setting_type); |
+ DCHECK(result); |
+ |
+ HostContentSettingsMap* settings_map = |
+ HostContentSettingsMapFactory::GetForProfile(profile); |
+ |
+ PermissionUtil::ScopedRevocationReporter scoped_revocation_reporter( |
+ profile, ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), type, |
+ PermissionSourceUI::SITE_SETTINGS); |
+ |
+ settings_map->SetContentSettingCustomScope( |
+ ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), type, std::string(), setting_type); |
+ WebSiteSettingsUmaUtil::LogPermissionChange(type, setting_type); |
} |
void ContentSettingsHandler::CheckExceptionPatternValidity( |
@@ -1508,9 +1527,8 @@ void ContentSettingsHandler::CheckExceptionPatternValidity( |
base::FundamentalValue(pattern.IsValid())); |
} |
-HostContentSettingsMap* ContentSettingsHandler::GetContentSettingsMap() { |
- return HostContentSettingsMapFactory::GetForProfile( |
- Profile::FromWebUI(web_ui())); |
+Profile* ContentSettingsHandler::GetProfile() { |
+ return Profile::FromWebUI(web_ui()); |
} |
ProtocolHandlerRegistry* ContentSettingsHandler::GetProtocolHandlerRegistry() { |
@@ -1518,13 +1536,10 @@ ProtocolHandlerRegistry* ContentSettingsHandler::GetProtocolHandlerRegistry() { |
GetBrowserContext(web_ui())); |
} |
-HostContentSettingsMap* |
- ContentSettingsHandler::GetOTRContentSettingsMap() { |
- Profile* profile = Profile::FromWebUI(web_ui()); |
- if (profile->HasOffTheRecordProfile()) |
- return HostContentSettingsMapFactory::GetForProfile( |
- profile->GetOffTheRecordProfile()); |
- return NULL; |
+Profile* ContentSettingsHandler::GetOTRProfile() { |
+ return GetProfile()->HasOffTheRecordProfile() |
+ ? GetProfile()->GetOffTheRecordProfile() |
+ : nullptr; |
} |
void ContentSettingsHandler::RefreshFlashMediaSettings() { |