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

Side by Side Diff: chrome/browser/net/chrome_url_request_context.h

Issue 556095: Changes to support new cookie policy.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #ifndef CHROME_BROWSER_NET_CHROME_URL_REQUEST_CONTEXT_H_ 5 #ifndef CHROME_BROWSER_NET_CHROME_URL_REQUEST_CONTEXT_H_
6 #define CHROME_BROWSER_NET_CHROME_URL_REQUEST_CONTEXT_H_ 6 #define CHROME_BROWSER_NET_CHROME_URL_REQUEST_CONTEXT_H_
7 7
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/linked_ptr.h" 9 #include "base/linked_ptr.h"
10 #include "net/base/cookie_policy.h"
10 #include "chrome/browser/host_content_settings_map.h" 11 #include "chrome/browser/host_content_settings_map.h"
11 #include "chrome/browser/host_zoom_map.h" 12 #include "chrome/browser/host_zoom_map.h"
12 #include "chrome/browser/privacy_blacklist/blacklist.h" 13 #include "chrome/browser/privacy_blacklist/blacklist.h"
13 #include "chrome/browser/net/url_request_context_getter.h" 14 #include "chrome/browser/net/url_request_context_getter.h"
14 #include "chrome/common/appcache/chrome_appcache_service.h" 15 #include "chrome/common/appcache/chrome_appcache_service.h"
15 #include "chrome/common/extensions/extension.h" 16 #include "chrome/common/extensions/extension.h"
16 #include "chrome/common/notification_registrar.h" 17 #include "chrome/common/notification_registrar.h"
17 #include "chrome/common/pref_service.h" 18 #include "chrome/common/pref_service.h"
18 #include "net/url_request/url_request_context.h" 19 #include "net/url_request/url_request_context.h"
19 20
20 class CommandLine; 21 class CommandLine;
21 class Profile; 22 class Profile;
22 23
23 namespace net { 24 namespace net {
24 class ProxyConfig; 25 class ProxyConfig;
25 } 26 }
26 27
27 class ChromeURLRequestContext; 28 class ChromeURLRequestContext;
28 class ChromeURLRequestContextFactory; 29 class ChromeURLRequestContextFactory;
29 class IOThread; 30 class IOThread;
30 31
31 // Subclass of URLRequestContext which can be used to store extra information 32 // Subclass of URLRequestContext which can be used to store extra information
32 // for requests. 33 // for requests.
33 // 34 //
34 // All methods of this class must be called from the IO thread, 35 // All methods of this class must be called from the IO thread,
35 // including the constructor and destructor. 36 // including the constructor and destructor.
36 class ChromeURLRequestContext : public URLRequestContext { 37 class ChromeURLRequestContext : public URLRequestContext,
38 public net::CookiePolicy {
37 public: 39 public:
38 // Maintains some extension-related state we need on the IO thread. 40 // Maintains some extension-related state we need on the IO thread.
39 // TODO(aa): It would be cool if the Extension objects in ExtensionsService 41 // TODO(aa): It would be cool if the Extension objects in ExtensionsService
40 // could be immutable and ref-counted so that we could use them directly from 42 // could be immutable and ref-counted so that we could use them directly from
41 // both threads. There is only a small amount of mutable state in Extension. 43 // both threads. There is only a small amount of mutable state in Extension.
42 struct ExtensionInfo { 44 struct ExtensionInfo {
43 ExtensionInfo(const FilePath& path, const std::string& default_locale, 45 ExtensionInfo(const FilePath& path, const std::string& default_locale,
44 const Extension::URLPatternList& extent, 46 const Extension::URLPatternList& extent,
45 const std::vector<std::string>& api_permissions) 47 const std::vector<std::string>& api_permissions)
46 : path(path), default_locale(default_locale), 48 : path(path), default_locale(default_locale),
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 return host_content_settings_map_; 106 return host_content_settings_map_;
105 } 107 }
106 108
107 const HostZoomMap* host_zoom_map() const { return host_zoom_map_; } 109 const HostZoomMap* host_zoom_map() const { return host_zoom_map_; }
108 110
109 // Gets the Privacy Blacklist, if any for this context. 111 // Gets the Privacy Blacklist, if any for this context.
110 const Blacklist* GetPrivacyBlacklist() const; 112 const Blacklist* GetPrivacyBlacklist() const;
111 113
112 // Callback for when new extensions are loaded. Takes ownership of 114 // Callback for when new extensions are loaded. Takes ownership of
113 // |extension_info|. 115 // |extension_info|.
114 void OnNewExtensions( 116 void OnNewExtensions(const std::string& id, ExtensionInfo* extension_info);
115 const std::string& id,
116 ChromeURLRequestContext::ExtensionInfo* extension_info);
117 117
118 // Callback for when an extension is unloaded. 118 // Callback for when an extension is unloaded.
119 void OnUnloadedExtension(const std::string& id); 119 void OnUnloadedExtension(const std::string& id);
120 120
121 // False only if cookies are globally blocked without exception.
122 bool AreCookiesEnabled() const;
123
124 // CookiePolicy methods:
125 virtual bool CanGetCookies(const GURL& url, const GURL& first_party);
126 virtual bool CanSetCookie(const GURL& url, const GURL& first_party);
127
121 protected: 128 protected:
122 // Copies the dependencies from |other| into |this|. If you use this 129 // Copies the dependencies from |other| into |this|. If you use this
123 // constructor, then you should hold a reference to |other|, as we 130 // constructor, then you should hold a reference to |other|, as we
124 // depend on |other| being alive. 131 // depend on |other| being alive.
125 explicit ChromeURLRequestContext(ChromeURLRequestContext* other); 132 explicit ChromeURLRequestContext(ChromeURLRequestContext* other);
126 virtual ~ChromeURLRequestContext(); 133 virtual ~ChromeURLRequestContext();
127 134
128 public: 135 public:
129 // Setters to simplify initializing from factory objects. 136 // Setters to simplify initializing from factory objects.
130 137
131 void set_accept_language(const std::string& accept_language) { 138 void set_accept_language(const std::string& accept_language) {
132 accept_language_ = accept_language; 139 accept_language_ = accept_language;
133 } 140 }
134 void set_accept_charset(const std::string& accept_charset) { 141 void set_accept_charset(const std::string& accept_charset) {
135 accept_charset_ = accept_charset; 142 accept_charset_ = accept_charset;
136 } 143 }
137 void set_referrer_charset(const std::string& referrer_charset) { 144 void set_referrer_charset(const std::string& referrer_charset) {
138 referrer_charset_ = referrer_charset; 145 referrer_charset_ = referrer_charset;
139 } 146 }
140 void set_cookie_policy_type(net::CookiePolicy::Type type) {
141 cookie_policy_.set_type(type);
142 }
143 void set_extension_info( 147 void set_extension_info(
144 const ChromeURLRequestContext::ExtensionInfoMap& info) { 148 const ChromeURLRequestContext::ExtensionInfoMap& info) {
145 extension_info_ = info; 149 extension_info_ = info;
146 } 150 }
147 void set_transport_security_state( 151 void set_transport_security_state(
148 net::TransportSecurityState* state) { 152 net::TransportSecurityState* state) {
149 transport_security_state_ = state; 153 transport_security_state_ = state;
150 } 154 }
151 void set_ssl_config_service(net::SSLConfigService* service) { 155 void set_ssl_config_service(net::SSLConfigService* service) {
152 ssl_config_service_ = service; 156 ssl_config_service_ = service;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 void set_privacy_blacklist(Blacklist* privacy_blacklist) { 189 void set_privacy_blacklist(Blacklist* privacy_blacklist) {
186 privacy_blacklist_ = privacy_blacklist; 190 privacy_blacklist_ = privacy_blacklist;
187 } 191 }
188 void set_appcache_service(ChromeAppCacheService* service) { 192 void set_appcache_service(ChromeAppCacheService* service) {
189 appcache_service_ = service; 193 appcache_service_ = service;
190 } 194 }
191 195
192 // Callback for when the accept language changes. 196 // Callback for when the accept language changes.
193 void OnAcceptLanguageChange(const std::string& accept_language); 197 void OnAcceptLanguageChange(const std::string& accept_language);
194 198
195 // Callback for when the cookie policy changes.
196 void OnCookiePolicyChange(net::CookiePolicy::Type type);
197
198 // Callback for when the default charset changes. 199 // Callback for when the default charset changes.
199 void OnDefaultCharsetChange(const std::string& default_charset); 200 void OnDefaultCharsetChange(const std::string& default_charset);
200 201
201 protected: 202 protected:
202 ExtensionInfoMap extension_info_; 203 ExtensionInfoMap extension_info_;
203 204
204 // Path to the directory user scripts are stored in. 205 // Path to the directory user scripts are stored in.
205 FilePath user_script_dir_path_; 206 FilePath user_script_dir_path_;
206 207
207 scoped_refptr<ChromeAppCacheService> appcache_service_; 208 scoped_refptr<ChromeAppCacheService> appcache_service_;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 // Creates a request context for media resources from a regular request 310 // Creates a request context for media resources from a regular request
310 // context. This helper method is called from CreateOriginalForMedia and 311 // context. This helper method is called from CreateOriginalForMedia and
311 // CreateOffTheRecordForMedia. 312 // CreateOffTheRecordForMedia.
312 static ChromeURLRequestContextGetter* CreateRequestContextForMedia( 313 static ChromeURLRequestContextGetter* CreateRequestContextForMedia(
313 Profile* profile, const FilePath& disk_cache_path, int cache_size, 314 Profile* profile, const FilePath& disk_cache_path, int cache_size,
314 bool off_the_record); 315 bool off_the_record);
315 316
316 // These methods simply forward to the corresponding method on 317 // These methods simply forward to the corresponding method on
317 // ChromeURLRequestContext. 318 // ChromeURLRequestContext.
318 void OnAcceptLanguageChange(const std::string& accept_language); 319 void OnAcceptLanguageChange(const std::string& accept_language);
319 void OnCookiePolicyChange(net::CookiePolicy::Type type);
320 void OnDefaultCharsetChange(const std::string& default_charset); 320 void OnDefaultCharsetChange(const std::string& default_charset);
321 321
322 // Saves the cookie store to |result| and signals |completion|. 322 // Saves the cookie store to |result| and signals |completion|.
323 void GetCookieStoreAsyncHelper(base::WaitableEvent* completion, 323 void GetCookieStoreAsyncHelper(base::WaitableEvent* completion,
324 net::CookieStore** result); 324 net::CookieStore** result);
325 325
326 // Access only from the UI thread. 326 // Access only from the UI thread.
327 PrefService* prefs_; 327 PrefService* prefs_;
328 328
329 // Deferred logic for creating a ChromeURLRequestContext. 329 // Deferred logic for creating a ChromeURLRequestContext.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 363
364 // Values extracted from the Profile. 364 // Values extracted from the Profile.
365 // 365 //
366 // NOTE: If you add any parameters here, keep it in sync with 366 // NOTE: If you add any parameters here, keep it in sync with
367 // ApplyProfileParametersToContext(). 367 // ApplyProfileParametersToContext().
368 bool is_media_; 368 bool is_media_;
369 bool is_off_the_record_; 369 bool is_off_the_record_;
370 std::string accept_language_; 370 std::string accept_language_;
371 std::string accept_charset_; 371 std::string accept_charset_;
372 std::string referrer_charset_; 372 std::string referrer_charset_;
373 net::CookiePolicy::Type cookie_policy_type_;
374 ChromeURLRequestContext::ExtensionInfoMap extension_info_; 373 ChromeURLRequestContext::ExtensionInfoMap extension_info_;
375 // TODO(aa): I think this can go away now as we no longer support standalone 374 // TODO(aa): I think this can go away now as we no longer support standalone
376 // user scripts. 375 // user scripts.
377 FilePath user_script_dir_path_; 376 FilePath user_script_dir_path_;
378 scoped_refptr<HostContentSettingsMap> host_content_settings_map_; 377 scoped_refptr<HostContentSettingsMap> host_content_settings_map_;
379 scoped_refptr<HostZoomMap> host_zoom_map_; 378 scoped_refptr<HostZoomMap> host_zoom_map_;
380 scoped_refptr<Blacklist> privacy_blacklist_; 379 scoped_refptr<Blacklist> privacy_blacklist_;
381 net::TransportSecurityState* transport_security_state_; 380 net::TransportSecurityState* transport_security_state_;
382 scoped_refptr<net::SSLConfigService> ssl_config_service_; 381 scoped_refptr<net::SSLConfigService> ssl_config_service_;
383 382
384 FilePath profile_dir_path_; 383 FilePath profile_dir_path_;
385 384
386 private: 385 private:
387 IOThread* const io_thread_; 386 IOThread* const io_thread_;
388 387
389 DISALLOW_COPY_AND_ASSIGN(ChromeURLRequestContextFactory); 388 DISALLOW_COPY_AND_ASSIGN(ChromeURLRequestContextFactory);
390 }; 389 };
391 390
392 // Creates a proxy configuration using the overrides specified on the command 391 // Creates a proxy configuration using the overrides specified on the command
393 // line. Returns NULL if the system defaults should be used instead. 392 // line. Returns NULL if the system defaults should be used instead.
394 net::ProxyConfig* CreateProxyConfig(const CommandLine& command_line); 393 net::ProxyConfig* CreateProxyConfig(const CommandLine& command_line);
395 394
396 #endif // CHROME_BROWSER_NET_CHROME_URL_REQUEST_CONTEXT_H_ 395 #endif // CHROME_BROWSER_NET_CHROME_URL_REQUEST_CONTEXT_H_
OLDNEW
« no previous file with comments | « chrome/browser/host_content_settings_map.cc ('k') | chrome/browser/net/chrome_url_request_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698