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

Side by Side Diff: chrome/browser/io_thread.cc

Issue 3032014: Support both preconnection, and pre-resolution for subresources... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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
« no previous file with comments | « no previous file | chrome/browser/net/connect_interceptor.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #include "chrome/browser/io_thread.h" 5 #include "chrome/browser/io_thread.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/leak_tracker.h" 7 #include "base/leak_tracker.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/chrome_thread.h" 10 #include "chrome/browser/chrome_thread.h"
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 329
330 chrome_browser_net::EnablePredictor(prefetching_enabled); 330 chrome_browser_net::EnablePredictor(prefetching_enabled);
331 331
332 predictor_ = new chrome_browser_net::Predictor( 332 predictor_ = new chrome_browser_net::Predictor(
333 globals_->host_resolver, 333 globals_->host_resolver,
334 max_dns_queue_delay, 334 max_dns_queue_delay,
335 max_concurrent, 335 max_concurrent,
336 preconnect_enabled); 336 preconnect_enabled);
337 predictor_->AddRef(); 337 predictor_->AddRef();
338 338
339 // TODO(jar): Until connection notification and DNS observation handling are 339 // Speculative_interceptor_ is used to predict subresource usage.
340 // properly combined into a learning model, we'll only use one observation 340 DCHECK(!speculative_interceptor_);
341 // mechanism or the other. 341 speculative_interceptor_ = new chrome_browser_net::ConnectInterceptor;
342 if (preconnect_enabled) { 342
343 DCHECK(!speculative_interceptor_); 343 // TODO(jar): We can completely replace prefetch_observer with
344 speculative_interceptor_ = new chrome_browser_net::ConnectInterceptor; 344 // speculative_interceptor.
345 } else { 345 // Prefetch_observer is used to monitor initial resolutions.
346 DCHECK(!prefetch_observer_); 346 DCHECK(!prefetch_observer_);
347 prefetch_observer_ = chrome_browser_net::CreateResolverObserver(); 347 prefetch_observer_ = chrome_browser_net::CreateResolverObserver();
348 globals_->host_resolver->AddObserver(prefetch_observer_); 348 globals_->host_resolver->AddObserver(prefetch_observer_);
349 }
350 349
351 FinalizePredictorInitialization( 350 FinalizePredictorInitialization(
352 predictor_, prefetch_observer_, startup_urls, referral_list); 351 predictor_, prefetch_observer_, startup_urls, referral_list);
353 } 352 }
354 353
355 void IOThread::ChangedToOnTheRecordOnIOThread() { 354 void IOThread::ChangedToOnTheRecordOnIOThread() {
356 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); 355 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
357 356
358 if (predictor_) { 357 if (predictor_) {
359 // Destroy all evidence of our OTR session. 358 // Destroy all evidence of our OTR session.
360 predictor_->Predictor::DiscardAllResults(); 359 predictor_->Predictor::DiscardAllResults();
361 } 360 }
362 361
363 // Clear the host cache to avoid showing entries from the OTR session 362 // Clear the host cache to avoid showing entries from the OTR session
364 // in about:net-internals. 363 // in about:net-internals.
365 if (globals_->host_resolver->GetAsHostResolverImpl()) { 364 if (globals_->host_resolver->GetAsHostResolverImpl()) {
366 net::HostCache* host_cache = 365 net::HostCache* host_cache =
367 globals_->host_resolver.get()->GetAsHostResolverImpl()->cache(); 366 globals_->host_resolver.get()->GetAsHostResolverImpl()->cache();
368 if (host_cache) 367 if (host_cache)
369 host_cache->clear(); 368 host_cache->clear();
370 } 369 }
371 // Clear all of the passively logged data. 370 // Clear all of the passively logged data.
372 // TODO(eroman): this is a bit heavy handed, really all we need to do is 371 // TODO(eroman): this is a bit heavy handed, really all we need to do is
373 // clear the data pertaining to off the record context. 372 // clear the data pertaining to off the record context.
374 globals_->net_log->passive_collector()->Clear(); 373 globals_->net_log->passive_collector()->Clear();
375 } 374 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/net/connect_interceptor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698