Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(621)

Side by Side Diff: chrome/browser/content_settings/content_settings_policy_provider.cc

Issue 10537099: add "always allow" option to the mediastream infobar and allow user to allow/not allow acces to devi (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Check the exceptions before the default setting, sites in the exceptions list can access the device… Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/content_settings/content_settings_policy_provider.h" 5 #include "chrome/browser/content_settings/content_settings_policy_provider.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 17 matching lines...) Expand all
28 prefs::kManagedDefaultCookiesSetting, 28 prefs::kManagedDefaultCookiesSetting,
29 prefs::kManagedDefaultImagesSetting, 29 prefs::kManagedDefaultImagesSetting,
30 prefs::kManagedDefaultJavaScriptSetting, 30 prefs::kManagedDefaultJavaScriptSetting,
31 prefs::kManagedDefaultPluginsSetting, 31 prefs::kManagedDefaultPluginsSetting,
32 prefs::kManagedDefaultPopupsSetting, 32 prefs::kManagedDefaultPopupsSetting,
33 prefs::kManagedDefaultGeolocationSetting, 33 prefs::kManagedDefaultGeolocationSetting,
34 prefs::kManagedDefaultNotificationsSetting, 34 prefs::kManagedDefaultNotificationsSetting,
35 NULL, // No policy for default value of content type intents 35 NULL, // No policy for default value of content type intents
36 NULL, // No policy for default value of content type auto-select-certificate 36 NULL, // No policy for default value of content type auto-select-certificate
37 NULL, // No policy for default value of fullscreen requests 37 NULL, // No policy for default value of fullscreen requests
38 prefs::kManagedDefaultMediaStreamSetting,
38 }; 39 };
39 40
40 struct PrefsForManagedContentSettingsMapEntry { 41 struct PrefsForManagedContentSettingsMapEntry {
41 const char* pref_name; 42 const char* pref_name;
42 ContentSettingsType content_type; 43 ContentSettingsType content_type;
43 ContentSetting setting; 44 ContentSetting setting;
44 }; 45 };
45 46
46 const PrefsForManagedContentSettingsMapEntry 47 const PrefsForManagedContentSettingsMapEntry
47 kPrefsForManagedContentSettingsMap[] = { 48 kPrefsForManagedContentSettingsMap[] = {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 PrefService::UNSYNCABLE_PREF); 151 PrefService::UNSYNCABLE_PREF);
151 prefs->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, 152 prefs->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting,
152 CONTENT_SETTING_DEFAULT, 153 CONTENT_SETTING_DEFAULT,
153 PrefService::UNSYNCABLE_PREF); 154 PrefService::UNSYNCABLE_PREF);
154 prefs->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, 155 prefs->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting,
155 CONTENT_SETTING_DEFAULT, 156 CONTENT_SETTING_DEFAULT,
156 PrefService::UNSYNCABLE_PREF); 157 PrefService::UNSYNCABLE_PREF);
157 prefs->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, 158 prefs->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting,
158 CONTENT_SETTING_DEFAULT, 159 CONTENT_SETTING_DEFAULT,
159 PrefService::UNSYNCABLE_PREF); 160 PrefService::UNSYNCABLE_PREF);
161 prefs->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting,
162 CONTENT_SETTING_DEFAULT,
163 PrefService::UNSYNCABLE_PREF);
160 } 164 }
161 165
162 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { 166 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) {
163 DCHECK_EQ(arraysize(kPrefToManageType), 167 DCHECK_EQ(arraysize(kPrefToManageType),
164 static_cast<size_t>(CONTENT_SETTINGS_NUM_TYPES)); 168 static_cast<size_t>(CONTENT_SETTINGS_NUM_TYPES));
165 ReadManagedDefaultSettings(); 169 ReadManagedDefaultSettings();
166 ReadManagedContentSettings(false); 170 ReadManagedContentSettings(false);
167 171
168 pref_change_registrar_.Init(prefs_); 172 pref_change_registrar_.Init(prefs_);
169 pref_change_registrar_.Add(prefs::kManagedAutoSelectCertificateForUrls, this); 173 pref_change_registrar_.Add(prefs::kManagedAutoSelectCertificateForUrls, this);
(...skipping 17 matching lines...) Expand all
187 // in parallel to the preference default content settings. If a 191 // in parallel to the preference default content settings. If a
188 // default content settings type is managed any user defined excpetions 192 // default content settings type is managed any user defined excpetions
189 // (patterns) for this type are ignored. 193 // (patterns) for this type are ignored.
190 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, this); 194 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, this);
191 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, this); 195 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, this);
192 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, this); 196 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, this);
193 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, this); 197 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, this);
194 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this); 198 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this);
195 pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this); 199 pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this);
196 pref_change_registrar_.Add(prefs::kManagedDefaultNotificationsSetting, this); 200 pref_change_registrar_.Add(prefs::kManagedDefaultNotificationsSetting, this);
201 pref_change_registrar_.Add(prefs::kManagedDefaultMediaStreamSetting, this);
197 } 202 }
198 203
199 PolicyProvider::~PolicyProvider() { 204 PolicyProvider::~PolicyProvider() {
200 DCHECK(!prefs_); 205 DCHECK(!prefs_);
201 } 206 }
202 207
203 RuleIterator* PolicyProvider::GetRuleIterator( 208 RuleIterator* PolicyProvider::GetRuleIterator(
204 ContentSettingsType content_type, 209 ContentSettingsType content_type,
205 const ResourceIdentifier& resource_identifier, 210 const ResourceIdentifier& resource_identifier,
206 bool incognito) const { 211 bool incognito) const {
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } else if (*name == prefs::kManagedDefaultJavaScriptSetting) { 433 } else if (*name == prefs::kManagedDefaultJavaScriptSetting) {
429 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT); 434 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT);
430 } else if (*name == prefs::kManagedDefaultPluginsSetting) { 435 } else if (*name == prefs::kManagedDefaultPluginsSetting) {
431 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS); 436 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS);
432 } else if (*name == prefs::kManagedDefaultPopupsSetting) { 437 } else if (*name == prefs::kManagedDefaultPopupsSetting) {
433 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_POPUPS); 438 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_POPUPS);
434 } else if (*name == prefs::kManagedDefaultGeolocationSetting) { 439 } else if (*name == prefs::kManagedDefaultGeolocationSetting) {
435 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_GEOLOCATION); 440 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_GEOLOCATION);
436 } else if (*name == prefs::kManagedDefaultNotificationsSetting) { 441 } else if (*name == prefs::kManagedDefaultNotificationsSetting) {
437 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 442 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
443 } else if (*name == prefs::kManagedDefaultMediaStreamSetting) {
444 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM);
438 } else if (*name == prefs::kManagedAutoSelectCertificateForUrls || 445 } else if (*name == prefs::kManagedAutoSelectCertificateForUrls ||
439 *name == prefs::kManagedCookiesAllowedForUrls || 446 *name == prefs::kManagedCookiesAllowedForUrls ||
440 *name == prefs::kManagedCookiesBlockedForUrls || 447 *name == prefs::kManagedCookiesBlockedForUrls ||
441 *name == prefs::kManagedCookiesSessionOnlyForUrls || 448 *name == prefs::kManagedCookiesSessionOnlyForUrls ||
442 *name == prefs::kManagedImagesAllowedForUrls || 449 *name == prefs::kManagedImagesAllowedForUrls ||
443 *name == prefs::kManagedImagesBlockedForUrls || 450 *name == prefs::kManagedImagesBlockedForUrls ||
444 *name == prefs::kManagedJavaScriptAllowedForUrls || 451 *name == prefs::kManagedJavaScriptAllowedForUrls ||
445 *name == prefs::kManagedJavaScriptBlockedForUrls || 452 *name == prefs::kManagedJavaScriptBlockedForUrls ||
446 *name == prefs::kManagedPluginsAllowedForUrls || 453 *name == prefs::kManagedPluginsAllowedForUrls ||
447 *name == prefs::kManagedPluginsBlockedForUrls || 454 *name == prefs::kManagedPluginsBlockedForUrls ||
448 *name == prefs::kManagedPopupsAllowedForUrls || 455 *name == prefs::kManagedPopupsAllowedForUrls ||
449 *name == prefs::kManagedPopupsBlockedForUrls || 456 *name == prefs::kManagedPopupsBlockedForUrls ||
450 *name == prefs::kManagedNotificationsAllowedForUrls || 457 *name == prefs::kManagedNotificationsAllowedForUrls ||
451 *name == prefs::kManagedNotificationsBlockedForUrls) { 458 *name == prefs::kManagedNotificationsBlockedForUrls) {
452 ReadManagedContentSettings(true); 459 ReadManagedContentSettings(true);
453 ReadManagedDefaultSettings(); 460 ReadManagedDefaultSettings();
454 } 461 }
455 } else { 462 } else {
456 NOTREACHED() << "Unexpected notification"; 463 NOTREACHED() << "Unexpected notification";
457 return; 464 return;
458 } 465 }
459 NotifyObservers(ContentSettingsPattern(), 466 NotifyObservers(ContentSettingsPattern(),
460 ContentSettingsPattern(), 467 ContentSettingsPattern(),
461 CONTENT_SETTINGS_TYPE_DEFAULT, 468 CONTENT_SETTINGS_TYPE_DEFAULT,
462 std::string()); 469 std::string());
463 } 470 }
464 471
465 } // namespace content_settings 472 } // namespace content_settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698