// Copyright 2011 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This class helps to remember what domains may be needed to be resolved when a // navigation takes place to a given URL. This information is gathered when a // navigation to a subresource identifies a referring URL. // When future navigations take place to known referrer sites, then we // speculatively either pre-warm a TCP/IP conneciton, or at a minimum, resolve // the host name via DNS. // All access to this class is performed via the Predictor class, which only // operates on the IO thread. #ifndef CHROME_BROWSER_NET_REFERRER_H_ #define CHROME_BROWSER_NET_REFERRER_H_ #include <stdint.h> #include <map> #include <memory> #include "base/time/time.h" #include "base/values.h" #include "net/base/host_port_pair.h" #include "url/gurl.h" namespace chrome_browser_net { //------------------------------------------------------------------------------ // For each hostname in a Referrer, we have a ReferrerValue. It indicates // exactly how much value (re: latency reduction, or connection use) has // resulted from having this entry. class ReferrerValue { … }; //------------------------------------------------------------------------------ // A list of domain names to pre-resolve. The names are the keys to this map, // and the values indicate the amount of benefit derived from having each name // around. SubresourceMap; //------------------------------------------------------------------------------ // There is one Referrer instance for each hostname that has acted as an HTTP // referer (note mispelling is intentional) for a hostname that was otherwise // unexpectedly navgated towards ("unexpected" in the sense that the hostname // was probably needed as a subresource of a page, and was not otherwise // predictable until the content with the reference arrived). Most typically, // an outer page was a page fetched by the user, and this instance lists names // in SubresourceMap which are subresources and that were needed to complete the // rendering of the outer page. class Referrer : public SubresourceMap { … }; } // namespace chrome_browser_net #endif // CHROME_BROWSER_NET_REFERRER_H_