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

Side by Side Diff: chrome/browser/net/connect_interceptor.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 | « chrome/browser/io_thread.cc ('k') | chrome/browser/net/preconnect.h » ('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/net/connect_interceptor.h" 5 #include "chrome/browser/net/connect_interceptor.h"
6 6
7 #include "chrome/browser/net/predictor_api.h" 7 #include "chrome/browser/net/predictor_api.h"
8 #include "net/base/load_flags.h"
8 9
9 namespace chrome_browser_net { 10 namespace chrome_browser_net {
10 11
11 ConnectInterceptor::ConnectInterceptor() { 12 ConnectInterceptor::ConnectInterceptor() {
12 URLRequest::RegisterRequestInterceptor(this); 13 URLRequest::RegisterRequestInterceptor(this);
13 } 14 }
14 15
15 ConnectInterceptor::~ConnectInterceptor() { 16 ConnectInterceptor::~ConnectInterceptor() {
16 URLRequest::UnregisterRequestInterceptor(this); 17 URLRequest::UnregisterRequestInterceptor(this);
17 } 18 }
18 19
19 URLRequestJob* ConnectInterceptor::MaybeIntercept(URLRequest* request) { 20 URLRequestJob* ConnectInterceptor::MaybeIntercept(URLRequest* request) {
20 if (!request->referrer().empty()) { 21 bool is_subresource = !(request->load_flags() & net::LOAD_MAIN_FRAME);
22 if (is_subresource && !request->referrer().empty()) {
21 // Learn about our referring URL, for use in the future. 23 // Learn about our referring URL, for use in the future.
22 GURL referring_url(GURL(request->referrer()).GetWithEmptyPath()); 24 GURL referring_url(request->referrer());
23 // TODO(jar): Only call if we think this was part of a frame load, and not a 25 LearnFromNavigation(referring_url.GetWithEmptyPath(),
24 // link navigation. For now, we'll "learn" that to preconnect when a user 26 request->url().GetWithEmptyPath());
25 // actually does a click... which will probably waste space in our referrers
26 // table (since it probably won't be that deterministic).
27 LearnFromNavigation(referring_url, request->url().GetWithEmptyPath());
28 } 27 }
28 bool is_frame = 0 != (request->load_flags() & (net::LOAD_SUB_FRAME |
29 net::LOAD_MAIN_FRAME));
29 // Now we use previous learning and setup for our subresources. 30 // Now we use previous learning and setup for our subresources.
30 if (request->was_fetched_via_proxy()) 31 if (is_frame && !request->was_fetched_via_proxy())
31 return NULL; 32 PredictFrameSubresources(request->url().GetWithEmptyPath());
32 // TODO(jar): Only call if we believe this is a frame, and might have
33 // subresources. We could "guess" by looking at path extensions (such as
34 // foo.jpg or goo.gif etc.), but better would be to get this info from webkit
35 // and have it add the info to the request (we currently only set the
36 // priority, but we could record whether it was a frame).
37 PredictFrameSubresources(request->url().GetWithEmptyPath());
38 return NULL; 33 return NULL;
39 } 34 }
40 35
41 } // namespace chrome_browser_net 36 } // namespace chrome_browser_net
OLDNEW
« no previous file with comments | « chrome/browser/io_thread.cc ('k') | chrome/browser/net/preconnect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698