Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // Maps hostnames to custom content settings. Written on the UI thread and read | 5 // Maps hostnames to custom content settings. Written on the UI thread and read |
| 6 // on any thread. One instance per profile. | 6 // on any thread. One instance per profile. |
| 7 | 7 |
| 8 #ifndef CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ | 8 #ifndef CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ |
| 9 #define CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ | 9 #define CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ |
| 10 #pragma once | 10 #pragma once |
| 11 | 11 |
| 12 #include <map> | 12 #include <map> |
| 13 #include <string> | 13 #include <string> |
| 14 #include <vector> | 14 #include <vector> |
| 15 | 15 |
| 16 #include "base/basictypes.h" | 16 #include "base/basictypes.h" |
| 17 #include "base/memory/ref_counted.h" | 17 #include "base/memory/ref_counted.h" |
| 18 #include "base/synchronization/lock.h" | 18 #include "base/synchronization/lock.h" |
| 19 #include "base/tuple.h" | 19 #include "base/tuple.h" |
| 20 #include "base/values.h" | |
|
Bernhard Bauer
2011/11/11 14:00:40
Why do you need this header? base::Value is alread
markusheintz_
2011/11/14 11:15:10
Done.
| |
| 20 #include "chrome/browser/content_settings/content_settings_observer.h" | 21 #include "chrome/browser/content_settings/content_settings_observer.h" |
| 21 #include "chrome/browser/prefs/pref_change_registrar.h" | 22 #include "chrome/browser/prefs/pref_change_registrar.h" |
| 22 #include "chrome/common/content_settings.h" | 23 #include "chrome/common/content_settings.h" |
| 23 #include "chrome/common/content_settings_pattern.h" | 24 #include "chrome/common/content_settings_pattern.h" |
| 24 | 25 |
| 25 namespace base { | 26 namespace base { |
| 26 class Value; | 27 class Value; |
| 27 } // namespace base | 28 } // namespace base |
| 28 | 29 |
| 29 namespace content_settings { | 30 namespace content_settings { |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 128 // ContentSettingsTypes that require an resource identifier to be specified, | 129 // ContentSettingsTypes that require an resource identifier to be specified, |
| 129 // the |resource_identifier| must be non-empty. | 130 // the |resource_identifier| must be non-empty. |
| 130 // | 131 // |
| 131 // This should only be called on the UI thread. | 132 // This should only be called on the UI thread. |
| 132 void SetContentSetting(const ContentSettingsPattern& primary_pattern, | 133 void SetContentSetting(const ContentSettingsPattern& primary_pattern, |
| 133 const ContentSettingsPattern& secondary_pattern, | 134 const ContentSettingsPattern& secondary_pattern, |
| 134 ContentSettingsType content_type, | 135 ContentSettingsType content_type, |
| 135 const std::string& resource_identifier, | 136 const std::string& resource_identifier, |
| 136 ContentSetting setting); | 137 ContentSetting setting); |
| 137 | 138 |
| 139 // Sets the |value| for the given patterns and content type. Setting the | |
| 140 // value to NULL causes the default value for that type to be used when | |
| 141 // loading pages matching this pattern. For ContentSettingsTypes that require | |
|
Bernhard Bauer
2011/11/11 14:00:40
Urgh, that comment is outdated :( If you're suffer
markusheintz_
2011/11/14 11:15:10
Done.
| |
| 142 // an resource identifier to be specified, the |resource_identifier| must be | |
| 143 // non-empty. | |
| 144 // | |
| 145 // Takes ownership of the passed value. | |
| 146 void SetWebsiteSetting(const ContentSettingsPattern& primary_pattern, | |
| 147 const ContentSettingsPattern& secondary_pattern, | |
| 148 ContentSettingsType content_type, | |
| 149 const std::string& resource_identifier, | |
| 150 base::Value* value); | |
| 151 | |
| 138 // Convenience method to add a content setting for the given URLs, making sure | 152 // Convenience method to add a content setting for the given URLs, making sure |
| 139 // that there is no setting overriding it. For ContentSettingsTypes that | 153 // that there is no setting overriding it. For ContentSettingsTypes that |
| 140 // require an resource identifier to be specified, the |resource_identifier| | 154 // require an resource identifier to be specified, the |resource_identifier| |
| 141 // must be non-empty. | 155 // must be non-empty. |
| 142 // | 156 // |
| 143 // This should only be called on the UI thread. | 157 // This should only be called on the UI thread. |
| 144 void AddExceptionForURL(const GURL& primary_url, | 158 void AddExceptionForURL(const GURL& primary_url, |
| 145 const GURL& secondary_url, | 159 const GURL& secondary_url, |
| 146 ContentSettingsType content_type, | 160 ContentSettingsType content_type, |
| 147 const std::string& resource_identifier, | 161 const std::string& resource_identifier, |
| 148 ContentSetting setting); | 162 ContentSetting setting); |
| 149 | 163 |
| 150 // Clears all host-specific settings for one content type. | 164 // Clears all host-specific settings for one content type. |
| 151 // | 165 // |
| 152 // This should only be called on the UI thread. | 166 // This should only be called on the UI thread. |
| 153 void ClearSettingsForOneType(ContentSettingsType content_type); | 167 void ClearSettingsForOneType(ContentSettingsType content_type); |
| 154 | 168 |
| 169 static bool IsValueAllowedForType(const base::Value* value, | |
| 170 ContentSettingsType content_type); | |
| 155 static bool IsSettingAllowedForType(ContentSetting setting, | 171 static bool IsSettingAllowedForType(ContentSetting setting, |
| 156 ContentSettingsType content_type); | 172 ContentSettingsType content_type); |
| 157 | 173 |
| 158 // Detaches the HostContentSettingsMap from all Profile-related objects like | 174 // Detaches the HostContentSettingsMap from all Profile-related objects like |
| 159 // PrefService. This methods needs to be called before destroying the Profile. | 175 // PrefService. This methods needs to be called before destroying the Profile. |
| 160 // Afterwards, none of the methods above that should only be called on the UI | 176 // Afterwards, none of the methods above that should only be called on the UI |
| 161 // thread should be called anymore. | 177 // thread should be called anymore. |
| 162 void ShutdownOnUIThread(); | 178 void ShutdownOnUIThread(); |
| 163 | 179 |
| 164 // content_settings::Observer implementation. | 180 // content_settings::Observer implementation. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 // Content setting providers. | 236 // Content setting providers. |
| 221 ProviderMap content_settings_providers_; | 237 ProviderMap content_settings_providers_; |
| 222 | 238 |
| 223 // Used around accesses to the following objects to guarantee thread safety. | 239 // Used around accesses to the following objects to guarantee thread safety. |
| 224 mutable base::Lock lock_; | 240 mutable base::Lock lock_; |
| 225 | 241 |
| 226 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap); | 242 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap); |
| 227 }; | 243 }; |
| 228 | 244 |
| 229 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ | 245 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ |
| OLD | NEW |