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; 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SDCHManager; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace net 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace quota { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpecialStoragePolicy; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace quota 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProfileImplIOData : public ProfileIOData { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Handle { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit Handle(Profile* profile); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~Handle(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Init() must be called before ~Handle(). It records most of the 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // parameters needed to construct a ChromeURLRequestContextGetter. 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Init(const base::FilePath& cookie_path, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& server_bound_cert_path, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& cache_path, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cache_max_size, 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& media_cache_path, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int media_cache_max_size, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& extensions_cookie_path, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& infinite_cache_path, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_browser_net::Predictor* predictor, 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::CookieStoreConfig::SessionCookieMode 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) session_cookie_mode, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) quota::SpecialStoragePolicy* special_storage_policy); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // These Create*ContextGetter() functions are only exposed because the 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // circular relationship between Profile, ProfileIOData::Handle, and the 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ChromeURLRequestContextGetter factories requires Profile be able to call 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // these functions. 68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> CreateMainRequestContextGetter( 69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors, 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PrefService* local_state, 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IOThread* io_thread) const; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CreateIsolatedAppRequestContextGetter( 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool in_memory, 77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) request_interceptors) const; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* GetResourceContext() const; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // GetResourceContextNoInit() does not call LazyInitialize() so it can be 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // safely be used during initialization. 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* GetResourceContextNoInit() const; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMediaRequestContextGetter() const; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExtensionsRequestContextGetter() const; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter> 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetIsolatedMediaRequestContextGetter( 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool in_memory) const; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Returns the DevToolsNetworkController attached to ProfileIOData. 9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DevToolsNetworkController* GetDevToolsNetworkController() const; 9646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Deletes all network related data since |time|. It deletes transport 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // security state since |time| and also deletes HttpServerProperties data. 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Works asynchronously, however if the |completion| callback is non-null, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it will be posted on the UI thread once the removal process completes. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClearNetworkingHistorySince(base::Time time, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& completion); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Clears part or all of the state of the Domain Reliability Monitor. If 105cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // |clear_contexts| is true, clears the (site-provided) contexts, which are 106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // cookie-esque; if it is false, clears only the (logged) beacons within 107cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // them, which are history-esque. 108cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void ClearDomainReliabilityMonitor( 109cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) domain_reliability::DomainReliabilityClearMode mode, 110cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Closure& completion); 111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<StoragePartitionDescriptor, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ChromeURLRequestContextGetter>, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StoragePartitionDescriptorLess> 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContextGetterMap; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Lazily initialize ProfileParams. We do this on the calls to 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get*RequestContextGetter(), so we only initialize ProfileParams right 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // before posting a task to the IO thread to start using them. This prevents 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // objects that are supposed to be deleted on the IO thread, but are created 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // on the UI thread from being unnecessarily initialized. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LazyInitialize() const; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ordering is important here. Do not reorder unless you know what you're 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // doing. We need to release |io_data_| *before* the getters, because we 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // want to make sure that the last reference for |io_data_| is on the IO 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // thread. The getters will be deleted on the IO thread, so they will 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // release their refs to their contexts, which will release the last refs to 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the ProfileIOData on the IO thread. 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_refptr<ChromeURLRequestContextGetter> 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) main_request_context_getter_; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_refptr<ChromeURLRequestContextGetter> 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) media_request_context_getter_; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_refptr<ChromeURLRequestContextGetter> 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_request_context_getter_; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable ChromeURLRequestContextGetterMap app_request_context_getter_map_; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable ChromeURLRequestContextGetterMap 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isolated_media_request_context_getter_map_; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileImplIOData* const io_data_; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* const profile_; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable bool initialized_; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Handle); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class base::RefCountedThreadSafe<ProfileImplIOData>; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct LazyParams { 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LazyParams(); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~LazyParams(); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // All of these parameters are intended to be read on the IO thread. 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath cookie_path; 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath server_bound_cert_path; 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath cache_path; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cache_max_size; 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath media_cache_path; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int media_cache_max_size; 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath extensions_cookie_path; 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath infinite_cache_path; 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::CookieStoreConfig::SessionCookieMode session_cookie_mode; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileImplIOData(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ProfileImplIOData(); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InitializeInternal( 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfileParams* profile_params, 174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 175cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) 176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OVERRIDE; 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InitializeExtensionsRequestContext( 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileParams* profile_params) const OVERRIDE; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* InitializeAppRequestContext( 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContext* main_context, 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor, 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protocol_handler_interceptor, 184a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 185cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) 186a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OVERRIDE; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* InitializeMediaRequestContext( 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContext* original_context, 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor) const OVERRIDE; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AcquireMediaRequestContext() const OVERRIDE; 192a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ChromeURLRequestContext* AcquireIsolatedAppRequestContext( 193a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ChromeURLRequestContext* main_context, 194a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor, 195a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 196a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) protocol_handler_interceptor, 197a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 198cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) 199a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OVERRIDE; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ChromeURLRequestContext* 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AcquireIsolatedMediaRequestContext( 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeURLRequestContext* app_context, 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StoragePartitionDescriptor& partition_descriptor) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const OVERRIDE; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Deletes all network related data since |time|. It deletes transport 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // security state since |time| and also deletes HttpServerProperties data. 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Works asynchronously, however if the |completion| callback is non-null, 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it will be posted on the UI thread once the removal process completes. 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClearNetworkingHistorySinceOnIOThread(base::Time time, 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& completion); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 213cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void ClearDomainReliabilityMonitorOnIOThread( 214cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) domain_reliability::DomainReliabilityClearMode mode, 215cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Closure& completion); 216cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Lazy initialization params. 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<LazyParams> lazy_params_; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::HttpTransactionFactory> main_http_factory_; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::FtpTransactionFactory> ftp_factory_; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Same as |ProfileIOData::http_server_properties_|, owned there to maintain 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // destruction ordering. 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mutable chrome_browser_net::HttpServerPropertiesManager* 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) http_server_properties_manager_; 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<chrome_browser_net::Predictor> predictor_; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<ChromeURLRequestContext> media_request_context_; 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::URLRequestJobFactory> main_job_factory_; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable scoped_ptr<net::URLRequestJobFactory> extensions_job_factory_; 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) mutable scoped_ptr<domain_reliability::DomainReliabilityMonitor> 23623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) domain_reliability_monitor_; 23723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 238f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) mutable scoped_ptr<net::SdchManager> sdch_manager_; 239f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Parameters needed for isolated apps. 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath profile_path_; 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int app_cache_max_size_; 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int app_media_cache_max_size_; 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ProfileImplIOData); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PROFILES_PROFILE_IMPL_IO_DATA_H_ 249