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 "components/content_settings/core/browser/content_settings_policy_provi
der.h" | 5 #include "components/content_settings/core/browser/content_settings_policy_provi
der.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW}, | 45 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW}, |
46 {prefs::kManagedNotificationsBlockedForUrls, | 46 {prefs::kManagedNotificationsBlockedForUrls, |
47 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_BLOCK}, | 47 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_BLOCK}, |
48 {prefs::kManagedPluginsAllowedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, | 48 {prefs::kManagedPluginsAllowedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, |
49 CONTENT_SETTING_ALLOW}, | 49 CONTENT_SETTING_ALLOW}, |
50 {prefs::kManagedPluginsBlockedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, | 50 {prefs::kManagedPluginsBlockedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, |
51 CONTENT_SETTING_BLOCK}, | 51 CONTENT_SETTING_BLOCK}, |
52 {prefs::kManagedPopupsAllowedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, | 52 {prefs::kManagedPopupsAllowedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, |
53 CONTENT_SETTING_ALLOW}, | 53 CONTENT_SETTING_ALLOW}, |
54 {prefs::kManagedPopupsBlockedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, | 54 {prefs::kManagedPopupsBlockedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, |
55 CONTENT_SETTING_BLOCK}}; | 55 CONTENT_SETTING_BLOCK}, |
| 56 {prefs::kManagedKeygenAllowedForUrls, |
| 57 CONTENT_SETTINGS_TYPE_KEYGEN, CONTENT_SETTING_ALLOW}, |
| 58 {prefs::kManagedKeygenBlockedForUrls, |
| 59 CONTENT_SETTINGS_TYPE_KEYGEN, CONTENT_SETTING_BLOCK}}; |
56 | 60 |
57 } // namespace | 61 } // namespace |
58 | 62 |
59 namespace content_settings { | 63 namespace content_settings { |
60 | 64 |
61 // The preferences used to manage the default policy value for | 65 // The preferences used to manage the default policy value for |
62 // ContentSettingsTypes. | 66 // ContentSettingsTypes. |
63 struct PolicyProvider::PrefsForManagedDefaultMapEntry { | 67 struct PolicyProvider::PrefsForManagedDefaultMapEntry { |
64 ContentSettingsType content_type; | 68 ContentSettingsType content_type; |
65 const char* pref_name; | 69 const char* pref_name; |
66 }; | 70 }; |
67 | 71 |
68 // static | 72 // static |
69 const PolicyProvider::PrefsForManagedDefaultMapEntry | 73 const PolicyProvider::PrefsForManagedDefaultMapEntry |
70 PolicyProvider::kPrefsForManagedDefault[] = { | 74 PolicyProvider::kPrefsForManagedDefault[] = { |
71 {CONTENT_SETTINGS_TYPE_COOKIES, prefs::kManagedDefaultCookiesSetting}, | 75 {CONTENT_SETTINGS_TYPE_COOKIES, prefs::kManagedDefaultCookiesSetting}, |
72 {CONTENT_SETTINGS_TYPE_IMAGES, prefs::kManagedDefaultImagesSetting}, | 76 {CONTENT_SETTINGS_TYPE_IMAGES, prefs::kManagedDefaultImagesSetting}, |
73 {CONTENT_SETTINGS_TYPE_GEOLOCATION, | 77 {CONTENT_SETTINGS_TYPE_GEOLOCATION, |
74 prefs::kManagedDefaultGeolocationSetting}, | 78 prefs::kManagedDefaultGeolocationSetting}, |
75 {CONTENT_SETTINGS_TYPE_JAVASCRIPT, | 79 {CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
76 prefs::kManagedDefaultJavaScriptSetting}, | 80 prefs::kManagedDefaultJavaScriptSetting}, |
77 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, | 81 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
78 prefs::kManagedDefaultMediaStreamSetting}, | 82 prefs::kManagedDefaultMediaStreamSetting}, |
79 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, | 83 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
80 prefs::kManagedDefaultMediaStreamSetting}, | 84 prefs::kManagedDefaultMediaStreamSetting}, |
81 {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 85 {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
82 prefs::kManagedDefaultNotificationsSetting}, | 86 prefs::kManagedDefaultNotificationsSetting}, |
83 {CONTENT_SETTINGS_TYPE_PLUGINS, prefs::kManagedDefaultPluginsSetting}, | 87 {CONTENT_SETTINGS_TYPE_PLUGINS, prefs::kManagedDefaultPluginsSetting}, |
84 {CONTENT_SETTINGS_TYPE_POPUPS, prefs::kManagedDefaultPopupsSetting}, | 88 {CONTENT_SETTINGS_TYPE_POPUPS, prefs::kManagedDefaultPopupsSetting}, |
| 89 {CONTENT_SETTINGS_TYPE_KEYGEN, prefs::kManagedDefaultKeygenSetting}, |
85 }; | 90 }; |
86 | 91 |
87 // static | 92 // static |
88 void PolicyProvider::RegisterProfilePrefs( | 93 void PolicyProvider::RegisterProfilePrefs( |
89 user_prefs::PrefRegistrySyncable* registry) { | 94 user_prefs::PrefRegistrySyncable* registry) { |
90 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); | 95 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); |
91 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); | 96 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); |
92 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); | 97 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); |
93 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); | 98 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); |
94 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); | 99 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); |
95 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); | 100 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); |
96 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); | 101 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); |
97 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); | 102 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); |
98 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); | 103 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); |
99 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); | 104 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); |
100 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); | 105 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); |
101 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); | 106 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); |
102 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); | 107 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); |
103 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); | 108 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); |
| 109 registry->RegisterListPref(prefs::kManagedKeygenAllowedForUrls); |
| 110 registry->RegisterListPref(prefs::kManagedKeygenBlockedForUrls); |
104 // Preferences for default content setting policies. If a policy is not set of | 111 // Preferences for default content setting policies. If a policy is not set of |
105 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. | 112 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. |
106 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, | 113 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, |
107 CONTENT_SETTING_DEFAULT); | 114 CONTENT_SETTING_DEFAULT); |
108 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, | 115 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, |
109 CONTENT_SETTING_DEFAULT); | 116 CONTENT_SETTING_DEFAULT); |
110 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, | 117 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, |
111 CONTENT_SETTING_DEFAULT); | 118 CONTENT_SETTING_DEFAULT); |
112 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, | 119 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, |
113 CONTENT_SETTING_DEFAULT); | 120 CONTENT_SETTING_DEFAULT); |
114 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, | 121 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, |
115 CONTENT_SETTING_DEFAULT); | 122 CONTENT_SETTING_DEFAULT); |
116 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, | 123 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, |
117 CONTENT_SETTING_DEFAULT); | 124 CONTENT_SETTING_DEFAULT); |
118 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, | 125 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, |
119 CONTENT_SETTING_DEFAULT); | 126 CONTENT_SETTING_DEFAULT); |
120 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, | 127 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, |
121 CONTENT_SETTING_DEFAULT); | 128 CONTENT_SETTING_DEFAULT); |
| 129 registry->RegisterIntegerPref(prefs::kManagedDefaultKeygenSetting, |
| 130 CONTENT_SETTING_DEFAULT); |
122 } | 131 } |
123 | 132 |
124 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { | 133 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { |
125 ReadManagedDefaultSettings(); | 134 ReadManagedDefaultSettings(); |
126 ReadManagedContentSettings(false); | 135 ReadManagedContentSettings(false); |
127 | 136 |
128 pref_change_registrar_.Init(prefs_); | 137 pref_change_registrar_.Init(prefs_); |
129 PrefChangeRegistrar::NamedChangeCallback callback = | 138 PrefChangeRegistrar::NamedChangeCallback callback = |
130 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); | 139 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); |
131 pref_change_registrar_.Add( | 140 pref_change_registrar_.Add( |
132 prefs::kManagedAutoSelectCertificateForUrls, callback); | 141 prefs::kManagedAutoSelectCertificateForUrls, callback); |
133 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); | 142 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); |
134 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); | 143 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); |
135 pref_change_registrar_.Add( | 144 pref_change_registrar_.Add( |
136 prefs::kManagedCookiesSessionOnlyForUrls, callback); | 145 prefs::kManagedCookiesSessionOnlyForUrls, callback); |
137 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); | 146 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); |
138 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); | 147 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); |
139 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); | 148 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); |
140 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); | 149 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); |
141 | |
142 pref_change_registrar_.Add( | 150 pref_change_registrar_.Add( |
143 prefs::kManagedNotificationsAllowedForUrls, callback); | 151 prefs::kManagedNotificationsAllowedForUrls, callback); |
144 pref_change_registrar_.Add( | 152 pref_change_registrar_.Add( |
145 prefs::kManagedNotificationsBlockedForUrls, callback); | 153 prefs::kManagedNotificationsBlockedForUrls, callback); |
146 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); | 154 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); |
147 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); | 155 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); |
148 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); | 156 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); |
149 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); | 157 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); |
| 158 pref_change_registrar_.Add(prefs::kManagedKeygenAllowedForUrls, callback); |
| 159 pref_change_registrar_.Add(prefs::kManagedKeygenBlockedForUrls, callback); |
150 // The following preferences are only used to indicate if a default content | 160 // The following preferences are only used to indicate if a default content |
151 // setting is managed and to hold the managed default setting value. If the | 161 // setting is managed and to hold the managed default setting value. If the |
152 // value for any of the following preferences is set then the corresponding | 162 // value for any of the following preferences is set then the corresponding |
153 // default content setting is managed. These preferences exist in parallel to | 163 // default content setting is managed. These preferences exist in parallel to |
154 // the preference default content settings. If a default content settings type | 164 // the preference default content settings. If a default content settings type |
155 // is managed any user defined exceptions (patterns) for this type are | 165 // is managed any user defined exceptions (patterns) for this type are |
156 // ignored. | 166 // ignored. |
157 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); | 167 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); |
158 pref_change_registrar_.Add( | 168 pref_change_registrar_.Add( |
159 prefs::kManagedDefaultGeolocationSetting, callback); | 169 prefs::kManagedDefaultGeolocationSetting, callback); |
160 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); | 170 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); |
161 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); | 171 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); |
162 pref_change_registrar_.Add( | 172 pref_change_registrar_.Add( |
163 prefs::kManagedDefaultNotificationsSetting, callback); | 173 prefs::kManagedDefaultNotificationsSetting, callback); |
164 pref_change_registrar_.Add( | 174 pref_change_registrar_.Add( |
165 prefs::kManagedDefaultMediaStreamSetting, callback); | 175 prefs::kManagedDefaultMediaStreamSetting, callback); |
166 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); | 176 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); |
167 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); | 177 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); |
| 178 pref_change_registrar_.Add(prefs::kManagedDefaultKeygenSetting, callback); |
168 } | 179 } |
169 | 180 |
170 PolicyProvider::~PolicyProvider() { | 181 PolicyProvider::~PolicyProvider() { |
171 DCHECK(!prefs_); | 182 DCHECK(!prefs_); |
172 } | 183 } |
173 | 184 |
174 RuleIterator* PolicyProvider::GetRuleIterator( | 185 RuleIterator* PolicyProvider::GetRuleIterator( |
175 ContentSettingsType content_type, | 186 ContentSettingsType content_type, |
176 const ResourceIdentifier& resource_identifier, | 187 const ResourceIdentifier& resource_identifier, |
177 bool incognito) const { | 188 bool incognito) const { |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 name == prefs::kManagedCookiesSessionOnlyForUrls || | 399 name == prefs::kManagedCookiesSessionOnlyForUrls || |
389 name == prefs::kManagedImagesAllowedForUrls || | 400 name == prefs::kManagedImagesAllowedForUrls || |
390 name == prefs::kManagedImagesBlockedForUrls || | 401 name == prefs::kManagedImagesBlockedForUrls || |
391 name == prefs::kManagedJavaScriptAllowedForUrls || | 402 name == prefs::kManagedJavaScriptAllowedForUrls || |
392 name == prefs::kManagedJavaScriptBlockedForUrls || | 403 name == prefs::kManagedJavaScriptBlockedForUrls || |
393 name == prefs::kManagedNotificationsAllowedForUrls || | 404 name == prefs::kManagedNotificationsAllowedForUrls || |
394 name == prefs::kManagedNotificationsBlockedForUrls || | 405 name == prefs::kManagedNotificationsBlockedForUrls || |
395 name == prefs::kManagedPluginsAllowedForUrls || | 406 name == prefs::kManagedPluginsAllowedForUrls || |
396 name == prefs::kManagedPluginsBlockedForUrls || | 407 name == prefs::kManagedPluginsBlockedForUrls || |
397 name == prefs::kManagedPopupsAllowedForUrls || | 408 name == prefs::kManagedPopupsAllowedForUrls || |
398 name == prefs::kManagedPopupsBlockedForUrls) { | 409 name == prefs::kManagedPopupsBlockedForUrls || |
| 410 name == prefs::kManagedKeygenAllowedForUrls || |
| 411 name == prefs::kManagedKeygenBlockedForUrls) { |
399 ReadManagedContentSettings(true); | 412 ReadManagedContentSettings(true); |
400 ReadManagedDefaultSettings(); | 413 ReadManagedDefaultSettings(); |
401 } | 414 } |
402 | 415 |
403 NotifyObservers(ContentSettingsPattern(), | 416 NotifyObservers(ContentSettingsPattern(), |
404 ContentSettingsPattern(), | 417 ContentSettingsPattern(), |
405 CONTENT_SETTINGS_TYPE_DEFAULT, | 418 CONTENT_SETTINGS_TYPE_DEFAULT, |
406 std::string()); | 419 std::string()); |
407 } | 420 } |
408 | 421 |
409 } // namespace content_settings | 422 } // namespace content_settings |
OLD | NEW |