summaryrefslogtreecommitdiffstats
path: root/chrome/browser/net/predictor.cc
diff options
context:
space:
mode:
authorjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-29 23:46:17 +0000
committerjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-29 23:46:17 +0000
commit4376ec3d152063896078cae661f72a9b2345d35b (patch)
treebf0a49755e79cf6a268b9b726c36604b2cf369b7 /chrome/browser/net/predictor.cc
parente417b1aa648f4a2eff926b43b1ebdc0ecab63185 (diff)
downloadchromium_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.cc17
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,