profile_impl_io_data.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_PROFILES_PROFILE_IMPL_IO_DATA_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_PROFILES_PROFILE_IMPL_IO_DATA_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h" 107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/containers/hash_tables.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/custom_handlers/protocol_handler_registry.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_io_data.h" 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/domain_reliability/clear_mode.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/cookie_store_factory.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome_browser_net { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class HttpServerPropertiesManager; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Predictor; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chrome_browser_net 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace content { 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class CookieCryptoDelegate; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace content 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace domain_reliability { 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class DomainReliabilityMonitor; 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} // namespace domain_reliability 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)class FtpTransactionFactory; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HttpServerProperties; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HttpTransactionFactory; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace net 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace quota { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpecialStoragePolicy; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace quota 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProfileImplIOData : public ProfileIOData { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Handle { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit Handle(Profile* profile); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~Handle(); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Init() must be called before ~Handle(). It records most of the 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // parameters needed to construct a ChromeURLRequestContextGetter. 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Init(const base::FilePath& cookie_path, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& server_bound_cert_path, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& cache_path, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cache_max_size, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& media_cache_path, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int media_cache_max_size, 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& extensions_cookie_path, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& infinite_cache_path, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_browser_net::Predictor* predictor, 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::CookieStoreConfig::SessionCookieMode 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) session_cookie_mode, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) quota::SpecialStoragePolicy* special_storage_policy); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // These Create*ContextGetter() functions are only exposed because the 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // circular relationship between Profile, ProfileIOData::Handle, and the 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ChromeURLRequestContextGetter factories requires Profile be able to call 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // these functions. 67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> CreateMainRequestContextGetter( 68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors, 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PrefService* local_state, 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IOThread* io_thread) const; 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CreateIsolatedAppRequestContextGetter( 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool in_memory, 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) request_interceptors) const; 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* GetResourceContext() const; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // GetResourceContextNoInit() does not call LazyInitialize() so it can be 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // safely be used during initialization. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* GetResourceContextNoInit() const; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMediaRequestContextGetter() const; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExtensionsRequestContextGetter() const; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetIsolatedMediaRequestContextGetter( 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool in_memory) const; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Deletes all network related data since |time|. It deletes transport 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // security state since |time| and also deletes HttpServerProperties data. 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Works asynchronously, however if the |completion| callback is non-null, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it will be posted on the UI thread once the removal process completes. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClearNetworkingHistorySince(base::Time time, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& completion); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 100cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Clears part or all of the state of the Domain Reliability Monitor. If 101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // |clear_contexts| is true, clears the (site-provided) contexts, which are 102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // cookie-esque; if it is false, clears only the (logged) beacons within 103cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // them, which are history-esque. 104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void ClearDomainReliabilityMonitor( 105cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) domain_reliability::DomainReliabilityClearMode mode, 106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Closure& completion); 107cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<StoragePartitionDescriptor, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter>, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StoragePartitionDescriptorLess> 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContextGetterMap; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Lazily initialize ProfileParams. We do this on the calls to 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get*RequestContextGetter(), so we only initialize ProfileParams right 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // before posting a task to the IO thread to start using them. This prevents 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // objects that are supposed to be deleted on the IO thread, but are created 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // on the UI thread from being unnecessarily initialized. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LazyInitialize() const; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ordering is important here. Do not reorder unless you know what you're 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // doing. We need to release |io_data_| *before* the getters, because we 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // want to make sure that the last reference for |io_data_| is on the IO 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // thread. The getters will be deleted on the IO thread, so they will 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // release their refs to their contexts, which will release the last refs to 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the ProfileIOData on the IO thread. 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_refptr<ChromeURLRequestContextGetter> 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) main_request_context_getter_; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_refptr<ChromeURLRequestContextGetter> 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) media_request_context_getter_; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_refptr<ChromeURLRequestContextGetter> 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_request_context_getter_; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable ChromeURLRequestContextGetterMap app_request_context_getter_map_; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable ChromeURLRequestContextGetterMap 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isolated_media_request_context_getter_map_; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileImplIOData* const io_data_; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* const profile_; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable bool initialized_; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Handle); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class base::RefCountedThreadSafe<ProfileImplIOData>; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct LazyParams { 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LazyParams(); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~LazyParams(); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // All of these parameters are intended to be read on the IO thread. 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath cookie_path; 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath server_bound_cert_path; 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath cache_path; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cache_max_size; 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath media_cache_path; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int media_cache_max_size; 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath extensions_cookie_path; 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath infinite_cache_path; 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::CookieStoreConfig::SessionCookieMode session_cookie_mode; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileImplIOData(); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ProfileImplIOData(); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InitializeInternal( 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfileParams* profile_params, 170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 171cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) 172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OVERRIDE; 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InitializeExtensionsRequestContext( 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileParams* profile_params) const OVERRIDE; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* InitializeAppRequestContext( 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContext* main_context, 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor, 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protocol_handler_interceptor, 180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 181cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) 182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OVERRIDE; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* InitializeMediaRequestContext( 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContext* original_context, 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor) const OVERRIDE; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AcquireMediaRequestContext() const OVERRIDE; 188a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ChromeURLRequestContext* AcquireIsolatedAppRequestContext( 189a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ChromeURLRequestContext* main_context, 190a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor, 191a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 192a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) protocol_handler_interceptor, 193a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 194cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) 195a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OVERRIDE; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AcquireIsolatedMediaRequestContext( 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContext* app_context, 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const OVERRIDE; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Deletes all network related data since |time|. It deletes transport 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // security state since |time| and also deletes HttpServerProperties data. 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Works asynchronously, however if the |completion| callback is non-null, 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it will be posted on the UI thread once the removal process completes. 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClearNetworkingHistorySinceOnIOThread(base::Time time, 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& completion); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 209cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void ClearDomainReliabilityMonitorOnIOThread( 210cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) domain_reliability::DomainReliabilityClearMode mode, 211cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Closure& completion); 212cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Lazy initialization params. 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<LazyParams> lazy_params_; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::HttpTransactionFactory> main_http_factory_; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::FtpTransactionFactory> ftp_factory_; 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Same as |ProfileIOData::http_server_properties_|, owned there to maintain 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // destruction ordering. 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mutable chrome_browser_net::HttpServerPropertiesManager* 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) http_server_properties_manager_; 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<chrome_browser_net::Predictor> predictor_; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<ChromeURLRequestContext> media_request_context_; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::URLRequestJobFactory> main_job_factory_; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::URLRequestJobFactory> extensions_job_factory_; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) mutable scoped_ptr<domain_reliability::DomainReliabilityMonitor> 23223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) domain_reliability_monitor_; 23323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Parameters needed for isolated apps. 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath profile_path_; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int app_cache_max_size_; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int app_media_cache_max_size_; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ProfileImplIOData); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PROFILES_PROFILE_IMPL_IO_DATA_H_ 243