OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_PROFILES_PROFILE_IO_DATA_H_ | 5 #ifndef CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
6 #define CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 6 #define CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 // net::URLRequest. | 67 // net::URLRequest. |
68 static bool IsHandledURL(const GURL& url); | 68 static bool IsHandledURL(const GURL& url); |
69 | 69 |
70 // Called by Profile. | 70 // Called by Profile. |
71 content::ResourceContext* GetResourceContext() const; | 71 content::ResourceContext* GetResourceContext() const; |
72 ChromeURLDataManagerBackend* GetChromeURLDataManagerBackend() const; | 72 ChromeURLDataManagerBackend* GetChromeURLDataManagerBackend() const; |
73 | 73 |
74 // These should only be called at most once each. Ownership is reversed when | 74 // These should only be called at most once each. Ownership is reversed when |
75 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice | 75 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice |
76 // versa. | 76 // versa. |
77 scoped_refptr<ChromeURLRequestContext> GetMainRequestContext() const; | 77 ChromeURLRequestContext* GetMainRequestContext() const; |
78 scoped_refptr<ChromeURLRequestContext> GetMediaRequestContext() const; | 78 ChromeURLRequestContext* GetMediaRequestContext() const; |
79 scoped_refptr<ChromeURLRequestContext> GetExtensionsRequestContext() const; | 79 ChromeURLRequestContext* GetExtensionsRequestContext() const; |
80 scoped_refptr<ChromeURLRequestContext> GetIsolatedAppRequestContext( | 80 ChromeURLRequestContext* GetIsolatedAppRequestContext( |
81 scoped_refptr<ChromeURLRequestContext> main_context, | 81 ChromeURLRequestContext* main_context, |
82 const std::string& app_id) const; | 82 const std::string& app_id) const; |
83 | 83 |
84 // These are useful when the Chrome layer is called from the content layer | 84 // These are useful when the Chrome layer is called from the content layer |
85 // with a content::ResourceContext, and they want access to Chrome data for | 85 // with a content::ResourceContext, and they want access to Chrome data for |
86 // that profile. | 86 // that profile. |
87 ExtensionInfoMap* GetExtensionInfoMap() const; | 87 ExtensionInfoMap* GetExtensionInfoMap() const; |
88 CookieSettings* GetCookieSettings() const; | 88 CookieSettings* GetCookieSettings() const; |
89 | 89 |
90 #if defined(ENABLE_NOTIFICATIONS) | 90 #if defined(ENABLE_NOTIFICATIONS) |
91 DesktopNotificationService* GetNotificationService() const; | 91 DesktopNotificationService* GetNotificationService() const; |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 } | 218 } |
219 | 219 |
220 net::URLRequestJobFactory* job_factory() const { | 220 net::URLRequestJobFactory* job_factory() const { |
221 return job_factory_.get(); | 221 return job_factory_.get(); |
222 } | 222 } |
223 | 223 |
224 void set_http_server_properties_manager( | 224 void set_http_server_properties_manager( |
225 chrome_browser_net::HttpServerPropertiesManager* manager) const; | 225 chrome_browser_net::HttpServerPropertiesManager* manager) const; |
226 | 226 |
227 ChromeURLRequestContext* main_request_context() const { | 227 ChromeURLRequestContext* main_request_context() const { |
228 return main_request_context_; | 228 return main_request_context_.get(); |
229 } | 229 } |
230 | 230 |
231 // Destroys the ResourceContext first, to cancel any URLRequests that are | 231 // Destroys the ResourceContext first, to cancel any URLRequests that are |
232 // using it still, before we destroy the member variables that those | 232 // using it still, before we destroy the member variables that those |
233 // URLRequests may be accessing. | 233 // URLRequests may be accessing. |
234 void DestroyResourceContext(); | 234 void DestroyResourceContext(); |
235 | 235 |
236 private: | 236 private: |
237 class ResourceContext : public content::ResourceContext { | 237 class ResourceContext : public content::ResourceContext { |
238 public: | 238 public: |
239 explicit ResourceContext(ProfileIOData* io_data); | 239 explicit ResourceContext(ProfileIOData* io_data); |
240 virtual ~ResourceContext(); | 240 virtual ~ResourceContext(); |
241 | 241 |
242 // ResourceContext implementation: | 242 // ResourceContext implementation: |
243 virtual net::HostResolver* GetHostResolver() OVERRIDE; | 243 virtual net::HostResolver* GetHostResolver() OVERRIDE; |
244 virtual net::URLRequestContext* GetRequestContext() OVERRIDE; | 244 virtual net::URLRequestContext* GetRequestContext() OVERRIDE; |
245 | 245 |
246 private: | 246 private: |
247 friend class ProfileIOData; | 247 friend class ProfileIOData; |
248 | 248 |
249 void EnsureInitialized(); | 249 void EnsureInitialized(); |
250 | 250 |
251 ProfileIOData* const io_data_; | 251 ProfileIOData* const io_data_; |
252 | 252 |
253 net::HostResolver* host_resolver_; | 253 net::HostResolver* host_resolver_; |
254 net::URLRequestContext* request_context_; | 254 net::URLRequestContext* request_context_; |
255 }; | 255 }; |
256 | 256 |
257 typedef base::hash_map<std::string, scoped_refptr<ChromeURLRequestContext> > | 257 typedef base::hash_map<std::string, ChromeURLRequestContext*> |
258 AppRequestContextMap; | 258 AppRequestContextMap; |
259 | 259 |
260 // -------------------------------------------- | 260 // -------------------------------------------- |
261 // Virtual interface for subtypes to implement: | 261 // Virtual interface for subtypes to implement: |
262 // -------------------------------------------- | 262 // -------------------------------------------- |
263 | 263 |
264 // Does the actual initialization of the ProfileIOData subtype. Subtypes | 264 // Does the actual initialization of the ProfileIOData subtype. Subtypes |
265 // should use the static helper functions above to implement this. | 265 // should use the static helper functions above to implement this. |
266 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; | 266 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; |
267 | 267 |
268 // Does an on-demand initialization of a RequestContext for the given | 268 // Does an on-demand initialization of a RequestContext for the given |
269 // isolated app. | 269 // isolated app. |
270 virtual scoped_refptr<ChromeURLRequestContext> InitializeAppRequestContext( | 270 virtual ChromeURLRequestContext* InitializeAppRequestContext( |
271 scoped_refptr<ChromeURLRequestContext> main_context, | 271 ChromeURLRequestContext* main_context, |
272 const std::string& app_id) const = 0; | 272 const std::string& app_id) const = 0; |
273 | 273 |
274 // These functions are used to transfer ownership of the lazily initialized | 274 // These functions are used to transfer ownership of the lazily initialized |
275 // context from ProfileIOData to the URLRequestContextGetter. | 275 // context from ProfileIOData to the URLRequestContextGetter. |
276 virtual scoped_refptr<ChromeURLRequestContext> | 276 virtual ChromeURLRequestContext* |
277 AcquireMediaRequestContext() const = 0; | 277 AcquireMediaRequestContext() const = 0; |
278 virtual scoped_refptr<ChromeURLRequestContext> | 278 virtual ChromeURLRequestContext* |
279 AcquireIsolatedAppRequestContext( | 279 AcquireIsolatedAppRequestContext( |
280 scoped_refptr<ChromeURLRequestContext> main_context, | 280 ChromeURLRequestContext* main_context, |
281 const std::string& app_id) const = 0; | 281 const std::string& app_id) const = 0; |
282 | 282 |
283 // The order *DOES* matter for the majority of these member variables, so | 283 // The order *DOES* matter for the majority of these member variables, so |
284 // don't move them around unless you know what you're doing! | 284 // don't move them around unless you know what you're doing! |
285 // General rules: | 285 // General rules: |
286 // * ResourceContext references the URLRequestContexts, so | 286 // * ResourceContext references the URLRequestContexts, so |
287 // URLRequestContexts must outlive ResourceContext, hence ResourceContext | 287 // URLRequestContexts must outlive ResourceContext, hence ResourceContext |
288 // should be destroyed first. | 288 // should be destroyed first. |
289 // * URLRequestContexts reference a whole bunch of members, so | 289 // * URLRequestContexts reference a whole bunch of members, so |
290 // URLRequestContext needs to be destroyed before them. | 290 // URLRequestContext needs to be destroyed before them. |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 334 |
335 #if defined(ENABLE_NOTIFICATIONS) | 335 #if defined(ENABLE_NOTIFICATIONS) |
336 mutable DesktopNotificationService* notification_service_; | 336 mutable DesktopNotificationService* notification_service_; |
337 #endif | 337 #endif |
338 | 338 |
339 mutable scoped_ptr<TransportSecurityPersister> | 339 mutable scoped_ptr<TransportSecurityPersister> |
340 transport_security_persister_; | 340 transport_security_persister_; |
341 | 341 |
342 // These are only valid in between LazyInitialize() and their accessor being | 342 // These are only valid in between LazyInitialize() and their accessor being |
343 // called. | 343 // called. |
344 mutable scoped_refptr<ChromeURLRequestContext> main_request_context_; | 344 mutable scoped_ptr<ChromeURLRequestContext> main_request_context_; |
345 mutable scoped_refptr<ChromeURLRequestContext> extensions_request_context_; | 345 mutable scoped_ptr<ChromeURLRequestContext> extensions_request_context_; |
346 // One AppRequestContext per isolated app. | 346 // One AppRequestContext per isolated app. |
347 mutable AppRequestContextMap app_request_context_map_; | 347 mutable AppRequestContextMap app_request_context_map_; |
348 | 348 |
349 mutable scoped_ptr<ResourceContext> resource_context_; | 349 mutable scoped_ptr<ResourceContext> resource_context_; |
350 | 350 |
351 mutable scoped_refptr<ExtensionInfoMap> extension_info_map_; | 351 mutable scoped_refptr<ExtensionInfoMap> extension_info_map_; |
352 mutable scoped_refptr<CookieSettings> cookie_settings_; | 352 mutable scoped_refptr<CookieSettings> cookie_settings_; |
353 | 353 |
354 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. | 354 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. |
355 bool initialized_on_UI_thread_; | 355 bool initialized_on_UI_thread_; |
356 | 356 |
357 bool is_incognito_; | 357 bool is_incognito_; |
358 | 358 |
359 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); | 359 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); |
360 }; | 360 }; |
361 | 361 |
362 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 362 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
OLD | NEW |