| 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;
|
| }
|
|
|
|
|