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

Side by Side Diff: chrome/browser/profiles/profile_io_data.h

Issue 11308362: Add StoragePartition's ProtocolHandlers at URLRequestContext construction time. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync (r179907) Created 7 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) 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 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 // net::URLRequest. 73 // net::URLRequest.
74 static bool IsHandledProtocol(const std::string& scheme); 74 static bool IsHandledProtocol(const std::string& scheme);
75 75
76 // Returns true if |url| is handled in Chrome, or by default handlers in 76 // Returns true if |url| is handled in Chrome, or by default handlers in
77 // net::URLRequest. 77 // net::URLRequest.
78 static bool IsHandledURL(const GURL& url); 78 static bool IsHandledURL(const GURL& url);
79 79
80 // Called by Profile. 80 // Called by Profile.
81 content::ResourceContext* GetResourceContext() const; 81 content::ResourceContext* GetResourceContext() const;
82 82
83 // These should only be called at most once each. Ownership is reversed when 83 // Initializes the ProfileIOData object and primes the RequestContext
84 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice 84 // generation. Must be called prior to any of the Get*() methods other than
85 // versa. 85 // GetResouceContext or GetMetricsEnabledStateOnIOThread.
86 void Init(
87 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
88 blob_protocol_handler,
89 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
90 file_system_protocol_handler,
91 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
92 developer_protocol_handler,
93 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
94 chrome_protocol_handler,
95 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
96 chrome_devtools_protocol_handler) const;
97
86 ChromeURLRequestContext* GetMainRequestContext() const; 98 ChromeURLRequestContext* GetMainRequestContext() const;
87 ChromeURLRequestContext* GetMediaRequestContext() const; 99 ChromeURLRequestContext* GetMediaRequestContext() const;
88 ChromeURLRequestContext* GetExtensionsRequestContext() const; 100 ChromeURLRequestContext* GetExtensionsRequestContext() const;
89 ChromeURLRequestContext* GetIsolatedAppRequestContext( 101 ChromeURLRequestContext* GetIsolatedAppRequestContext(
90 ChromeURLRequestContext* main_context, 102 ChromeURLRequestContext* main_context,
91 const StoragePartitionDescriptor& partition_descriptor, 103 const StoragePartitionDescriptor& partition_descriptor,
92 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 104 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
93 protocol_handler_interceptor) const; 105 protocol_handler_interceptor,
106 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
107 blob_protocol_handler,
108 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
109 file_system_protocol_handler,
110 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
111 developer_protocol_handler,
112 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
113 chrome_protocol_handler,
114 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
115 chrome_devtools_protocol_handler) const;
94 ChromeURLRequestContext* GetIsolatedMediaRequestContext( 116 ChromeURLRequestContext* GetIsolatedMediaRequestContext(
95 ChromeURLRequestContext* app_context, 117 ChromeURLRequestContext* app_context,
96 const StoragePartitionDescriptor& partition_descriptor) const; 118 const StoragePartitionDescriptor& partition_descriptor) const;
97 119
98 // These are useful when the Chrome layer is called from the content layer 120 // These are useful when the Chrome layer is called from the content layer
99 // with a content::ResourceContext, and they want access to Chrome data for 121 // with a content::ResourceContext, and they want access to Chrome data for
100 // that profile. 122 // that profile.
101 ExtensionInfoMap* GetExtensionInfoMap() const; 123 ExtensionInfoMap* GetExtensionInfoMap() const;
102 CookieSettings* GetCookieSettings() const; 124 CookieSettings* GetCookieSettings() const;
103 125
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 void ApplyProfileParamsToContext(ChromeURLRequestContext* context) const; 289 void ApplyProfileParamsToContext(ChromeURLRequestContext* context) const;
268 290
269 scoped_ptr<net::URLRequestJobFactory> SetUpJobFactoryDefaults( 291 scoped_ptr<net::URLRequestJobFactory> SetUpJobFactoryDefaults(
270 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory, 292 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory,
271 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 293 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
272 protocol_handler_interceptor, 294 protocol_handler_interceptor,
273 net::NetworkDelegate* network_delegate, 295 net::NetworkDelegate* network_delegate,
274 net::FtpTransactionFactory* ftp_transaction_factory, 296 net::FtpTransactionFactory* ftp_transaction_factory,
275 net::FtpAuthCache* ftp_auth_cache) const; 297 net::FtpAuthCache* ftp_auth_cache) const;
276 298
277 // Lazy initializes the ProfileIOData object the first time a request context
278 // is requested. The lazy logic is implemented here. The actual initialization
279 // is done in LazyInitializeInternal(), implemented by subtypes. Static helper
280 // functions have been provided to assist in common operations.
281 void LazyInitialize() const;
282
283 // Called when the profile is destroyed. 299 // Called when the profile is destroyed.
284 void ShutdownOnUIThread(); 300 void ShutdownOnUIThread();
285 301
286 // A ServerBoundCertService object is created by a derived class of 302 // A ServerBoundCertService object is created by a derived class of
287 // ProfileIOData, and the derived class calls this method to set the 303 // ProfileIOData, and the derived class calls this method to set the
288 // server_bound_cert_service_ member and transfers ownership to the base 304 // server_bound_cert_service_ member and transfers ownership to the base
289 // class. 305 // class.
290 void set_server_bound_cert_service( 306 void set_server_bound_cert_service(
291 net::ServerBoundCertService* server_bound_cert_service) const; 307 net::ServerBoundCertService* server_bound_cert_service) const;
292 308
(...skipping 15 matching lines...) Expand all
308 net::HttpServerProperties* http_server_properties) const; 324 net::HttpServerProperties* http_server_properties) const;
309 325
310 ChromeURLRequestContext* main_request_context() const { 326 ChromeURLRequestContext* main_request_context() const {
311 return main_request_context_.get(); 327 return main_request_context_.get();
312 } 328 }
313 329
314 chrome_browser_net::LoadTimeStats* load_time_stats() const { 330 chrome_browser_net::LoadTimeStats* load_time_stats() const {
315 return load_time_stats_; 331 return load_time_stats_;
316 } 332 }
317 333
334 bool initialized() const {
335 return initialized_;
336 }
337
318 // Destroys the ResourceContext first, to cancel any URLRequests that are 338 // Destroys the ResourceContext first, to cancel any URLRequests that are
319 // using it still, before we destroy the member variables that those 339 // using it still, before we destroy the member variables that those
320 // URLRequests may be accessing. 340 // URLRequests may be accessing.
321 void DestroyResourceContext(); 341 void DestroyResourceContext();
322 342
323 // Fills in fields of params using values from main_request_context_ and the 343 // Fills in fields of params using values from main_request_context_ and the
324 // IOThread associated with profile_params. 344 // IOThread associated with profile_params.
325 void PopulateNetworkSessionParams( 345 void PopulateNetworkSessionParams(
326 const ProfileParams* profile_params, 346 const ProfileParams* profile_params,
327 net::HttpNetworkSession::Params* params) const; 347 net::HttpNetworkSession::Params* params) const;
328 348
329 void SetCookieSettingsForTesting(CookieSettings* cookie_settings); 349 void SetCookieSettingsForTesting(CookieSettings* cookie_settings);
330 350
331 void set_signin_names_for_testing(SigninNamesOnIOThread* signin_names); 351 void set_signin_names_for_testing(SigninNamesOnIOThread* signin_names);
332 352
333 private: 353 private:
334 class ResourceContext : public content::ResourceContext { 354 class ResourceContext : public content::ResourceContext {
335 public: 355 public:
336 explicit ResourceContext(ProfileIOData* io_data); 356 explicit ResourceContext(ProfileIOData* io_data);
337 virtual ~ResourceContext(); 357 virtual ~ResourceContext();
338 358
339 // ResourceContext implementation: 359 // ResourceContext implementation:
340 virtual net::HostResolver* GetHostResolver() OVERRIDE; 360 virtual net::HostResolver* GetHostResolver() OVERRIDE;
341 virtual net::URLRequestContext* GetRequestContext() OVERRIDE; 361 virtual net::URLRequestContext* GetRequestContext() OVERRIDE;
342 362
343 private: 363 private:
344 friend class ProfileIOData; 364 friend class ProfileIOData;
345 365
346 void EnsureInitialized();
347
348 ProfileIOData* const io_data_; 366 ProfileIOData* const io_data_;
349 367
350 net::HostResolver* host_resolver_; 368 net::HostResolver* host_resolver_;
351 net::URLRequestContext* request_context_; 369 net::URLRequestContext* request_context_;
352 }; 370 };
353 371
354 typedef std::map<StoragePartitionDescriptor, 372 typedef std::map<StoragePartitionDescriptor,
355 ChromeURLRequestContext*, 373 ChromeURLRequestContext*,
356 StoragePartitionDescriptorLess> 374 StoragePartitionDescriptorLess>
357 URLRequestContextMap; 375 URLRequestContextMap;
358 376
359 // -------------------------------------------- 377 // --------------------------------------------
360 // Virtual interface for subtypes to implement: 378 // Virtual interface for subtypes to implement:
361 // -------------------------------------------- 379 // --------------------------------------------
362 380
363 // Does the actual initialization of the ProfileIOData subtype. Subtypes 381 // Does the actual initialization of the ProfileIOData subtype. Subtypes
364 // should use the static helper functions above to implement this. 382 // should use the static helper functions above to implement this.
365 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; 383 virtual void InitializeInternal(
384 ProfileParams* profile_params,
385 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
386 blob_protocol_handler,
387 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
388 file_system_protocol_handler,
389 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
390 developer_protocol_handler,
391 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
392 chrome_protocol_handler,
393 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
394 chrome_devtools_protocol_handler) const = 0;
366 395
367 // Initializes the RequestContext for extensions. 396 // Initializes the RequestContext for extensions.
368 virtual void InitializeExtensionsRequestContext( 397 virtual void InitializeExtensionsRequestContext(
369 ProfileParams* profile_params) const = 0; 398 ProfileParams* profile_params) const = 0;
370 // Does an on-demand initialization of a RequestContext for the given 399 // Does an on-demand initialization of a RequestContext for the given
371 // isolated app. 400 // isolated app.
372 virtual ChromeURLRequestContext* InitializeAppRequestContext( 401 virtual ChromeURLRequestContext* InitializeAppRequestContext(
373 ChromeURLRequestContext* main_context, 402 ChromeURLRequestContext* main_context,
374 const StoragePartitionDescriptor& details, 403 const StoragePartitionDescriptor& details,
375 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 404 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
376 protocol_handler_interceptor) const = 0; 405 protocol_handler_interceptor,
406 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
407 blob_protocol_handler,
408 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
409 file_system_protocol_handler,
410 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
411 developer_protocol_handler,
412 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
413 chrome_protocol_handler,
414 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
415 chrome_devtools_protocol_handler) const = 0;
377 416
378 // Does an on-demand initialization of a media RequestContext for the given 417 // Does an on-demand initialization of a media RequestContext for the given
379 // isolated app. 418 // isolated app.
380 virtual ChromeURLRequestContext* InitializeMediaRequestContext( 419 virtual ChromeURLRequestContext* InitializeMediaRequestContext(
381 ChromeURLRequestContext* original_context, 420 ChromeURLRequestContext* original_context,
382 const StoragePartitionDescriptor& details) const = 0; 421 const StoragePartitionDescriptor& details) const = 0;
383 422
384 // These functions are used to transfer ownership of the lazily initialized 423 // These functions are used to transfer ownership of the lazily initialized
385 // context from ProfileIOData to the URLRequestContextGetter. 424 // context from ProfileIOData to the URLRequestContextGetter.
386 virtual ChromeURLRequestContext* 425 virtual ChromeURLRequestContext*
387 AcquireMediaRequestContext() const = 0; 426 AcquireMediaRequestContext() const = 0;
388 virtual ChromeURLRequestContext* 427 virtual ChromeURLRequestContext*
389 AcquireIsolatedAppRequestContext( 428 AcquireIsolatedAppRequestContext(
390 ChromeURLRequestContext* main_context, 429 ChromeURLRequestContext* main_context,
391 const StoragePartitionDescriptor& partition_descriptor, 430 const StoragePartitionDescriptor& partition_descriptor,
392 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 431 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
393 protocol_handler_interceptor) const = 0; 432 protocol_handler_interceptor,
433 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
434 blob_protocol_handler,
435 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
436 file_system_protocol_handler,
437 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
438 developer_protocol_handler,
439 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
440 chrome_protocol_handler,
441 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
442 chrome_devtools_protocol_handler) const = 0;
394 virtual ChromeURLRequestContext* 443 virtual ChromeURLRequestContext*
395 AcquireIsolatedMediaRequestContext( 444 AcquireIsolatedMediaRequestContext(
396 ChromeURLRequestContext* app_context, 445 ChromeURLRequestContext* app_context,
397 const StoragePartitionDescriptor& partition_descriptor) const = 0; 446 const StoragePartitionDescriptor& partition_descriptor) const = 0;
398 447
399 // Returns the LoadTimeStats object to be used for this profile. 448 // Returns the LoadTimeStats object to be used for this profile.
400 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( 449 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats(
401 IOThread::Globals* io_thread_globals) const = 0; 450 IOThread::Globals* io_thread_globals) const = 0;
402 451
403 // The order *DOES* matter for the majority of these member variables, so 452 // The order *DOES* matter for the majority of these member variables, so
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 548
500 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. 549 // TODO(jhawkins): Remove once crbug.com/102004 is fixed.
501 bool initialized_on_UI_thread_; 550 bool initialized_on_UI_thread_;
502 551
503 bool is_incognito_; 552 bool is_incognito_;
504 553
505 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); 554 DISALLOW_COPY_AND_ASSIGN(ProfileIOData);
506 }; 555 };
507 556
508 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ 557 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698