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, | |
90 prefs::kManagedDefaultKeygenSetting}, | |
msramek
2015/11/06 16:56:15
nit: This fits on a line.
svaldez
2015/11/06 21:30:07
Done.
| |
85 }; | 91 }; |
86 | 92 |
87 // static | 93 // static |
88 void PolicyProvider::RegisterProfilePrefs( | 94 void PolicyProvider::RegisterProfilePrefs( |
89 user_prefs::PrefRegistrySyncable* registry) { | 95 user_prefs::PrefRegistrySyncable* registry) { |
90 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); | 96 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); |
91 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); | 97 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); |
92 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); | 98 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); |
93 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); | 99 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); |
94 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); | 100 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); |
95 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); | 101 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); |
96 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); | 102 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); |
97 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); | 103 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); |
98 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); | 104 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); |
99 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); | 105 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); |
100 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); | 106 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); |
101 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); | 107 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); |
102 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); | 108 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); |
103 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); | 109 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); |
110 registry->RegisterListPref(prefs::kManagedKeygenAllowedForUrls); | |
111 registry->RegisterListPref(prefs::kManagedKeygenBlockedForUrls); | |
104 // Preferences for default content setting policies. If a policy is not set of | 112 // Preferences for default content setting policies. If a policy is not set of |
105 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. | 113 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. |
106 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, | 114 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, |
107 CONTENT_SETTING_DEFAULT); | 115 CONTENT_SETTING_DEFAULT); |
108 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, | 116 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, |
109 CONTENT_SETTING_DEFAULT); | 117 CONTENT_SETTING_DEFAULT); |
110 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, | 118 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, |
111 CONTENT_SETTING_DEFAULT); | 119 CONTENT_SETTING_DEFAULT); |
112 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, | 120 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, |
113 CONTENT_SETTING_DEFAULT); | 121 CONTENT_SETTING_DEFAULT); |
114 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, | 122 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, |
115 CONTENT_SETTING_DEFAULT); | 123 CONTENT_SETTING_DEFAULT); |
116 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, | 124 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, |
117 CONTENT_SETTING_DEFAULT); | 125 CONTENT_SETTING_DEFAULT); |
118 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, | 126 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, |
119 CONTENT_SETTING_DEFAULT); | 127 CONTENT_SETTING_DEFAULT); |
120 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, | 128 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, |
121 CONTENT_SETTING_DEFAULT); | 129 CONTENT_SETTING_DEFAULT); |
130 registry->RegisterIntegerPref(prefs::kManagedDefaultKeygenSetting, | |
131 CONTENT_SETTING_DEFAULT); | |
122 } | 132 } |
123 | 133 |
124 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { | 134 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { |
125 ReadManagedDefaultSettings(); | 135 ReadManagedDefaultSettings(); |
126 ReadManagedContentSettings(false); | 136 ReadManagedContentSettings(false); |
127 | 137 |
128 pref_change_registrar_.Init(prefs_); | 138 pref_change_registrar_.Init(prefs_); |
129 PrefChangeRegistrar::NamedChangeCallback callback = | 139 PrefChangeRegistrar::NamedChangeCallback callback = |
130 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); | 140 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); |
131 pref_change_registrar_.Add( | 141 pref_change_registrar_.Add( |
132 prefs::kManagedAutoSelectCertificateForUrls, callback); | 142 prefs::kManagedAutoSelectCertificateForUrls, callback); |
133 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); | 143 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); |
134 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); | 144 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); |
135 pref_change_registrar_.Add( | 145 pref_change_registrar_.Add( |
136 prefs::kManagedCookiesSessionOnlyForUrls, callback); | 146 prefs::kManagedCookiesSessionOnlyForUrls, callback); |
137 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); | 147 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); |
138 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); | 148 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); |
139 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); | 149 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); |
140 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); | 150 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); |
141 | |
142 pref_change_registrar_.Add( | 151 pref_change_registrar_.Add( |
143 prefs::kManagedNotificationsAllowedForUrls, callback); | 152 prefs::kManagedNotificationsAllowedForUrls, callback); |
144 pref_change_registrar_.Add( | 153 pref_change_registrar_.Add( |
145 prefs::kManagedNotificationsBlockedForUrls, callback); | 154 prefs::kManagedNotificationsBlockedForUrls, callback); |
146 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); | 155 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); |
147 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); | 156 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); |
148 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); | 157 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); |
149 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); | 158 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); |
159 pref_change_registrar_.Add(prefs::kManagedKeygenAllowedForUrls, callback); | |
160 pref_change_registrar_.Add(prefs::kManagedKeygenBlockedForUrls, callback); | |
150 // The following preferences are only used to indicate if a default content | 161 // 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 | 162 // 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 | 163 // value for any of the following preferences is set then the corresponding |
153 // default content setting is managed. These preferences exist in parallel to | 164 // default content setting is managed. These preferences exist in parallel to |
154 // the preference default content settings. If a default content settings type | 165 // the preference default content settings. If a default content settings type |
155 // is managed any user defined exceptions (patterns) for this type are | 166 // is managed any user defined exceptions (patterns) for this type are |
156 // ignored. | 167 // ignored. |
157 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); | 168 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); |
158 pref_change_registrar_.Add( | 169 pref_change_registrar_.Add( |
159 prefs::kManagedDefaultGeolocationSetting, callback); | 170 prefs::kManagedDefaultGeolocationSetting, callback); |
160 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); | 171 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); |
161 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); | 172 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); |
162 pref_change_registrar_.Add( | 173 pref_change_registrar_.Add( |
163 prefs::kManagedDefaultNotificationsSetting, callback); | 174 prefs::kManagedDefaultNotificationsSetting, callback); |
164 pref_change_registrar_.Add( | 175 pref_change_registrar_.Add( |
165 prefs::kManagedDefaultMediaStreamSetting, callback); | 176 prefs::kManagedDefaultMediaStreamSetting, callback); |
166 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); | 177 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); |
167 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); | 178 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); |
179 pref_change_registrar_.Add(prefs::kManagedDefaultKeygenSetting, callback); | |
168 } | 180 } |
169 | 181 |
170 PolicyProvider::~PolicyProvider() { | 182 PolicyProvider::~PolicyProvider() { |
171 DCHECK(!prefs_); | 183 DCHECK(!prefs_); |
172 } | 184 } |
173 | 185 |
174 RuleIterator* PolicyProvider::GetRuleIterator( | 186 RuleIterator* PolicyProvider::GetRuleIterator( |
175 ContentSettingsType content_type, | 187 ContentSettingsType content_type, |
176 const ResourceIdentifier& resource_identifier, | 188 const ResourceIdentifier& resource_identifier, |
177 bool incognito) const { | 189 bool incognito) const { |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
388 name == prefs::kManagedCookiesSessionOnlyForUrls || | 400 name == prefs::kManagedCookiesSessionOnlyForUrls || |
389 name == prefs::kManagedImagesAllowedForUrls || | 401 name == prefs::kManagedImagesAllowedForUrls || |
390 name == prefs::kManagedImagesBlockedForUrls || | 402 name == prefs::kManagedImagesBlockedForUrls || |
391 name == prefs::kManagedJavaScriptAllowedForUrls || | 403 name == prefs::kManagedJavaScriptAllowedForUrls || |
392 name == prefs::kManagedJavaScriptBlockedForUrls || | 404 name == prefs::kManagedJavaScriptBlockedForUrls || |
393 name == prefs::kManagedNotificationsAllowedForUrls || | 405 name == prefs::kManagedNotificationsAllowedForUrls || |
394 name == prefs::kManagedNotificationsBlockedForUrls || | 406 name == prefs::kManagedNotificationsBlockedForUrls || |
395 name == prefs::kManagedPluginsAllowedForUrls || | 407 name == prefs::kManagedPluginsAllowedForUrls || |
396 name == prefs::kManagedPluginsBlockedForUrls || | 408 name == prefs::kManagedPluginsBlockedForUrls || |
397 name == prefs::kManagedPopupsAllowedForUrls || | 409 name == prefs::kManagedPopupsAllowedForUrls || |
398 name == prefs::kManagedPopupsBlockedForUrls) { | 410 name == prefs::kManagedPopupsBlockedForUrls || |
411 name == prefs::kManagedKeygenAllowedForUrls || | |
412 name == prefs::kManagedKeygenBlockedForUrls) { | |
399 ReadManagedContentSettings(true); | 413 ReadManagedContentSettings(true); |
400 ReadManagedDefaultSettings(); | 414 ReadManagedDefaultSettings(); |
401 } | 415 } |
402 | 416 |
403 NotifyObservers(ContentSettingsPattern(), | 417 NotifyObservers(ContentSettingsPattern(), |
404 ContentSettingsPattern(), | 418 ContentSettingsPattern(), |
405 CONTENT_SETTINGS_TYPE_DEFAULT, | 419 CONTENT_SETTINGS_TYPE_DEFAULT, |
406 std::string()); | 420 std::string()); |
407 } | 421 } |
408 | 422 |
409 } // namespace content_settings | 423 } // namespace content_settings |
OLD | NEW |