Logo Search packages:      
Sourcecode: chromium-browser version File versions  Download package

connect_interceptor.cc

// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/net/connect_interceptor.h"

#include "chrome/browser/net/predictor_api.h"

namespace chrome_browser_net {

ConnectInterceptor::ConnectInterceptor() {
  URLRequest::RegisterRequestInterceptor(this);
}

ConnectInterceptor::~ConnectInterceptor() {
  URLRequest::UnregisterRequestInterceptor(this);
}

URLRequestJob* ConnectInterceptor::MaybeIntercept(URLRequest* request) {
  if (!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());
  }
  // 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());
  return NULL;
}

}  // namespace chrome_browser_net

Generated by  Doxygen 1.6.0   Back to index