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