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

Side by Side Diff: chrome/browser/content_settings/host_content_settings_map.h

Issue 7713034: HostContentSettingsMap refactoring. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fixing the previous patch set. Created 9 years, 4 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) 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 14 matching lines...) Expand all
25 #include "content/browser/browser_thread.h" 25 #include "content/browser/browser_thread.h"
26 #include "content/common/notification_observer.h" 26 #include "content/common/notification_observer.h"
27 #include "content/common/notification_registrar.h" 27 #include "content/common/notification_registrar.h"
28 28
29 namespace content_settings { 29 namespace content_settings {
30 class DefaultProviderInterface; 30 class DefaultProviderInterface;
31 class ProviderInterface; 31 class ProviderInterface;
32 } // namespace content_settings 32 } // namespace content_settings
33 33
34 class ContentSettingsDetails; 34 class ContentSettingsDetails;
35 class CookieSettings;
35 class ExtensionService; 36 class ExtensionService;
36 class GURL; 37 class GURL;
37 class PrefService; 38 class PrefService;
38 class Profile; 39 class Profile;
39 40
40 class HostContentSettingsMap 41 class HostContentSettingsMap
41 : public content_settings::Observer, 42 : public content_settings::Observer,
42 public NotificationObserver,
43 public base::RefCountedThreadSafe<HostContentSettingsMap> { 43 public base::RefCountedThreadSafe<HostContentSettingsMap> {
44 public: 44 public:
45 typedef Tuple4<ContentSettingsPattern, 45 typedef Tuple4<ContentSettingsPattern,
46 ContentSettingsPattern, 46 ContentSettingsPattern,
47 ContentSetting, 47 ContentSetting,
48 std::string> PatternSettingSourceTuple; 48 std::string> PatternSettingSourceTuple;
49 typedef std::vector<PatternSettingSourceTuple> SettingsForOneType; 49 typedef std::vector<PatternSettingSourceTuple> SettingsForOneType;
50 50
51 HostContentSettingsMap(PrefService* prefs, 51 HostContentSettingsMap(PrefService* prefs,
52 ExtensionService* extension_service, 52 ExtensionService* extension_service,
(...skipping 17 matching lines...) Expand all
70 // require an resource identifier to be specified, the |resource_identifier| 70 // require an resource identifier to be specified, the |resource_identifier|
71 // must be non-empty. 71 // must be non-empty.
72 // 72 //
73 // This may be called on any thread. 73 // This may be called on any thread.
74 ContentSetting GetContentSetting( 74 ContentSetting GetContentSetting(
75 const GURL& primary_url, 75 const GURL& primary_url,
76 const GURL& secondary_url, 76 const GURL& secondary_url,
77 ContentSettingsType content_type, 77 ContentSettingsType content_type,
78 const std::string& resource_identifier) const; 78 const std::string& resource_identifier) const;
79 79
80 // Gets the content setting for cookies. This takes the third party cookie
81 // flag into account, and therefore needs to know whether we read or write a
82 // cookie.
83 //
84 // This may be called on any thread.
85 ContentSetting GetCookieContentSetting(
86 const GURL& url,
87 const GURL& first_party_url,
88 bool setting_cookie) const;
89
90 // Returns a single ContentSetting which applies to the given URLs or 80 // Returns a single ContentSetting which applies to the given URLs or
91 // CONTENT_SETTING_DEFAULT, if no exception applies. Note that certain 81 // CONTENT_SETTING_DEFAULT, if no exception applies. Note that certain
92 // internal schemes are whitelisted. For ContentSettingsTypes that require an 82 // internal schemes are whitelisted. For ContentSettingsTypes that require an
93 // resource identifier to be specified, the |resource_identifier| must be 83 // resource identifier to be specified, the |resource_identifier| must be
94 // non-empty. 84 // non-empty.
95 // 85 //
96 // This may be called on any thread. 86 // This may be called on any thread.
97 ContentSetting GetNonDefaultContentSetting( 87 ContentSetting GetNonDefaultContentSetting(
98 const GURL& primary_url, 88 const GURL& primary_url,
99 const GURL& secondary_url, 89 const GURL& secondary_url,
(...skipping 24 matching lines...) Expand all
124 // must be a non-NULL outparam. If this map was created for the 114 // must be a non-NULL outparam. If this map was created for the
125 // incognito profile, it will only return those settings differing from 115 // incognito profile, it will only return those settings differing from
126 // the main map. For ContentSettingsTypes that require an resource identifier 116 // the main map. For ContentSettingsTypes that require an resource identifier
127 // to be specified, the |resource_identifier| must be non-empty. 117 // to be specified, the |resource_identifier| must be non-empty.
128 // 118 //
129 // This may be called on any thread. 119 // This may be called on any thread.
130 void GetSettingsForOneType(ContentSettingsType content_type, 120 void GetSettingsForOneType(ContentSettingsType content_type,
131 const std::string& resource_identifier, 121 const std::string& resource_identifier,
132 SettingsForOneType* settings) const; 122 SettingsForOneType* settings) const;
133 123
124 // Returns a CookieSettings instance which can be used for reading and writing
125 // cookie-related content settings.
126 CookieSettings* GetCookieSettings();
127
134 // Sets the default setting for a particular content type. This method must 128 // Sets the default setting for a particular content type. This method must
135 // not be invoked on an incognito map. 129 // not be invoked on an incognito map.
136 // 130 //
137 // This should only be called on the UI thread. 131 // This should only be called on the UI thread.
138 void SetDefaultContentSetting(ContentSettingsType content_type, 132 void SetDefaultContentSetting(ContentSettingsType content_type,
139 ContentSetting setting); 133 ContentSetting setting);
140 134
141 // Sets the content setting for the given patterns and content type. 135 // Sets the content setting for the given patterns and content type.
142 // Setting the value to CONTENT_SETTING_DEFAULT causes the default setting 136 // Setting the value to CONTENT_SETTING_DEFAULT causes the default setting
143 // for that type to be used when loading pages matching this pattern. For 137 // for that type to be used when loading pages matching this pattern. For
(...skipping 21 matching lines...) Expand all
165 ContentSetting setting); 159 ContentSetting setting);
166 160
167 // Clears all host-specific settings for one content type. 161 // Clears all host-specific settings for one content type.
168 // 162 //
169 // This should only be called on the UI thread. 163 // This should only be called on the UI thread.
170 void ClearSettingsForOneType(ContentSettingsType content_type); 164 void ClearSettingsForOneType(ContentSettingsType content_type);
171 165
172 static bool IsSettingAllowedForType(ContentSetting setting, 166 static bool IsSettingAllowedForType(ContentSetting setting,
173 ContentSettingsType content_type); 167 ContentSettingsType content_type);
174 168
175 // This setting trumps any host-specific settings.
176 bool BlockThirdPartyCookies() const { return block_third_party_cookies_; }
177 bool IsBlockThirdPartyCookiesManaged() const {
178 return is_block_third_party_cookies_managed_;
179 }
180
181 // Sets whether we block all third-party cookies. This method must not be
182 // invoked on an incognito map.
183 //
184 // This should only be called on the UI thread.
185 void SetBlockThirdPartyCookies(bool block);
186
187 // Returns true if the default setting for the |content_type| is managed. 169 // Returns true if the default setting for the |content_type| is managed.
188 bool IsDefaultContentSettingManaged(ContentSettingsType content_type) const; 170 bool IsDefaultContentSettingManaged(ContentSettingsType content_type) const;
189 171
190 // Detaches the HostContentSettingsMap from all Profile-related objects like 172 // Detaches the HostContentSettingsMap from all Profile-related objects like
191 // PrefService. This methods needs to be called before destroying the Profile. 173 // PrefService. This methods needs to be called before destroying the Profile.
192 // Afterwards, none of the methods above that should only be called on the UI 174 // Afterwards, none of the methods above that should only be called on the UI
193 // thread should be called anymore. 175 // thread should be called anymore.
194 void ShutdownOnUIThread(); 176 void ShutdownOnUIThread();
195 177
196 // content_settings::Observer implementation. 178 // content_settings::Observer implementation.
197 virtual void OnContentSettingChanged( 179 virtual void OnContentSettingChanged(
198 ContentSettingsPattern primary_pattern, 180 ContentSettingsPattern primary_pattern,
199 ContentSettingsPattern secondary_pattern, 181 ContentSettingsPattern secondary_pattern,
200 ContentSettingsType content_type, 182 ContentSettingsType content_type,
201 std::string resource_identifier); 183 std::string resource_identifier);
202 184
203 // NotificationObserver implementation. 185 static bool ShouldAllowAllContent(const GURL& url);
204 virtual void Observe(int type,
205 const NotificationSource& source,
206 const NotificationDetails& details);
207 186
208 private: 187 private:
209 friend class base::RefCountedThreadSafe<HostContentSettingsMap>; 188 friend class base::RefCountedThreadSafe<HostContentSettingsMap>;
210 189
211 virtual ~HostContentSettingsMap(); 190 virtual ~HostContentSettingsMap();
212 191
213 ContentSetting GetContentSettingInternal( 192 ContentSetting GetContentSettingInternal(
214 const GURL& primary_url, 193 const GURL& primary_url,
215 const GURL& secondary_url, 194 const GURL& secondary_url,
216 ContentSettingsType content_type, 195 ContentSettingsType content_type,
217 const std::string& resource_identifier) const; 196 const std::string& resource_identifier) const;
218 197
219 // Various migration methods (old cookie, popup and per-host data gets
220 // migrated to the new format).
221 void MigrateObsoleteCookiePref();
222
223 // Weak; owned by the Profile. 198 // Weak; owned by the Profile.
224 PrefService* prefs_; 199 PrefService* prefs_;
225 200
226 PrefChangeRegistrar pref_change_registrar_;
227
228 // Whether this settings map is for an OTR session. 201 // Whether this settings map is for an OTR session.
229 bool is_off_the_record_; 202 bool is_off_the_record_;
230 203
231 // Whether we are currently updating preferences, this is used to ignore 204 // Whether we are currently updating preferences, this is used to ignore
232 // notifications from the preferences service that we triggered ourself. 205 // notifications from the preferences service that we triggered ourself.
233 bool updating_preferences_; 206 bool updating_preferences_;
234 207
235 // Default content setting providers. 208 // Default content setting providers.
236 std::vector<linked_ptr<content_settings::DefaultProviderInterface> > 209 std::vector<linked_ptr<content_settings::DefaultProviderInterface> >
237 default_content_settings_providers_; 210 default_content_settings_providers_;
238 211
239 // Content setting providers. 212 // Content setting providers.
240 std::vector<linked_ptr<content_settings::ProviderInterface> > 213 std::vector<linked_ptr<content_settings::ProviderInterface> >
241 content_settings_providers_; 214 content_settings_providers_;
242 215
243 // Used around accesses to the following objects to guarantee thread safety. 216 scoped_refptr<CookieSettings> cookie_settings_;
244 mutable base::Lock lock_;
245
246 // Misc global settings.
247 bool block_third_party_cookies_;
248 bool is_block_third_party_cookies_managed_;
249 217
250 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap); 218 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap);
251 }; 219 };
252 220
253 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ 221 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698