OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/webui/options/content_settings_handler.h" | 5 #include "chrome/browser/ui/webui/options/content_settings_handler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/bind_helpers.h" | 12 #include "base/bind_helpers.h" |
13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
14 #include "base/prefs/pref_service.h" | 14 #include "base/prefs/pref_service.h" |
15 #include "base/strings/string_number_conversions.h" | 15 #include "base/strings/string_number_conversions.h" |
16 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
17 #include "base/values.h" | 17 #include "base/values.h" |
18 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
19 #include "chrome/browser/chrome_notification_types.h" | 19 #include "chrome/browser/chrome_notification_types.h" |
20 #include "chrome/browser/content_settings/content_settings_details.h" | 20 #include "chrome/browser/content_settings/content_settings_details.h" |
| 21 #include "chrome/browser/content_settings/content_settings_provider.h" |
21 #include "chrome/browser/content_settings/content_settings_utils.h" | 22 #include "chrome/browser/content_settings/content_settings_utils.h" |
22 #include "chrome/browser/content_settings/host_content_settings_map.h" | 23 #include "chrome/browser/content_settings/host_content_settings_map.h" |
23 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" | 24 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" |
24 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" | 25 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" |
25 #include "chrome/browser/extensions/extension_special_storage_policy.h" | 26 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
26 #include "chrome/browser/notifications/desktop_notification_service.h" | 27 #include "chrome/browser/notifications/desktop_notification_profile_util.h" |
27 #include "chrome/browser/notifications/desktop_notification_service_factory.h" | |
28 #include "chrome/browser/profiles/profile.h" | 28 #include "chrome/browser/profiles/profile.h" |
29 #include "chrome/browser/ui/browser_list.h" | 29 #include "chrome/browser/ui/browser_list.h" |
30 #include "chrome/common/chrome_switches.h" | 30 #include "chrome/common/chrome_switches.h" |
31 #include "chrome/common/content_settings.h" | 31 #include "chrome/common/content_settings.h" |
32 #include "chrome/common/content_settings_pattern.h" | 32 #include "chrome/common/content_settings_pattern.h" |
33 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 33 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
34 #include "chrome/common/pref_names.h" | 34 #include "chrome/common/pref_names.h" |
35 #include "chrome/common/url_constants.h" | 35 #include "chrome/common/url_constants.h" |
36 #include "components/google/core/browser/google_util.h" | 36 #include "components/google/core/browser/google_util.h" |
37 #include "content/public/browser/notification_service.h" | 37 #include "content/public/browser/notification_service.h" |
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 media_ui_settings.SetString("bubbleText", std::string()); | 670 media_ui_settings.SetString("bubbleText", std::string()); |
671 | 671 |
672 web_ui()->CallJavascriptFunction("ContentSettings.updateMediaUI", | 672 web_ui()->CallJavascriptFunction("ContentSettings.updateMediaUI", |
673 media_ui_settings); | 673 media_ui_settings); |
674 } | 674 } |
675 | 675 |
676 std::string ContentSettingsHandler::GetSettingDefaultFromModel( | 676 std::string ContentSettingsHandler::GetSettingDefaultFromModel( |
677 ContentSettingsType type, std::string* provider_id) { | 677 ContentSettingsType type, std::string* provider_id) { |
678 Profile* profile = Profile::FromWebUI(web_ui()); | 678 Profile* profile = Profile::FromWebUI(web_ui()); |
679 ContentSetting default_setting; | 679 ContentSetting default_setting; |
680 if (type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) { | 680 default_setting = |
681 default_setting = | 681 profile->GetHostContentSettingsMap()->GetDefaultContentSetting( |
682 DesktopNotificationServiceFactory::GetForProfile(profile)-> | 682 type, provider_id); |
683 GetDefaultContentSetting(provider_id); | |
684 } else { | |
685 default_setting = | |
686 profile->GetHostContentSettingsMap()-> | |
687 GetDefaultContentSetting(type, provider_id); | |
688 } | |
689 | 683 |
690 return ContentSettingToString(default_setting); | 684 return ContentSettingToString(default_setting); |
691 } | 685 } |
692 | 686 |
693 void ContentSettingsHandler::UpdateHandlersEnabledRadios() { | 687 void ContentSettingsHandler::UpdateHandlersEnabledRadios() { |
694 base::FundamentalValue handlers_enabled( | 688 base::FundamentalValue handlers_enabled( |
695 GetProtocolHandlerRegistry()->enabled()); | 689 GetProtocolHandlerRegistry()->enabled()); |
696 | 690 |
697 web_ui()->CallJavascriptFunction( | 691 web_ui()->CallJavascriptFunction( |
698 "ContentSettings.updateHandlersEnabledRadios", | 692 "ContentSettings.updateHandlersEnabledRadios", |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", | 836 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", |
843 type_string, exceptions); | 837 type_string, exceptions); |
844 | 838 |
845 // This is mainly here to keep this function ideologically parallel to | 839 // This is mainly here to keep this function ideologically parallel to |
846 // UpdateExceptionsViewFromHostContentSettingsMap(). | 840 // UpdateExceptionsViewFromHostContentSettingsMap(). |
847 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_GEOLOCATION); | 841 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
848 } | 842 } |
849 | 843 |
850 void ContentSettingsHandler::UpdateNotificationExceptionsView() { | 844 void ContentSettingsHandler::UpdateNotificationExceptionsView() { |
851 Profile* profile = Profile::FromWebUI(web_ui()); | 845 Profile* profile = Profile::FromWebUI(web_ui()); |
852 DesktopNotificationService* service = | |
853 DesktopNotificationServiceFactory::GetForProfile(profile); | |
854 | |
855 ContentSettingsForOneType settings; | 846 ContentSettingsForOneType settings; |
856 service->GetNotificationsSettings(&settings); | 847 DesktopNotificationProfileUtil::GetNotificationsSettings(profile, &settings); |
857 | 848 |
858 base::ListValue exceptions; | 849 base::ListValue exceptions; |
859 AddExceptionsGrantedByHostedApps(profile, | 850 AddExceptionsGrantedByHostedApps(profile, |
860 HostedAppHasPermission<APIPermission::kNotification>, | 851 HostedAppHasPermission<APIPermission::kNotification>, |
861 &exceptions); | 852 &exceptions); |
862 | 853 |
863 for (ContentSettingsForOneType::const_iterator i = | 854 for (ContentSettingsForOneType::const_iterator i = |
864 settings.begin(); | 855 settings.begin(); |
865 i != settings.end(); | 856 i != settings.end(); |
866 ++i) { | 857 ++i) { |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1163 std::string origin; | 1154 std::string origin; |
1164 std::string setting; | 1155 std::string setting; |
1165 bool rv = args->GetString(1, &origin); | 1156 bool rv = args->GetString(1, &origin); |
1166 DCHECK(rv); | 1157 DCHECK(rv); |
1167 rv = args->GetString(2, &setting); | 1158 rv = args->GetString(2, &setting); |
1168 DCHECK(rv); | 1159 DCHECK(rv); |
1169 ContentSetting content_setting = ContentSettingFromString(setting); | 1160 ContentSetting content_setting = ContentSettingFromString(setting); |
1170 | 1161 |
1171 DCHECK(content_setting == CONTENT_SETTING_ALLOW || | 1162 DCHECK(content_setting == CONTENT_SETTING_ALLOW || |
1172 content_setting == CONTENT_SETTING_BLOCK); | 1163 content_setting == CONTENT_SETTING_BLOCK); |
1173 DesktopNotificationServiceFactory::GetForProfile(profile)-> | 1164 DesktopNotificationProfileUtil::ClearSetting(profile, |
1174 ClearSetting(ContentSettingsPattern::FromString(origin)); | 1165 ContentSettingsPattern::FromString(origin)); |
1175 } | 1166 } |
1176 | 1167 |
1177 void ContentSettingsHandler::RemoveMediaException(const base::ListValue* args) { | 1168 void ContentSettingsHandler::RemoveMediaException(const base::ListValue* args) { |
1178 std::string mode; | 1169 std::string mode; |
1179 bool rv = args->GetString(1, &mode); | 1170 bool rv = args->GetString(1, &mode); |
1180 DCHECK(rv); | 1171 DCHECK(rv); |
1181 | 1172 |
1182 std::string pattern; | 1173 std::string pattern; |
1183 rv = args->GetString(2, &pattern); | 1174 rv = args->GetString(2, &pattern); |
1184 DCHECK(rv); | 1175 DCHECK(rv); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1306 ContentSettingsType content_type = ContentSettingsTypeFromGroupName(group); | 1297 ContentSettingsType content_type = ContentSettingsTypeFromGroupName(group); |
1307 Profile* profile = Profile::FromWebUI(web_ui()); | 1298 Profile* profile = Profile::FromWebUI(web_ui()); |
1308 | 1299 |
1309 #if defined(OS_CHROMEOS) | 1300 #if defined(OS_CHROMEOS) |
1310 // ChromeOS special case : in Guest mode settings are opened in Incognito | 1301 // ChromeOS special case : in Guest mode settings are opened in Incognito |
1311 // mode, so we need original profile to actually modify settings. | 1302 // mode, so we need original profile to actually modify settings. |
1312 if (chromeos::UserManager::Get()->IsLoggedInAsGuest()) | 1303 if (chromeos::UserManager::Get()->IsLoggedInAsGuest()) |
1313 profile = profile->GetOriginalProfile(); | 1304 profile = profile->GetOriginalProfile(); |
1314 #endif | 1305 #endif |
1315 | 1306 |
1316 if (content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) { | 1307 |
1317 DesktopNotificationServiceFactory::GetForProfile(profile)-> | 1308 HostContentSettingsMap* map = profile->GetHostContentSettingsMap(); |
1318 SetDefaultContentSetting(default_setting); | 1309 ApplyWhitelist(content_type, default_setting); |
1319 } else { | 1310 map->SetDefaultContentSetting(content_type, default_setting); |
1320 HostContentSettingsMap* map = profile->GetHostContentSettingsMap(); | 1311 |
1321 ApplyWhitelist(content_type, default_setting); | |
1322 map->SetDefaultContentSetting(content_type, default_setting); | |
1323 } | |
1324 switch (content_type) { | 1312 switch (content_type) { |
1325 case CONTENT_SETTINGS_TYPE_COOKIES: | 1313 case CONTENT_SETTINGS_TYPE_COOKIES: |
1326 content::RecordAction( | 1314 content::RecordAction( |
1327 UserMetricsAction("Options_DefaultCookieSettingChanged")); | 1315 UserMetricsAction("Options_DefaultCookieSettingChanged")); |
1328 break; | 1316 break; |
1329 case CONTENT_SETTINGS_TYPE_IMAGES: | 1317 case CONTENT_SETTINGS_TYPE_IMAGES: |
1330 content::RecordAction( | 1318 content::RecordAction( |
1331 UserMetricsAction("Options_DefaultImagesSettingChanged")); | 1319 UserMetricsAction("Options_DefaultImagesSettingChanged")); |
1332 break; | 1320 break; |
1333 case CONTENT_SETTINGS_TYPE_JAVASCRIPT: | 1321 case CONTENT_SETTINGS_TYPE_JAVASCRIPT: |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1570 void ContentSettingsHandler::UpdateProtectedContentExceptionsButton() { | 1558 void ContentSettingsHandler::UpdateProtectedContentExceptionsButton() { |
1571 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); | 1559 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); |
1572 // Exceptions apply only when the feature is enabled. | 1560 // Exceptions apply only when the feature is enabled. |
1573 bool enable_exceptions = prefs->GetBoolean(prefs::kEnableDRM); | 1561 bool enable_exceptions = prefs->GetBoolean(prefs::kEnableDRM); |
1574 web_ui()->CallJavascriptFunction( | 1562 web_ui()->CallJavascriptFunction( |
1575 "ContentSettings.enableProtectedContentExceptions", | 1563 "ContentSettings.enableProtectedContentExceptions", |
1576 base::FundamentalValue(enable_exceptions)); | 1564 base::FundamentalValue(enable_exceptions)); |
1577 } | 1565 } |
1578 | 1566 |
1579 } // namespace options | 1567 } // namespace options |
OLD | NEW |