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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <utility> | 10 #include <utility> |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
92 | 92 |
93 namespace { | 93 namespace { |
94 | 94 |
95 struct ContentSettingWithExceptions { | 95 struct ContentSettingWithExceptions { |
96 ContentSettingWithExceptions(bool otr, UserMetricsAction action) | 96 ContentSettingWithExceptions(bool otr, UserMetricsAction action) |
97 : has_otr_exceptions(otr), uma(action) {} | 97 : has_otr_exceptions(otr), uma(action) {} |
98 bool has_otr_exceptions; | 98 bool has_otr_exceptions; |
99 UserMetricsAction uma; | 99 UserMetricsAction uma; |
100 }; | 100 }; |
101 | 101 |
102 struct ContentSettingsTypeNameEntry { | |
103 ContentSettingsType type; | |
104 const char* name; | |
105 }; | |
Finnur
2016/05/31 21:59:55
This and next three deleted sections were moved to
| |
106 | |
107 // Maps from the UI string to the object it represents (for sorting purposes). | 102 // Maps from the UI string to the object it represents (for sorting purposes). |
108 typedef std::multimap<std::string, const base::DictionaryValue*> SortedObjects; | 103 typedef std::multimap<std::string, const base::DictionaryValue*> SortedObjects; |
109 // Maps from a secondary URL to the set of objects it has permission to access. | 104 // Maps from a secondary URL to the set of objects it has permission to access. |
110 typedef std::map<GURL, SortedObjects> OneOriginObjects; | 105 typedef std::map<GURL, SortedObjects> OneOriginObjects; |
111 // Maps from a primary URL/source pair to a OneOriginObjects. All the mappings | 106 // Maps from a primary URL/source pair to a OneOriginObjects. All the mappings |
112 // in OneOriginObjects share the given primary URL and source. | 107 // in OneOriginObjects share the given primary URL and source. |
113 typedef std::map<std::pair<GURL, std::string>, OneOriginObjects> | 108 typedef std::map<std::pair<GURL, std::string>, OneOriginObjects> |
114 AllOriginObjects; | 109 AllOriginObjects; |
115 | 110 |
116 // The AppFilter is used in AddExceptionsGrantedByHostedApps() to choose | 111 // The AppFilter is used in AddExceptionsGrantedByHostedApps() to choose |
117 // extensions which should have their extent displayed. | 112 // extensions which should have their extent displayed. |
118 typedef bool (*AppFilter)(const extensions::Extension& app, | 113 typedef bool (*AppFilter)(const extensions::Extension& app, |
119 content::BrowserContext* profile); | 114 content::BrowserContext* profile); |
120 | 115 |
121 const char kExceptionsLearnMoreUrl[] = | 116 const char kExceptionsLearnMoreUrl[] = |
122 "https://support.google.com/chrome/?p=settings_manage_exceptions"; | 117 "https://support.google.com/chrome/?p=settings_manage_exceptions"; |
123 | 118 |
124 const char kAppName[] = "appName"; | 119 const char kAppName[] = "appName"; |
125 const char kAppId[] = "appId"; | 120 const char kAppId[] = "appId"; |
126 const char kZoom[] = "zoom"; | 121 const char kZoom[] = "zoom"; |
127 const char kObject[] = "object"; | 122 const char kObject[] = "object"; |
128 const char kObjectName[] = "objectName"; | 123 const char kObjectName[] = "objectName"; |
129 | 124 |
130 const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { | |
131 {CONTENT_SETTINGS_TYPE_COOKIES, "cookies"}, | |
132 {CONTENT_SETTINGS_TYPE_IMAGES, "images"}, | |
133 {CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript"}, | |
134 {CONTENT_SETTINGS_TYPE_PLUGINS, "plugins"}, | |
135 {CONTENT_SETTINGS_TYPE_POPUPS, "popups"}, | |
136 {CONTENT_SETTINGS_TYPE_GEOLOCATION, "location"}, | |
137 {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "notifications"}, | |
138 {CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, "auto-select-certificate"}, | |
139 {CONTENT_SETTINGS_TYPE_FULLSCREEN, "fullscreen"}, | |
140 {CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock"}, | |
141 {CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, "register-protocol-handler"}, | |
142 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic"}, | |
143 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera"}, | |
144 {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker"}, | |
145 {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "multiple-automatic-downloads"}, | |
146 {CONTENT_SETTINGS_TYPE_MIDI_SYSEX, "midi-sysex"}, | |
147 {CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, "push-messaging"}, | |
148 {CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, "ssl-cert-decisions"}, | |
149 #if defined(OS_CHROMEOS) | |
150 {CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, "protectedContent"}, | |
151 #endif | |
152 {CONTENT_SETTINGS_TYPE_KEYGEN, "keygen"}, | |
153 {CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync"}, | |
154 }; | |
155 | |
156 ChooserContextBase* GetUsbChooserContext(Profile* profile) { | 125 ChooserContextBase* GetUsbChooserContext(Profile* profile) { |
157 return UsbChooserContextFactory::GetForProfile(profile); | 126 return UsbChooserContextFactory::GetForProfile(profile); |
158 } | 127 } |
159 | 128 |
160 const ContentSettingsHandler::ChooserTypeNameEntry kChooserTypeGroupNames[] = { | 129 const ContentSettingsHandler::ChooserTypeNameEntry kChooserTypeGroupNames[] = { |
161 {CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, &GetUsbChooserContext, | 130 {CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, &GetUsbChooserContext, |
162 "usb-devices", "name"}, | 131 "usb-devices", "name"}, |
163 }; | 132 }; |
164 | 133 |
165 // A pseudo content type. We use it to display data like a content setting even | 134 // A pseudo content type. We use it to display data like a content setting even |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
267 UserMetricsAction("Options_DefaultBackgroundSyncSettingChanged")))); | 236 UserMetricsAction("Options_DefaultBackgroundSyncSettingChanged")))); |
268 } | 237 } |
269 | 238 |
270 return exceptions_info_map; | 239 return exceptions_info_map; |
271 } | 240 } |
272 | 241 |
273 content::BrowserContext* GetBrowserContext(content::WebUI* web_ui) { | 242 content::BrowserContext* GetBrowserContext(content::WebUI* web_ui) { |
274 return web_ui->GetWebContents()->GetBrowserContext(); | 243 return web_ui->GetWebContents()->GetBrowserContext(); |
275 } | 244 } |
276 | 245 |
277 ContentSettingsType ContentSettingsTypeFromGroupName(const std::string& name) { | |
278 for (size_t i = 0; i < arraysize(kContentSettingsTypeGroupNames); ++i) { | |
279 if (name == kContentSettingsTypeGroupNames[i].name) | |
280 return kContentSettingsTypeGroupNames[i].type; | |
281 } | |
282 | |
283 NOTREACHED() << name << " is not a recognized content settings type."; | |
284 return CONTENT_SETTINGS_TYPE_DEFAULT; | |
285 } | |
286 | |
287 const ContentSettingsHandler::ChooserTypeNameEntry* ChooserTypeFromGroupName( | 246 const ContentSettingsHandler::ChooserTypeNameEntry* ChooserTypeFromGroupName( |
288 const std::string& name) { | 247 const std::string& name) { |
289 for (const auto& chooser_type : kChooserTypeGroupNames) { | 248 for (const auto& chooser_type : kChooserTypeGroupNames) { |
290 if (chooser_type.name == name) | 249 if (chooser_type.name == name) |
291 return &chooser_type; | 250 return &chooser_type; |
292 } | 251 } |
293 return nullptr; | 252 return nullptr; |
294 } | 253 } |
295 | 254 |
296 // Create a DictionaryValue* that will act as a data source for a single row | 255 // Create a DictionaryValue* that will act as a data source for a single row |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
865 provider_id = site_settings::kPolicyProviderId; | 824 provider_id = site_settings::kPolicyProviderId; |
866 } | 825 } |
867 } | 826 } |
868 | 827 |
869 base::DictionaryValue filter_settings; | 828 base::DictionaryValue filter_settings; |
870 | 829 |
871 std::string setting_string = | 830 std::string setting_string = |
872 content_settings::ContentSettingToString(default_setting); | 831 content_settings::ContentSettingToString(default_setting); |
873 DCHECK(!setting_string.empty()); | 832 DCHECK(!setting_string.empty()); |
874 | 833 |
875 filter_settings.SetString(ContentSettingsTypeToGroupName(type) + ".value", | |
876 setting_string); | |
877 filter_settings.SetString( | 834 filter_settings.SetString( |
878 ContentSettingsTypeToGroupName(type) + ".managedBy", provider_id); | 835 site_settings::ContentSettingsTypeToGroupName(type) + ".value", |
836 setting_string); | |
837 filter_settings.SetString( | |
838 site_settings::ContentSettingsTypeToGroupName(type) + ".managedBy", | |
839 provider_id); | |
879 | 840 |
880 web_ui()->CallJavascriptFunction( | 841 web_ui()->CallJavascriptFunction( |
881 "ContentSettings.setContentFilterSettingsValue", filter_settings); | 842 "ContentSettings.setContentFilterSettingsValue", filter_settings); |
882 } | 843 } |
883 | 844 |
884 void ContentSettingsHandler::UpdateMediaSettingsFromPrefs( | 845 void ContentSettingsHandler::UpdateMediaSettingsFromPrefs( |
885 ContentSettingsType type) { | 846 ContentSettingsType type) { |
886 PrefService* prefs = user_prefs::UserPrefs::Get(GetBrowserContext(web_ui())); | 847 PrefService* prefs = user_prefs::UserPrefs::Get(GetBrowserContext(web_ui())); |
887 MediaSettingsInfo::ForOneType& settings = media_settings_->forType(type); | 848 MediaSettingsInfo::ForOneType& settings = media_settings_->forType(type); |
888 std::string policy_pref = (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) | 849 std::string policy_pref = (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1000 ++j) { | 961 ++j) { |
1001 // Skip the non-embedded setting which we already added above. | 962 // Skip the non-embedded setting which we already added above. |
1002 if (j == parent) | 963 if (j == parent) |
1003 continue; | 964 continue; |
1004 | 965 |
1005 exceptions.Append(GetGeolocationExceptionForPage( | 966 exceptions.Append(GetGeolocationExceptionForPage( |
1006 primary_pattern, j->first, j->second)); | 967 primary_pattern, j->first, j->second)); |
1007 } | 968 } |
1008 } | 969 } |
1009 | 970 |
1010 base::StringValue type_string( | 971 base::StringValue type_string(site_settings::ContentSettingsTypeToGroupName( |
1011 ContentSettingsTypeToGroupName(CONTENT_SETTINGS_TYPE_GEOLOCATION)); | 972 CONTENT_SETTINGS_TYPE_GEOLOCATION)); |
1012 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", | 973 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", |
1013 type_string, exceptions); | 974 type_string, exceptions); |
1014 | 975 |
1015 // This is mainly here to keep this function ideologically parallel to | 976 // This is mainly here to keep this function ideologically parallel to |
1016 // UpdateExceptionsViewFromHostContentSettingsMap(). | 977 // UpdateExceptionsViewFromHostContentSettingsMap(). |
1017 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_GEOLOCATION); | 978 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
1018 } | 979 } |
1019 | 980 |
1020 void ContentSettingsHandler::UpdateNotificationExceptionsView() { | 981 void ContentSettingsHandler::UpdateNotificationExceptionsView() { |
1021 Profile* profile = Profile::FromWebUI(web_ui()); | 982 Profile* profile = Profile::FromWebUI(web_ui()); |
(...skipping 18 matching lines...) Expand all Loading... | |
1040 continue; | 1001 continue; |
1041 } | 1002 } |
1042 | 1003 |
1043 exceptions.Append( | 1004 exceptions.Append( |
1044 GetNotificationExceptionForPage(i->primary_pattern, | 1005 GetNotificationExceptionForPage(i->primary_pattern, |
1045 i->secondary_pattern, | 1006 i->secondary_pattern, |
1046 i->setting, | 1007 i->setting, |
1047 i->source)); | 1008 i->source)); |
1048 } | 1009 } |
1049 | 1010 |
1050 base::StringValue type_string( | 1011 base::StringValue type_string(site_settings::ContentSettingsTypeToGroupName( |
1051 ContentSettingsTypeToGroupName(CONTENT_SETTINGS_TYPE_NOTIFICATIONS)); | 1012 CONTENT_SETTINGS_TYPE_NOTIFICATIONS)); |
1052 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", | 1013 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", |
1053 type_string, exceptions); | 1014 type_string, exceptions); |
1054 | 1015 |
1055 // This is mainly here to keep this function ideologically parallel to | 1016 // This is mainly here to keep this function ideologically parallel to |
1056 // UpdateExceptionsViewFromHostContentSettingsMap(). | 1017 // UpdateExceptionsViewFromHostContentSettingsMap(). |
1057 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 1018 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
1058 } | 1019 } |
1059 | 1020 |
1060 void ContentSettingsHandler::CompareMediaExceptionsWithFlash( | 1021 void ContentSettingsHandler::CompareMediaExceptionsWithFlash( |
1061 ContentSettingsType type) { | 1022 ContentSettingsType type) { |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1199 base::StringValue type_string(kZoomContentType); | 1160 base::StringValue type_string(kZoomContentType); |
1200 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", | 1161 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", |
1201 type_string, zoom_levels_exceptions); | 1162 type_string, zoom_levels_exceptions); |
1202 } | 1163 } |
1203 | 1164 |
1204 void ContentSettingsHandler::UpdateExceptionsViewFromHostContentSettingsMap( | 1165 void ContentSettingsHandler::UpdateExceptionsViewFromHostContentSettingsMap( |
1205 ContentSettingsType type) { | 1166 ContentSettingsType type) { |
1206 base::ListValue exceptions; | 1167 base::ListValue exceptions; |
1207 site_settings::GetExceptionsFromHostContentSettingsMap( | 1168 site_settings::GetExceptionsFromHostContentSettingsMap( |
1208 GetContentSettingsMap(), type, web_ui(), &exceptions); | 1169 GetContentSettingsMap(), type, web_ui(), &exceptions); |
1209 base::StringValue type_string(ContentSettingsTypeToGroupName(type)); | 1170 base::StringValue type_string( |
1171 site_settings::ContentSettingsTypeToGroupName(type)); | |
1210 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", type_string, | 1172 web_ui()->CallJavascriptFunction("ContentSettings.setExceptions", type_string, |
1211 exceptions); | 1173 exceptions); |
1212 | 1174 |
1213 UpdateExceptionsViewFromOTRHostContentSettingsMap(type); | 1175 UpdateExceptionsViewFromOTRHostContentSettingsMap(type); |
1214 | 1176 |
1215 // TODO(koz): The default for fullscreen is always 'ask'. | 1177 // TODO(koz): The default for fullscreen is always 'ask'. |
1216 // http://crbug.com/104683 | 1178 // http://crbug.com/104683 |
1217 if (type == CONTENT_SETTINGS_TYPE_FULLSCREEN) | 1179 if (type == CONTENT_SETTINGS_TYPE_FULLSCREEN) |
1218 return; | 1180 return; |
1219 | 1181 |
1220 #if defined(OS_CHROMEOS) | 1182 #if defined(OS_CHROMEOS) |
1221 // Also the default for protected contents is managed in another place. | 1183 // Also the default for protected contents is managed in another place. |
1222 if (type == CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER) | 1184 if (type == CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER) |
1223 return; | 1185 return; |
1224 #endif | 1186 #endif |
1225 | 1187 |
1226 // The default may also have changed (we won't get a separate notification). | 1188 // The default may also have changed (we won't get a separate notification). |
1227 // If it hasn't changed, this call will be harmless. | 1189 // If it hasn't changed, this call will be harmless. |
1228 UpdateSettingDefaultFromModel(type); | 1190 UpdateSettingDefaultFromModel(type); |
1229 } | 1191 } |
1230 | 1192 |
1231 void ContentSettingsHandler::UpdateExceptionsViewFromOTRHostContentSettingsMap( | 1193 void ContentSettingsHandler::UpdateExceptionsViewFromOTRHostContentSettingsMap( |
1232 ContentSettingsType type) { | 1194 ContentSettingsType type) { |
1233 const HostContentSettingsMap* otr_settings_map = GetOTRContentSettingsMap(); | 1195 const HostContentSettingsMap* otr_settings_map = GetOTRContentSettingsMap(); |
1234 if (!otr_settings_map) | 1196 if (!otr_settings_map) |
1235 return; | 1197 return; |
1236 base::ListValue exceptions; | 1198 base::ListValue exceptions; |
1237 site_settings::GetExceptionsFromHostContentSettingsMap( | 1199 site_settings::GetExceptionsFromHostContentSettingsMap( |
1238 otr_settings_map, type, web_ui(), &exceptions); | 1200 otr_settings_map, type, web_ui(), &exceptions); |
1239 base::StringValue type_string(ContentSettingsTypeToGroupName(type)); | 1201 base::StringValue type_string( |
1202 site_settings::ContentSettingsTypeToGroupName(type)); | |
1240 web_ui()->CallJavascriptFunction("ContentSettings.setOTRExceptions", | 1203 web_ui()->CallJavascriptFunction("ContentSettings.setOTRExceptions", |
1241 type_string, exceptions); | 1204 type_string, exceptions); |
1242 } | 1205 } |
1243 | 1206 |
1244 void ContentSettingsHandler::GetChooserExceptionsFromProfile( | 1207 void ContentSettingsHandler::GetChooserExceptionsFromProfile( |
1245 bool incognito, | 1208 bool incognito, |
1246 const ChooserTypeNameEntry& chooser_type, | 1209 const ChooserTypeNameEntry& chooser_type, |
1247 base::ListValue* exceptions) { | 1210 base::ListValue* exceptions) { |
1248 Profile* profile = Profile::FromWebUI(web_ui()); | 1211 Profile* profile = Profile::FromWebUI(web_ui()); |
1249 if (incognito) { | 1212 if (incognito) { |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1442 args->GetString(1, &setting))) { | 1405 args->GetString(1, &setting))) { |
1443 NOTREACHED(); | 1406 NOTREACHED(); |
1444 return; | 1407 return; |
1445 } | 1408 } |
1446 | 1409 |
1447 ContentSetting default_setting; | 1410 ContentSetting default_setting; |
1448 bool result = | 1411 bool result = |
1449 content_settings::ContentSettingFromString(setting, &default_setting); | 1412 content_settings::ContentSettingFromString(setting, &default_setting); |
1450 DCHECK(result); | 1413 DCHECK(result); |
1451 | 1414 |
1452 ContentSettingsType content_type = ContentSettingsTypeFromGroupName(group); | 1415 ContentSettingsType content_type = |
1416 site_settings::ContentSettingsTypeFromGroupName(group); | |
1453 Profile* profile = Profile::FromWebUI(web_ui()); | 1417 Profile* profile = Profile::FromWebUI(web_ui()); |
1454 | 1418 |
1455 #if defined(OS_CHROMEOS) | 1419 #if defined(OS_CHROMEOS) |
1456 // ChromeOS special case : in Guest mode settings are opened in Incognito | 1420 // ChromeOS special case : in Guest mode settings are opened in Incognito |
1457 // mode, so we need original profile to actually modify settings. | 1421 // mode, so we need original profile to actually modify settings. |
1458 if (user_manager::UserManager::Get()->IsLoggedInAsGuest()) | 1422 if (user_manager::UserManager::Get()->IsLoggedInAsGuest()) |
1459 profile = profile->GetOriginalProfile(); | 1423 profile = profile->GetOriginalProfile(); |
1460 #endif | 1424 #endif |
1461 | 1425 |
1462 HostContentSettingsMap* map = | 1426 HostContentSettingsMap* map = |
(...skipping 18 matching lines...) Expand all Loading... | |
1481 return; | 1445 return; |
1482 } | 1446 } |
1483 | 1447 |
1484 const ChooserTypeNameEntry* chooser_type = | 1448 const ChooserTypeNameEntry* chooser_type = |
1485 ChooserTypeFromGroupName(type_string); | 1449 ChooserTypeFromGroupName(type_string); |
1486 if (chooser_type) { | 1450 if (chooser_type) { |
1487 RemoveChooserException(chooser_type, args); | 1451 RemoveChooserException(chooser_type, args); |
1488 return; | 1452 return; |
1489 } | 1453 } |
1490 | 1454 |
1491 ContentSettingsType type = ContentSettingsTypeFromGroupName(type_string); | 1455 ContentSettingsType type = |
1456 site_settings::ContentSettingsTypeFromGroupName(type_string); | |
1492 RemoveExceptionFromHostContentSettingsMap(args, type); | 1457 RemoveExceptionFromHostContentSettingsMap(args, type); |
1493 | 1458 |
1494 WebSiteSettingsUmaUtil::LogPermissionChange( | 1459 WebSiteSettingsUmaUtil::LogPermissionChange( |
1495 type, ContentSetting::CONTENT_SETTING_DEFAULT); | 1460 type, ContentSetting::CONTENT_SETTING_DEFAULT); |
1496 } | 1461 } |
1497 | 1462 |
1498 void ContentSettingsHandler::SetException(const base::ListValue* args) { | 1463 void ContentSettingsHandler::SetException(const base::ListValue* args) { |
1499 std::string type_string; | 1464 std::string type_string; |
1500 CHECK(args->GetString(0, &type_string)); | 1465 CHECK(args->GetString(0, &type_string)); |
1501 std::string mode; | 1466 std::string mode; |
1502 CHECK(args->GetString(1, &mode)); | 1467 CHECK(args->GetString(1, &mode)); |
1503 std::string pattern; | 1468 std::string pattern; |
1504 CHECK(args->GetString(2, &pattern)); | 1469 CHECK(args->GetString(2, &pattern)); |
1505 std::string setting; | 1470 std::string setting; |
1506 CHECK(args->GetString(3, &setting)); | 1471 CHECK(args->GetString(3, &setting)); |
1507 | 1472 |
1508 ContentSettingsType type = ContentSettingsTypeFromGroupName(type_string); | 1473 ContentSettingsType type = |
1474 site_settings::ContentSettingsTypeFromGroupName(type_string); | |
1509 | 1475 |
1510 if (type == CONTENT_SETTINGS_TYPE_GEOLOCATION || | 1476 if (type == CONTENT_SETTINGS_TYPE_GEOLOCATION || |
1511 type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || | 1477 type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || |
1512 type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { | 1478 type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { |
1513 NOTREACHED(); | 1479 NOTREACHED(); |
1514 } else { | 1480 } else { |
1515 HostContentSettingsMap* settings_map = | 1481 HostContentSettingsMap* settings_map = |
1516 mode == "normal" ? GetContentSettingsMap() : | 1482 mode == "normal" ? GetContentSettingsMap() : |
1517 GetOTRContentSettingsMap(); | 1483 GetOTRContentSettingsMap(); |
1518 | 1484 |
(...skipping 27 matching lines...) Expand all Loading... | |
1546 ContentSettingsPattern::FromString(pattern_string); | 1512 ContentSettingsPattern::FromString(pattern_string); |
1547 | 1513 |
1548 web_ui()->CallJavascriptFunction( | 1514 web_ui()->CallJavascriptFunction( |
1549 "ContentSettings.patternValidityCheckComplete", | 1515 "ContentSettings.patternValidityCheckComplete", |
1550 base::StringValue(type_string), | 1516 base::StringValue(type_string), |
1551 base::StringValue(mode_string), | 1517 base::StringValue(mode_string), |
1552 base::StringValue(pattern_string), | 1518 base::StringValue(pattern_string), |
1553 base::FundamentalValue(pattern.IsValid())); | 1519 base::FundamentalValue(pattern.IsValid())); |
1554 } | 1520 } |
1555 | 1521 |
1556 // static | |
1557 std::string ContentSettingsHandler::ContentSettingsTypeToGroupName( | |
1558 ContentSettingsType type) { | |
1559 for (size_t i = 0; i < arraysize(kContentSettingsTypeGroupNames); ++i) { | |
1560 if (type == kContentSettingsTypeGroupNames[i].type) | |
1561 return kContentSettingsTypeGroupNames[i].name; | |
1562 } | |
1563 | |
1564 NOTREACHED(); | |
1565 return std::string(); | |
1566 } | |
1567 | |
1568 HostContentSettingsMap* ContentSettingsHandler::GetContentSettingsMap() { | 1522 HostContentSettingsMap* ContentSettingsHandler::GetContentSettingsMap() { |
1569 return HostContentSettingsMapFactory::GetForProfile( | 1523 return HostContentSettingsMapFactory::GetForProfile( |
1570 Profile::FromWebUI(web_ui())); | 1524 Profile::FromWebUI(web_ui())); |
1571 } | 1525 } |
1572 | 1526 |
1573 ProtocolHandlerRegistry* ContentSettingsHandler::GetProtocolHandlerRegistry() { | 1527 ProtocolHandlerRegistry* ContentSettingsHandler::GetProtocolHandlerRegistry() { |
1574 return ProtocolHandlerRegistryFactory::GetForBrowserContext( | 1528 return ProtocolHandlerRegistryFactory::GetForBrowserContext( |
1575 GetBrowserContext(web_ui())); | 1529 GetBrowserContext(web_ui())); |
1576 } | 1530 } |
1577 | 1531 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1683 ShowFlashMediaLink(EXCEPTIONS, type, true); | 1637 ShowFlashMediaLink(EXCEPTIONS, type, true); |
1684 } | 1638 } |
1685 } | 1639 } |
1686 | 1640 |
1687 void ContentSettingsHandler::UpdateMediaDeviceDropdownVisibility( | 1641 void ContentSettingsHandler::UpdateMediaDeviceDropdownVisibility( |
1688 ContentSettingsType type) { | 1642 ContentSettingsType type) { |
1689 MediaSettingsInfo::ForOneType& settings = media_settings_->forType(type); | 1643 MediaSettingsInfo::ForOneType& settings = media_settings_->forType(type); |
1690 | 1644 |
1691 web_ui()->CallJavascriptFunction( | 1645 web_ui()->CallJavascriptFunction( |
1692 "ContentSettings.setDevicesMenuVisibility", | 1646 "ContentSettings.setDevicesMenuVisibility", |
1693 base::StringValue(ContentSettingsTypeToGroupName(type)), | 1647 base::StringValue(site_settings::ContentSettingsTypeToGroupName(type)), |
1694 base::FundamentalValue(!settings.policy_disable)); | 1648 base::FundamentalValue(!settings.policy_disable)); |
1695 } | 1649 } |
1696 | 1650 |
1697 void ContentSettingsHandler::UpdateProtectedContentExceptionsButton() { | 1651 void ContentSettingsHandler::UpdateProtectedContentExceptionsButton() { |
1698 #if defined(OS_CHROMEOS) | 1652 #if defined(OS_CHROMEOS) |
1699 // Guests cannot modify exceptions. UIAccountTweaks will disabled the button. | 1653 // Guests cannot modify exceptions. UIAccountTweaks will disabled the button. |
1700 if (user_manager::UserManager::Get()->IsLoggedInAsGuest()) | 1654 if (user_manager::UserManager::Get()->IsLoggedInAsGuest()) |
1701 return; | 1655 return; |
1702 #endif | 1656 #endif |
1703 | 1657 |
1704 // Exceptions apply only when the feature is enabled. | 1658 // Exceptions apply only when the feature is enabled. |
1705 PrefService* prefs = user_prefs::UserPrefs::Get(GetBrowserContext(web_ui())); | 1659 PrefService* prefs = user_prefs::UserPrefs::Get(GetBrowserContext(web_ui())); |
1706 bool enable_exceptions = prefs->GetBoolean(prefs::kEnableDRM); | 1660 bool enable_exceptions = prefs->GetBoolean(prefs::kEnableDRM); |
1707 web_ui()->CallJavascriptFunction( | 1661 web_ui()->CallJavascriptFunction( |
1708 "ContentSettings.enableProtectedContentExceptions", | 1662 "ContentSettings.enableProtectedContentExceptions", |
1709 base::FundamentalValue(enable_exceptions)); | 1663 base::FundamentalValue(enable_exceptions)); |
1710 } | 1664 } |
1711 | 1665 |
1712 } // namespace options | 1666 } // namespace options |
OLD | NEW |