Index: chrome/browser/net/connect_interceptor.cc |
=================================================================== |
--- chrome/browser/net/connect_interceptor.cc (revision 54027) |
+++ chrome/browser/net/connect_interceptor.cc (working copy) |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/net/connect_interceptor.h" |
#include "chrome/browser/net/predictor_api.h" |
+#include "net/base/load_flags.h" |
namespace chrome_browser_net { |
@@ -17,24 +18,18 @@ |
} |
URLRequestJob* ConnectInterceptor::MaybeIntercept(URLRequest* request) { |
- if (!request->referrer().empty()) { |
+ bool is_subresource = !(request->load_flags() & net::LOAD_MAIN_FRAME); |
+ if (is_subresource && !request->referrer().empty()) { |
// Learn about our referring URL, for use in the future. |
- GURL referring_url(GURL(request->referrer()).GetWithEmptyPath()); |
- // TODO(jar): Only call if we think this was part of a frame load, and not a |
- // link navigation. For now, we'll "learn" that to preconnect when a user |
- // actually does a click... which will probably waste space in our referrers |
- // table (since it probably won't be that deterministic). |
- LearnFromNavigation(referring_url, request->url().GetWithEmptyPath()); |
+ GURL referring_url(request->referrer()); |
+ LearnFromNavigation(referring_url.GetWithEmptyPath(), |
+ request->url().GetWithEmptyPath()); |
} |
+ bool is_frame = 0 != (request->load_flags() & (net::LOAD_SUB_FRAME | |
+ net::LOAD_MAIN_FRAME)); |
// Now we use previous learning and setup for our subresources. |
- if (request->was_fetched_via_proxy()) |
- return NULL; |
- // TODO(jar): Only call if we believe this is a frame, and might have |
- // subresources. We could "guess" by looking at path extensions (such as |
- // foo.jpg or goo.gif etc.), but better would be to get this info from webkit |
- // and have it add the info to the request (we currently only set the |
- // priority, but we could record whether it was a frame). |
- PredictFrameSubresources(request->url().GetWithEmptyPath()); |
+ if (is_frame && !request->was_fetched_via_proxy()) |
+ PredictFrameSubresources(request->url().GetWithEmptyPath()); |
return NULL; |
} |