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 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 // | 70 // |
71 // This may be called on any thread. | 71 // This may be called on any thread. |
72 ContentSetting GetDefaultContentSetting(ContentSettingsType content_type, | 72 ContentSetting GetDefaultContentSetting(ContentSettingsType content_type, |
73 std::string* provider_id) const; | 73 std::string* provider_id) const; |
74 | 74 |
75 // Returns the default settings for all content types. | 75 // Returns the default settings for all content types. |
76 // | 76 // |
77 // This may be called on any thread. | 77 // This may be called on any thread. |
78 ContentSettings GetDefaultContentSettings() const; | 78 ContentSettings GetDefaultContentSettings() const; |
79 | 79 |
80 // Returns a single |ContentSetting| which applies to the given URLs. | 80 // Returns a single |ContentSetting| which applies to the given URLs. Note |
81 // Note that certain internal schemes are whitelisted. | 81 // that certain internal schemes are whitelisted. For |CONTENT_TYPE_COOKIES|, |
82 // For |CONTENT_TYPE_COOKIES|, |GetCookieContentSetting| should be called, | 82 // |CookieSettings| should be used instead. For content types that can't be |
83 // and for content types that can't be converted to a ContentSetting, | 83 // converted to a |ContentSetting|, |GetContentSettingValue| should be called. |
84 // |GetContentSettingValue| should be called. | |
85 // If there is no content setting, returns CONTENT_SETTING_DEFAULT. | 84 // If there is no content setting, returns CONTENT_SETTING_DEFAULT. |
| 85 // |
86 // May be called on any thread. | 86 // May be called on any thread. |
87 ContentSetting GetContentSetting( | 87 ContentSetting GetContentSetting( |
88 const GURL& primary_url, | 88 const GURL& primary_url, |
89 const GURL& secondary_url, | 89 const GURL& secondary_url, |
90 ContentSettingsType content_type, | 90 ContentSettingsType content_type, |
91 const std::string& resource_identifier) const; | 91 const std::string& resource_identifier) const; |
92 | 92 |
93 // Returns a single content setting |Value| which applies to the given URLs. | 93 // Returns a single content setting |Value| which applies to the given URLs. |
94 // If |primary_pattern| and |secondary_pattern| are not NULL, they are set to | 94 // If |primary_pattern| and |secondary_pattern| are not NULL, they are set to |
95 // the patterns of the applying rule. | 95 // the patterns of the applying rule. |
96 // Note that certain internal schemes are whitelisted. | 96 // Note that certain internal schemes are whitelisted. |
97 // If there is no content setting, returns NULL and leaves |primary_pattern| | 97 // If there is no content setting, returns NULL and leaves |primary_pattern| |
98 // and |secondary_pattern| unchanged. | 98 // and |secondary_pattern| unchanged. |
99 // Otherwise transfers ownership of the resulting |Value| to the caller. | 99 // Otherwise transfers ownership of the resulting |Value| to the caller. |
100 // May be called on any thread. | 100 // May be called on any thread. |
101 base::Value* GetContentSettingValue( | 101 base::Value* GetContentSettingValue( |
102 const GURL& primary_url, | 102 const GURL& primary_url, |
103 const GURL& secondary_url, | 103 const GURL& secondary_url, |
104 ContentSettingsType content_type, | 104 ContentSettingsType content_type, |
105 const std::string& resource_identifier, | 105 const std::string& resource_identifier, |
106 ContentSettingsPattern* primary_pattern, | 106 ContentSettingsPattern* primary_pattern, |
107 ContentSettingsPattern* secondary_pattern) const; | 107 ContentSettingsPattern* secondary_pattern) const; |
108 | 108 |
109 // Gets the content setting for cookies. This takes the third party cookie | 109 // Returns all ContentSettings which apply to the given |primary_url|. For |
110 // flag into account, and therefore needs to know whether we read or write a | 110 // content setting types that require an additional resource identifier, the |
111 // cookie. | 111 // default content setting is returned. |
112 // | |
113 // This may be called on any thread. | |
114 ContentSetting GetCookieContentSetting( | |
115 const GURL& url, | |
116 const GURL& first_party_url, | |
117 bool setting_cookie) const; | |
118 | |
119 // Returns all ContentSettings which apply to the given URLs. For content | |
120 // setting types that require an additional resource identifier, the default | |
121 // content setting is returned. | |
122 // | 112 // |
123 // This may be called on any thread. | 113 // This may be called on any thread. |
124 ContentSettings GetContentSettings( | 114 ContentSettings GetContentSettings( |
125 const GURL& primary_url, | 115 const GURL& primary_url) const; |
126 const GURL& secondary_url) const; | |
127 | 116 |
128 // For a given content type, returns all patterns with a non-default setting, | 117 // For a given content type, returns all patterns with a non-default setting, |
129 // mapped to their actual settings, in lexicographical order. |settings| | 118 // mapped to their actual settings, in lexicographical order. |settings| |
130 // must be a non-NULL outparam. If this map was created for the | 119 // must be a non-NULL outparam. If this map was created for the |
131 // incognito profile, it will only return those settings differing from | 120 // incognito profile, it will only return those settings differing from |
132 // the main map. For ContentSettingsTypes that require an resource identifier | 121 // the main map. For ContentSettingsTypes that require an resource identifier |
133 // to be specified, the |resource_identifier| must be non-empty. | 122 // to be specified, the |resource_identifier| must be non-empty. |
134 // | 123 // |
135 // This may be called on any thread. | 124 // This may be called on any thread. |
136 void GetSettingsForOneType(ContentSettingsType content_type, | 125 void GetSettingsForOneType(ContentSettingsType content_type, |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 ContentSettingsPattern primary_pattern, | 189 ContentSettingsPattern primary_pattern, |
201 ContentSettingsPattern secondary_pattern, | 190 ContentSettingsPattern secondary_pattern, |
202 ContentSettingsType content_type, | 191 ContentSettingsType content_type, |
203 std::string resource_identifier); | 192 std::string resource_identifier); |
204 | 193 |
205 // content::NotificationObserver implementation. | 194 // content::NotificationObserver implementation. |
206 virtual void Observe(int type, | 195 virtual void Observe(int type, |
207 const content::NotificationSource& source, | 196 const content::NotificationSource& source, |
208 const content::NotificationDetails& details); | 197 const content::NotificationDetails& details); |
209 | 198 |
| 199 // Returns true if we should allow all content types for this URL. This is |
| 200 // true for various internal objects like chrome:// URLs, so UI and other |
| 201 // things users think of as "not webpages" don't break. |
| 202 static bool ShouldAllowAllContent(const GURL& url, |
| 203 ContentSettingsType content_type); |
| 204 |
210 private: | 205 private: |
211 friend class base::RefCountedThreadSafe<HostContentSettingsMap>; | 206 friend class base::RefCountedThreadSafe<HostContentSettingsMap>; |
212 friend class HostContentSettingsMapTest_NonDefaultSettings_Test; | 207 friend class HostContentSettingsMapTest_NonDefaultSettings_Test; |
213 | 208 |
214 typedef std::map<ProviderType, content_settings::ProviderInterface*> | 209 typedef std::map<ProviderType, content_settings::ProviderInterface*> |
215 ProviderMap; | 210 ProviderMap; |
216 typedef ProviderMap::iterator ProviderIterator; | 211 typedef ProviderMap::iterator ProviderIterator; |
217 typedef ProviderMap::const_iterator ConstProviderIterator; | 212 typedef ProviderMap::const_iterator ConstProviderIterator; |
218 | 213 |
219 virtual ~HostContentSettingsMap(); | 214 virtual ~HostContentSettingsMap(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 mutable base::Lock lock_; | 253 mutable base::Lock lock_; |
259 | 254 |
260 // Misc global settings. | 255 // Misc global settings. |
261 bool block_third_party_cookies_; | 256 bool block_third_party_cookies_; |
262 bool is_block_third_party_cookies_managed_; | 257 bool is_block_third_party_cookies_managed_; |
263 | 258 |
264 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap); | 259 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap); |
265 }; | 260 }; |
266 | 261 |
267 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ | 262 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ |
OLD | NEW |