diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-11-19 14:53:55 +0000 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-11-19 14:53:55 +0000 |
commit | 657fb1c9269ce235b66a0f32c9bf0afc64fa7c77 (patch) | |
tree | 396a4bc17c30655c78fd62fe34778900c40a97cc /chrome | |
parent | 4ec08dd85e9e4584f1bb0cd6110590f367d8b258 (diff) | |
download | external_chromium-657fb1c9269ce235b66a0f32c9bf0afc64fa7c77.zip external_chromium-657fb1c9269ce235b66a0f32c9bf0afc64fa7c77.tar.gz external_chromium-657fb1c9269ce235b66a0f32c9bf0afc64fa7c77.tar.bz2 |
Revert "net: networking optimizations"
This reverts commit 5fbe95affc8eeed93c678b1d271f64dcc4dd919b.
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/net/preconnect.cc | 36 | ||||
-rw-r--r-- | chrome/browser/net/preconnect.h | 12 |
2 files changed, 41 insertions, 7 deletions
diff --git a/chrome/browser/net/preconnect.cc b/chrome/browser/net/preconnect.cc index e6c1fd4..b5fd87b 100644 --- a/chrome/browser/net/preconnect.cc +++ b/chrome/browser/net/preconnect.cc @@ -1,5 +1,4 @@ // Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Copyright (c) 2011, 2012 Code Aurora Forum. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -33,11 +32,12 @@ void PreconnectOnUIThread( return; } + void PreconnectOnIOThread( const GURL& url, UrlInfo::ResolutionMotivation motivation, int count) { - URLRequestContextGetter* getter = Profile::GetDefaultRequestContext(); + net::URLRequestContextGetter* getter = Profile::GetDefaultRequestContext(); if (!getter) return; if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { @@ -53,9 +53,26 @@ void PreconnectOnIOThread( net::HttpTransactionFactory* factory = context->http_transaction_factory(); net::HttpNetworkSession* session = factory->GetSession(); + net::HttpRequestInfo request_info; + request_info.url = url; + request_info.method = "GET"; + request_info.extra_headers.SetHeader(net::HttpRequestHeaders::kUserAgent, + context->GetUserAgent(url)); + // It almost doesn't matter whether we use net::LOWEST or net::HIGHEST + // priority here, as we won't make a request, and will surrender the created + // socket to the pool as soon as we can. However, we would like to mark the + // speculative socket as such, and IF we use a net::LOWEST priority, and if + // a navigation asked for a socket (after us) then it would get our socket, + // and we'd get its later-arriving socket, which might make us record that + // the speculation didn't help :-/. By using net::HIGHEST, we ensure that + // a socket is given to us if "we asked first" and this allows us to mark it + // as speculative, and better detect stats (if it gets used). + // TODO(jar): histogram to see how often we accidentally use a previously- + // unused socket, when a previously used socket was available. + request_info.priority = net::HIGHEST; + // Translate the motivation from UrlRequest motivations to HttpRequest // motivations. - net::HttpRequestInfo::RequestMotivation motivation_; switch (motivation) { case UrlInfo::OMNIBOX_MOTIVATED: request_info.motivation = net::HttpRequestInfo::OMNIBOX_MOTIVATED; @@ -73,7 +90,18 @@ void PreconnectOnIOThread( break; } - net::Preconnect::DoPreconnect(session, url, count, motivation_); + // Setup the SSL Configuration. + net::SSLConfig ssl_config; + session->ssl_config_service()->GetSSLConfig(&ssl_config); + if (session->http_stream_factory()->next_protos()) + ssl_config.next_protos = *session->http_stream_factory()->next_protos(); + + // All preconnects should perform EV certificate verification. + ssl_config.verify_ev_cert = true; + + net::HttpStreamFactory* http_stream_factory = session->http_stream_factory(); + http_stream_factory->PreconnectStreams( + count, request_info, ssl_config, net::BoundNetLog()); } } // namespace chrome_browser_net diff --git a/chrome/browser/net/preconnect.h b/chrome/browser/net/preconnect.h index 0d7ed21..056d5d6 100644 --- a/chrome/browser/net/preconnect.h +++ b/chrome/browser/net/preconnect.h @@ -1,18 +1,23 @@ // Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Copyright (c) 2011, Code Aurora Forum. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// A Preconnect instance maintains state while a TCP/IP connection is made, and +// and then released into the pool of available connections for future use. + #ifndef CHROME_BROWSER_NET_PRECONNECT_H_ #define CHROME_BROWSER_NET_PRECONNECT_H_ #pragma once -#include "net/http/preconnect.h" - #include "chrome/browser/net/url_info.h" +class GURL; + namespace chrome_browser_net { +// Try to preconnect. Typically motivated by OMNIBOX to reach search service. +// |count| may be used to request more than one connection be established in +// parallel. void PreconnectOnUIThread(const GURL& url, UrlInfo::ResolutionMotivation motivation, int count); @@ -23,6 +28,7 @@ void PreconnectOnUIThread(const GURL& url, void PreconnectOnIOThread(const GURL& url, UrlInfo::ResolutionMotivation motivation, int count); + } // namespace chrome_browser_net #endif // CHROME_BROWSER_NET_PRECONNECT_H_ |