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

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: Keeping up to date with trunk. Created 9 years, 3 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
11 11
12 #include <map> 12 #include <map>
13 #include <string> 13 #include <string>
14 #include <utility> 14 #include <utility>
15 #include <vector> 15 #include <vector>
16 16
17 #include "base/basictypes.h" 17 #include "base/basictypes.h"
18 #include "base/memory/linked_ptr.h" 18 #include "base/memory/linked_ptr.h"
19 #include "base/memory/ref_counted.h" 19 #include "base/memory/ref_counted.h"
20 #include "base/values.h" 20 #include "base/values.h"
21 #include "base/synchronization/lock.h" 21 #include "base/synchronization/lock.h"
22 #include "chrome/browser/content_settings/content_settings_pattern.h" 22 #include "chrome/browser/content_settings/content_settings_pattern.h"
23 #include "chrome/browser/content_settings/content_settings_observer.h" 23 #include "chrome/browser/content_settings/content_settings_observer.h"
24 #include "chrome/browser/prefs/pref_change_registrar.h"
25 #include "chrome/common/content_settings.h" 24 #include "chrome/common/content_settings.h"
26 #include "content/browser/browser_thread.h" 25 #include "content/browser/browser_thread.h"
27 #include "content/common/notification_observer.h" 26 #include "content/common/notification_observer.h"
28 #include "content/common/notification_registrar.h" 27 #include "content/common/notification_registrar.h"
29 28
30 namespace content_settings { 29 namespace content_settings {
31 class DefaultProviderInterface; 30 class DefaultProviderInterface;
32 class ProviderInterface; 31 class ProviderInterface;
33 } // namespace content_settings 32 } // namespace content_settings
34 33
35 class ContentSettingsDetails; 34 class ContentSettingsDetails;
36 class ExtensionService; 35 class ExtensionService;
37 class GURL; 36 class GURL;
38 class PrefService; 37 class PrefService;
39 class Profile; 38 class Profile;
40 39
41 class HostContentSettingsMap 40 class HostContentSettingsMap
42 : public content_settings::Observer, 41 : public content_settings::Observer,
43 public NotificationObserver,
44 public base::RefCountedThreadSafe<HostContentSettingsMap> { 42 public base::RefCountedThreadSafe<HostContentSettingsMap> {
45 public: 43 public:
46 // TODO(markusheintz): I sold my soul to the devil on order to add this tuple. 44 // TODO(markusheintz): I sold my soul to the devil on order to add this tuple.
47 // I really want my soul back, so I really will change this ASAP. 45 // I really want my soul back, so I really will change this ASAP.
48 typedef Tuple4<ContentSettingsPattern, 46 typedef Tuple4<ContentSettingsPattern,
49 ContentSettingsPattern, 47 ContentSettingsPattern,
50 ContentSetting, 48 ContentSetting,
51 std::string> PatternSettingSourceTuple; 49 std::string> PatternSettingSourceTuple;
52 typedef std::vector<PatternSettingSourceTuple> SettingsForOneType; 50 typedef std::vector<PatternSettingSourceTuple> SettingsForOneType;
53 51
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 // |resource_identifier| must be non-empty. Ownership of the returned |Value| 84 // |resource_identifier| must be non-empty. Ownership of the returned |Value|
87 // is transfered to the caller. 85 // is transfered to the caller.
88 // 86 //
89 // This may be called on any thread. 87 // This may be called on any thread.
90 Value* GetContentSettingValue( 88 Value* GetContentSettingValue(
91 const GURL& primary_url, 89 const GURL& primary_url,
92 const GURL& secondary_url, 90 const GURL& secondary_url,
93 ContentSettingsType content_type, 91 ContentSettingsType content_type,
94 const std::string& resource_identifier) const; 92 const std::string& resource_identifier) const;
95 93
96 // Gets the content setting for cookies. This takes the third party cookie
97 // flag into account, and therefore needs to know whether we read or write a
98 // cookie.
99 //
100 // This may be called on any thread.
101 ContentSetting GetCookieContentSetting(
102 const GURL& url,
103 const GURL& first_party_url,
104 bool setting_cookie) const;
105
106 // Returns all ContentSettings which apply to the given URLs. For content 94 // Returns all ContentSettings which apply to the given URLs. For content
107 // setting types that require an additional resource identifier, the default 95 // setting types that require an additional resource identifier, the default
108 // content setting is returned. 96 // content setting is returned.
109 // 97 //
110 // This may be called on any thread. 98 // This may be called on any thread.
111 ContentSettings GetContentSettings( 99 ContentSettings GetContentSettings(
112 const GURL& primary_url, 100 const GURL& primary_url,
113 const GURL& secondary_url) const; 101 const GURL& secondary_url) const;
114 102
115 // For a given content type, returns all patterns with a non-default setting, 103 // For a given content type, returns all patterns with a non-default setting,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 ContentSetting setting); 145 ContentSetting setting);
158 146
159 // Clears all host-specific settings for one content type. 147 // Clears all host-specific settings for one content type.
160 // 148 //
161 // This should only be called on the UI thread. 149 // This should only be called on the UI thread.
162 void ClearSettingsForOneType(ContentSettingsType content_type); 150 void ClearSettingsForOneType(ContentSettingsType content_type);
163 151
164 static bool IsSettingAllowedForType(ContentSetting setting, 152 static bool IsSettingAllowedForType(ContentSetting setting,
165 ContentSettingsType content_type); 153 ContentSettingsType content_type);
166 154
167 // This setting trumps any host-specific settings.
168 bool BlockThirdPartyCookies() const { return block_third_party_cookies_; }
169 bool IsBlockThirdPartyCookiesManaged() const {
170 return is_block_third_party_cookies_managed_;
171 }
172
173 // Sets whether we block all third-party cookies. This method must not be
174 // invoked on an incognito map.
175 //
176 // This should only be called on the UI thread.
177 void SetBlockThirdPartyCookies(bool block);
178
179 // Returns true if the default setting for the |content_type| is managed. 155 // Returns true if the default setting for the |content_type| is managed.
180 bool IsDefaultContentSettingManaged(ContentSettingsType content_type) const; 156 bool IsDefaultContentSettingManaged(ContentSettingsType content_type) const;
181 157
182 // Detaches the HostContentSettingsMap from all Profile-related objects like 158 // Detaches the HostContentSettingsMap from all Profile-related objects like
183 // PrefService. This methods needs to be called before destroying the Profile. 159 // PrefService. This methods needs to be called before destroying the Profile.
184 // Afterwards, none of the methods above that should only be called on the UI 160 // Afterwards, none of the methods above that should only be called on the UI
185 // thread should be called anymore. 161 // thread should be called anymore.
186 void ShutdownOnUIThread(); 162 void ShutdownOnUIThread();
187 163
188 // content_settings::Observer implementation. 164 // content_settings::Observer implementation.
189 virtual void OnContentSettingChanged( 165 virtual void OnContentSettingChanged(
190 ContentSettingsPattern primary_pattern, 166 ContentSettingsPattern primary_pattern,
191 ContentSettingsPattern secondary_pattern, 167 ContentSettingsPattern secondary_pattern,
192 ContentSettingsType content_type, 168 ContentSettingsType content_type,
193 std::string resource_identifier); 169 std::string resource_identifier);
194 170
195 // NotificationObserver implementation. 171 static bool ShouldAllowAllContent(const GURL& url,
196 virtual void Observe(int type, 172 ContentSettingsType content_type);
197 const NotificationSource& source,
198 const NotificationDetails& details);
199 173
200 private: 174 private:
201 friend class base::RefCountedThreadSafe<HostContentSettingsMap>; 175 friend class base::RefCountedThreadSafe<HostContentSettingsMap>;
176 friend class CookieSettings;
202 friend class HostContentSettingsMapTest_NonDefaultSettings_Test; 177 friend class HostContentSettingsMapTest_NonDefaultSettings_Test;
203 178
204 virtual ~HostContentSettingsMap(); 179 virtual ~HostContentSettingsMap();
205 180
206 // Returns all non-default ContentSettings which apply to the given URLs. For 181 // Returns all non-default ContentSettings which apply to the given URLs. For
207 // content setting types that require an additional resource identifier, 182 // content setting types that require an additional resource identifier,
208 // CONTENT_SETTING_DEFAULT is returned. 183 // CONTENT_SETTING_DEFAULT is returned.
209 // 184 //
210 // This may be called on any thread. 185 // This may be called on any thread.
211 ContentSettings GetNonDefaultContentSettings( 186 ContentSettings GetNonDefaultContentSettings(
(...skipping 12 matching lines...) Expand all
224 const GURL& secondary_url, 199 const GURL& secondary_url,
225 ContentSettingsType content_type, 200 ContentSettingsType content_type,
226 const std::string& resource_identifier) const; 201 const std::string& resource_identifier) const;
227 202
228 ContentSetting GetContentSettingInternal( 203 ContentSetting GetContentSettingInternal(
229 const GURL& primary_url, 204 const GURL& primary_url,
230 const GURL& secondary_url, 205 const GURL& secondary_url,
231 ContentSettingsType content_type, 206 ContentSettingsType content_type,
232 const std::string& resource_identifier) const; 207 const std::string& resource_identifier) const;
233 208
234 // Various migration methods (old cookie, popup and per-host data gets
235 // migrated to the new format).
236 void MigrateObsoleteCookiePref();
237
238 // Weak; owned by the Profile. 209 // Weak; owned by the Profile.
239 PrefService* prefs_; 210 PrefService* prefs_;
240 211
241 PrefChangeRegistrar pref_change_registrar_;
242
243 // Whether this settings map is for an OTR session. 212 // Whether this settings map is for an OTR session.
244 bool is_off_the_record_; 213 bool is_off_the_record_;
245 214
246 // Whether we are currently updating preferences, this is used to ignore 215 // Whether we are currently updating preferences, this is used to ignore
247 // notifications from the preferences service that we triggered ourself. 216 // notifications from the preferences service that we triggered ourself.
248 bool updating_preferences_; 217 bool updating_preferences_;
249 218
250 // Default content setting providers. 219 // Default content setting providers.
251 std::vector<linked_ptr<content_settings::DefaultProviderInterface> > 220 std::vector<linked_ptr<content_settings::DefaultProviderInterface> >
252 default_content_settings_providers_; 221 default_content_settings_providers_;
253 222
254 // Content setting providers. 223 // Content setting providers.
255 std::vector<linked_ptr<content_settings::ProviderInterface> > 224 std::vector<linked_ptr<content_settings::ProviderInterface> >
256 content_settings_providers_; 225 content_settings_providers_;
257 226
258 // Used around accesses to the following objects to guarantee thread safety.
259 mutable base::Lock lock_;
260
261 // Misc global settings.
262 bool block_third_party_cookies_;
263 bool is_block_third_party_cookies_managed_;
264
265 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap); 227 DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap);
266 }; 228 };
267 229
268 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_ 230 #endif // CHROME_BROWSER_CONTENT_SETTINGS_HOST_CONTENT_SETTINGS_MAP_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698