diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-29 23:46:17 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-29 23:46:17 +0000 |
commit | 4376ec3d152063896078cae661f72a9b2345d35b (patch) | |
tree | bf0a49755e79cf6a268b9b726c36604b2cf369b7 /chrome/browser/net/predictor.cc | |
parent | e417b1aa648f4a2eff926b43b1ebdc0ecab63185 (diff) | |
download | chromium_src-4376ec3d152063896078cae661f72a9b2345d35b.zip chromium_src-4376ec3d152063896078cae661f72a9b2345d35b.tar.gz chromium_src-4376ec3d152063896078cae661f72a9b2345d35b.tar.bz2 |
Support predictive request for multiple preconnections
Connected up to the API for requesting more than
one preconnect at a time (that API also explicitly
tags requsets as preconnects, so that they can be
merged with actual navication requests).
BUG=64246
r=willchan,mbelshe
Review URL: http://codereview.chromium.org/5271002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67614 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/net/predictor.cc')
-rw-r--r-- | chrome/browser/net/predictor.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/chrome/browser/net/predictor.cc b/chrome/browser/net/predictor.cc index 2c8ce5f..46dcf1f 100644 --- a/chrome/browser/net/predictor.cc +++ b/chrome/browser/net/predictor.cc @@ -5,6 +5,7 @@ #include "chrome/browser/net/predictor.h" #include <algorithm> +#include <cmath> #include <set> #include <sstream> @@ -182,8 +183,9 @@ void Predictor::AnticipateOmniboxUrl(const GURL& url, bool preconnectable) { kMaxSearchKeepaliveSeconds) return; // We've done a preconnect recently. last_omnibox_preconnect_ = now; - - Preconnect::PreconnectOnUIThread(CanonicalizeUrl(url), motivation); + const int kConnectionsNeeded = 1; + Preconnect::PreconnectOnUIThread(CanonicalizeUrl(url), motivation, + kConnectionsNeeded); return; // Skip pre-resolution, since we'll open a connection. } } else { @@ -215,7 +217,9 @@ void Predictor::PreconnectUrlAndSubresources(const GURL& url) { if (preconnect_enabled()) { std::string host = url.HostNoBrackets(); UrlInfo::ResolutionMotivation motivation(UrlInfo::EARLY_LOAD_MOTIVATED); - Preconnect::PreconnectOnUIThread(CanonicalizeUrl(url), motivation); + const int kConnectionsNeeded = 1; + Preconnect::PreconnectOnUIThread(CanonicalizeUrl(url), motivation, + kConnectionsNeeded); PredictFrameSubresources(url.GetWithEmptyPath()); } } @@ -250,11 +254,12 @@ void Predictor::PrepareFrameSubresources(const GURL& url) { 10, 5000, 50); future_url->second.ReferrerWasObserved(); if (preconnect_enabled_ && - kPreconnectWorthyExpectedValue < connection_expectation) { + connection_expectation > kPreconnectWorthyExpectedValue) { evalution = PRECONNECTION; future_url->second.IncrementPreconnectionCount(); - Preconnect::PreconnectOnIOThread(future_url->first, motivation); - } else if (kDNSPreresolutionWorthyExpectedValue < connection_expectation) { + int count = static_cast<int>(std::ceil(connection_expectation)); + Preconnect::PreconnectOnIOThread(future_url->first, motivation, count); + } else if (connection_expectation > kDNSPreresolutionWorthyExpectedValue) { evalution = PRERESOLUTION; future_url->second.preresolution_increment(); UrlInfo* queued_info = AppendToResolutionQueue(future_url->first, |