| Index: chrome/browser/profiles/profile_impl_io_data.cc | 
| =================================================================== | 
| --- chrome/browser/profiles/profile_impl_io_data.cc	(revision 100345) | 
| +++ chrome/browser/profiles/profile_impl_io_data.cc	(working copy) | 
| @@ -12,6 +12,8 @@ | 
| #include "chrome/browser/io_thread.h" | 
| #include "chrome/browser/net/chrome_net_log.h" | 
| #include "chrome/browser/net/chrome_network_delegate.h" | 
| +#include "chrome/browser/net/connect_interceptor.h" | 
| +#include "chrome/browser/net/predictor.h" | 
| #include "chrome/browser/net/sqlite_origin_bound_cert_store.h" | 
| #include "chrome/browser/net/sqlite_persistent_cookie_store.h" | 
| #include "chrome/browser/prefs/pref_member.h" | 
| @@ -25,6 +27,7 @@ | 
| #include "net/base/origin_bound_cert_service.h" | 
| #include "net/ftp/ftp_network_layer.h" | 
| #include "net/http/http_cache.h" | 
| +#include "net/url_request/url_request_job_factory.h" | 
|  | 
| ProfileImplIOData::Handle::Handle(Profile* profile) | 
| : io_data_(new ProfileImplIOData), | 
| @@ -43,6 +46,8 @@ | 
| if (extensions_request_context_getter_) | 
| extensions_request_context_getter_->CleanupOnUIThread(); | 
|  | 
| +  io_data_->predictor_->ShutdownOnUIThread(profile_->GetPrefs()); | 
| + | 
| // Clean up all isolated app request contexts. | 
| for (ChromeURLRequestContextGetterMap::iterator iter = | 
| app_request_context_getter_map_.begin(); | 
| @@ -54,16 +59,22 @@ | 
| io_data_->ShutdownOnUIThread(); | 
| } | 
|  | 
| -void ProfileImplIOData::Handle::Init(const FilePath& cookie_path, | 
| -                                     const FilePath& origin_bound_cert_path, | 
| -                                     const FilePath& cache_path, | 
| -                                     int cache_max_size, | 
| -                                     const FilePath& media_cache_path, | 
| -                                     int media_cache_max_size, | 
| -                                     const FilePath& extensions_cookie_path, | 
| -                                     const FilePath& app_path) { | 
| +void ProfileImplIOData::Handle::Init( | 
| +      const FilePath& cookie_path, | 
| +      const FilePath& origin_bound_cert_path, | 
| +      const FilePath& cache_path, | 
| +      int cache_max_size, | 
| +      const FilePath& media_cache_path, | 
| +      int media_cache_max_size, | 
| +      const FilePath& extensions_cookie_path, | 
| +      const FilePath& app_path, | 
| +      chrome_browser_net::Predictor* predictor, | 
| +      PrefService* local_state, | 
| +      IOThread* io_thread) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 
| DCHECK(!io_data_->lazy_params_.get()); | 
| +  DCHECK(predictor); | 
| + | 
| LazyParams* lazy_params = new LazyParams; | 
|  | 
| lazy_params->cookie_path = cookie_path; | 
| @@ -78,6 +89,11 @@ | 
|  | 
| // Keep track of isolated app path separately so we can use it on demand. | 
| io_data_->app_path_ = app_path; | 
| + | 
| +  io_data_->predictor_.reset(predictor); | 
| +  io_data_->predictor_->InitNetworkPredictor(profile_->GetPrefs(), | 
| +                                             local_state, | 
| +                                             io_thread); | 
| } | 
|  | 
| base::Callback<ChromeURLDataManagerBackend*(void)> | 
| @@ -336,6 +352,9 @@ | 
| media_request_context_->set_job_factory(job_factory()); | 
| extensions_context->set_job_factory(job_factory()); | 
|  | 
| +  job_factory()->AddInterceptor( | 
| +      new chrome_browser_net::ConnectInterceptor(predictor_.get())); | 
| + | 
| lazy_params_.reset(); | 
| } | 
|  | 
|  |