OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/content_settings/core/browser/content_settings_registry.h" | 5 #include "components/content_settings/core/browser/content_settings_registry.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
118 // generate preference names and should never be changed! | 118 // generate preference names and should never be changed! |
119 | 119 |
120 Register(CONTENT_SETTINGS_TYPE_COOKIES, "cookies", CONTENT_SETTING_ALLOW, | 120 Register(CONTENT_SETTINGS_TYPE_COOKIES, "cookies", CONTENT_SETTING_ALLOW, |
121 WebsiteSettingsInfo::SYNCABLE, | 121 WebsiteSettingsInfo::SYNCABLE, |
122 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | 122 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), |
123 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | 123 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, |
124 CONTENT_SETTING_SESSION_ONLY), | 124 CONTENT_SETTING_SESSION_ONLY), |
125 WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE, | 125 WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE, |
126 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 126 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
127 | 127 |
128 Register(CONTENT_SETTINGS_TYPE_IMAGES, "images", CONTENT_SETTING_ALLOW, | |
129 WebsiteSettingsInfo::SYNCABLE, | |
130 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, | |
131 kExtensionScheme), | |
132 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), | |
133 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
134 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
135 | |
136 Register(CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript", | 128 Register(CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript", |
137 CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::SYNCABLE, | 129 CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::SYNCABLE, |
138 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, | 130 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, |
139 kExtensionScheme), | 131 kExtensionScheme), |
140 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), | 132 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), |
141 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | 133 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, |
142 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 134 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
143 | 135 |
144 Register(CONTENT_SETTINGS_TYPE_PLUGINS, "plugins", | |
145 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT, | |
146 WebsiteSettingsInfo::SYNCABLE, | |
147 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | |
148 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | |
149 CONTENT_SETTING_ASK, | |
150 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT), | |
151 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
152 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
153 | |
154 Register(CONTENT_SETTINGS_TYPE_POPUPS, "popups", CONTENT_SETTING_BLOCK, | 136 Register(CONTENT_SETTINGS_TYPE_POPUPS, "popups", CONTENT_SETTING_BLOCK, |
155 WebsiteSettingsInfo::SYNCABLE, | 137 WebsiteSettingsInfo::SYNCABLE, |
156 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, | 138 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, |
157 kExtensionScheme), | 139 kExtensionScheme), |
158 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), | 140 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), |
159 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | 141 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, |
160 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 142 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
161 | 143 |
162 Register(CONTENT_SETTINGS_TYPE_GEOLOCATION, "geolocation", | 144 Register(CONTENT_SETTINGS_TYPE_GEOLOCATION, "geolocation", |
163 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, | 145 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, |
(...skipping 13 matching lines...) Expand all Loading... | |
177 // implements additional incognito exceptions. | 159 // implements additional incognito exceptions. |
178 ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW); | 160 ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW); |
179 | 161 |
180 Register(CONTENT_SETTINGS_TYPE_FULLSCREEN, "fullscreen", CONTENT_SETTING_ASK, | 162 Register(CONTENT_SETTINGS_TYPE_FULLSCREEN, "fullscreen", CONTENT_SETTING_ASK, |
181 WebsiteSettingsInfo::SYNCABLE, | 163 WebsiteSettingsInfo::SYNCABLE, |
182 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | 164 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), |
183 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_ASK), | 165 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_ASK), |
184 WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, | 166 WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, |
185 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 167 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
186 | 168 |
187 Register(CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock", CONTENT_SETTING_ASK, | |
188 WebsiteSettingsInfo::SYNCABLE, | |
189 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | |
190 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | |
191 CONTENT_SETTING_ASK), | |
192 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
193 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
194 | |
195 Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic", | 169 Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic", |
196 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, | 170 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, |
197 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | 171 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), |
198 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | 172 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, |
199 CONTENT_SETTING_ASK), | 173 CONTENT_SETTING_ASK), |
200 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, | 174 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, |
201 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 175 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
202 | 176 |
203 Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera", | 177 Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera", |
204 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, | 178 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, |
205 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | 179 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), |
206 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | 180 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, |
207 CONTENT_SETTING_ASK), | 181 CONTENT_SETTING_ASK), |
208 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, | 182 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, |
209 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 183 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
210 | 184 |
211 Register(CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker", | 185 RegisterDesktop(CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker", |
msramek
2016/05/17 18:58:27
nit: Move this down as well?
| |
212 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, | 186 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, |
213 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | 187 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), |
214 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | 188 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, |
215 CONTENT_SETTING_ASK), | 189 CONTENT_SETTING_ASK), |
216 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, | 190 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, |
217 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 191 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
218 | 192 |
219 Register(CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "automatic-downloads", | 193 Register(CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "automatic-downloads", |
220 CONTENT_SETTING_ASK, WebsiteSettingsInfo::SYNCABLE, | 194 CONTENT_SETTING_ASK, WebsiteSettingsInfo::SYNCABLE, |
221 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, | 195 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, |
222 kExtensionScheme), | 196 kExtensionScheme), |
223 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | 197 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, |
224 CONTENT_SETTING_ASK), | 198 CONTENT_SETTING_ASK), |
225 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | 199 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, |
226 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 200 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
227 | 201 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
264 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, | 238 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, |
265 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 239 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
266 | 240 |
267 Register(CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync", | 241 Register(CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync", |
268 CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, | 242 CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, |
269 WhitelistedSchemes(), | 243 WhitelistedSchemes(), |
270 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), | 244 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), |
271 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, | 245 WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, |
272 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 246 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
273 | 247 |
274 // Content settings that aren't used to store any data. TODO(raymes): use a | |
275 // different mechanism rather than content settings to represent these. | |
276 // Since nothing is stored in them, there is no real point in them being a | |
277 // content setting. | |
278 Register(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, "protocol-handler", | |
279 CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE, | |
280 WhitelistedSchemes(), ValidSettings(), | |
281 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
282 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
283 | |
284 Register(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script", | |
285 CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE, | |
286 WhitelistedSchemes(), ValidSettings(), | |
287 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
288 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
289 | |
290 Register(CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, "bluetooth-guard", | 248 Register(CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, "bluetooth-guard", |
291 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, | 249 CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, |
292 WhitelistedSchemes(), | 250 WhitelistedSchemes(), |
293 ValidSettings(CONTENT_SETTING_ASK, CONTENT_SETTING_BLOCK), | 251 ValidSettings(CONTENT_SETTING_ASK, CONTENT_SETTING_BLOCK), |
294 WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, | 252 WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, |
295 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | 253 ContentSettingsInfo::INHERIT_IN_INCOGNITO); |
254 | |
255 // Desktop-only content settings. | |
256 RegisterDesktop(CONTENT_SETTINGS_TYPE_IMAGES, "images", CONTENT_SETTING_ALLOW, | |
257 WebsiteSettingsInfo::SYNCABLE, | |
258 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme, | |
259 kExtensionScheme), | |
260 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), | |
261 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
262 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
263 | |
264 RegisterDesktop(CONTENT_SETTINGS_TYPE_PLUGINS, "plugins", | |
265 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT, | |
266 WebsiteSettingsInfo::SYNCABLE, | |
267 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | |
268 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | |
269 CONTENT_SETTING_ASK, | |
270 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT), | |
271 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
272 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
273 | |
274 RegisterDesktop(CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock", | |
275 CONTENT_SETTING_ASK, WebsiteSettingsInfo::SYNCABLE, | |
276 WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), | |
277 ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, | |
278 CONTENT_SETTING_ASK), | |
279 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
280 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
281 | |
282 // Content settings that aren't used to store any data. TODO(raymes): use a | |
283 // different mechanism rather than content settings to represent these. | |
284 // Since nothing is stored in them, there is no real point in them being a | |
285 // content setting. | |
286 RegisterDesktop(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, "protocol-handler", | |
287 CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE, | |
288 WhitelistedSchemes(), ValidSettings(), | |
289 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
290 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
291 | |
292 RegisterDesktop(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script", | |
293 CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE, | |
294 WhitelistedSchemes(), ValidSettings(), | |
295 WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, | |
296 ContentSettingsInfo::INHERIT_IN_INCOGNITO); | |
296 } | 297 } |
297 | 298 |
298 void ContentSettingsRegistry::Register( | 299 void ContentSettingsRegistry::Register( |
299 ContentSettingsType type, | 300 ContentSettingsType type, |
300 const std::string& name, | 301 const std::string& name, |
301 ContentSetting initial_default_value, | 302 ContentSetting initial_default_value, |
302 WebsiteSettingsInfo::SyncStatus sync_status, | 303 WebsiteSettingsInfo::SyncStatus sync_status, |
303 const std::vector<std::string>& whitelisted_schemes, | 304 const std::vector<std::string>& whitelisted_schemes, |
304 const std::set<ContentSetting>& valid_settings, | 305 const std::set<ContentSetting>& valid_settings, |
305 WebsiteSettingsInfo::ScopingType scoping_type, | 306 WebsiteSettingsInfo::ScopingType scoping_type, |
(...skipping 11 matching lines...) Expand all Loading... | |
317 website_settings_registry_->Register( | 318 website_settings_registry_->Register( |
318 type, name, std::move(default_value), sync_status, | 319 type, name, std::move(default_value), sync_status, |
319 WebsiteSettingsInfo::NOT_LOSSY, scoping_type, | 320 WebsiteSettingsInfo::NOT_LOSSY, scoping_type, |
320 WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); | 321 WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); |
321 DCHECK(!ContainsKey(content_settings_info_, type)); | 322 DCHECK(!ContainsKey(content_settings_info_, type)); |
322 content_settings_info_[type] = make_scoped_ptr( | 323 content_settings_info_[type] = make_scoped_ptr( |
323 new ContentSettingsInfo(website_settings_info, whitelisted_schemes, | 324 new ContentSettingsInfo(website_settings_info, whitelisted_schemes, |
324 valid_settings, incognito_behavior)); | 325 valid_settings, incognito_behavior)); |
325 } | 326 } |
326 | 327 |
328 void ContentSettingsRegistry::RegisterDesktop( | |
msramek
2016/05/17 18:58:26
Since we do basically everything else via enum, ma
| |
329 ContentSettingsType type, | |
330 const std::string& name, | |
331 ContentSetting initial_default_value, | |
332 WebsiteSettingsInfo::SyncStatus sync_status, | |
333 const std::vector<std::string>& whitelisted_schemes, | |
334 const std::set<ContentSetting>& valid_settings, | |
335 WebsiteSettingsInfo::ScopingType scoping_type, | |
336 ContentSettingsInfo::IncognitoBehavior incognito_behavior) { | |
337 #if !defined(OS_ANDROID) | |
msramek
2016/05/17 18:58:27
Hmm, but what about iOS? :)
msramek
2016/05/17 19:12:11
OK, after a quick search it appears that we have s
| |
338 Register(type, name, initial_default_value, sync_status, whitelisted_schemes, | |
339 valid_settings, scoping_type, incognito_behavior); | |
340 #endif | |
341 } | |
342 | |
327 } // namespace content_settings | 343 } // namespace content_settings |
OLD | NEW |