OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // A UrlInfo object is used to store prediction related information about a host | 5 // A UrlInfo object is used to store prediction related information about a host |
6 // port and scheme triplet. When performing DNS pre-resolution of the host/port | 6 // port and scheme triplet. When performing DNS pre-resolution of the host/port |
7 // pair, its state is monitored as it is resolved. | 7 // pair, its state is monitored as it is resolved. |
8 // It includes progress, from placement in the Predictor's queue, to resolution | 8 // It includes progress, from placement in the Predictor's queue, to resolution |
9 // by the DNS service as either FOUND or NO_SUCH_NAME. Each instance may also | 9 // by the DNS service as either FOUND or NO_SUCH_NAME. Each instance may also |
10 // hold records of previous resolution times, which might later be shown to be | 10 // hold records of previous resolution times, which might later be shown to be |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 | 57 |
58 enum DnsProcessingState { | 58 enum DnsProcessingState { |
59 // When processed by our prefetching system, the states are: | 59 // When processed by our prefetching system, the states are: |
60 PENDING, // Constructor has completed. | 60 PENDING, // Constructor has completed. |
61 QUEUED, // In name queue but not yet being resolved. | 61 QUEUED, // In name queue but not yet being resolved. |
62 ASSIGNED, // Being resolved (or being reset to earlier state) | 62 ASSIGNED, // Being resolved (or being reset to earlier state) |
63 ASSIGNED_BUT_MARKED, // Needs to be deleted as soon as it's resolved. | 63 ASSIGNED_BUT_MARKED, // Needs to be deleted as soon as it's resolved. |
64 FOUND, // DNS resolution completed. | 64 FOUND, // DNS resolution completed. |
65 NO_SUCH_NAME, // DNS resolution completed. | 65 NO_SUCH_NAME, // DNS resolution completed. |
66 }; | 66 }; |
67 static const base::TimeDelta kMaxNonNetworkDnsLookupDuration; | |
68 // The number of OS cache entries we can guarantee(?) before cache eviction | |
69 // might likely take place. | |
70 static const int kMaxGuaranteedDnsCacheSize = 50; | |
71 | 67 |
72 typedef std::vector<UrlInfo> UrlInfoTable; | 68 typedef std::vector<UrlInfo> UrlInfoTable; |
73 | 69 |
74 static const base::TimeDelta kNullDuration; | 70 static base::TimeDelta NullDuration() { |
| 71 return base::TimeDelta::FromMilliseconds(-1); |
| 72 } |
75 | 73 |
76 // UrlInfo are usually made by the default constructor during | 74 // UrlInfo are usually made by the default constructor during |
77 // initializing of the Predictor's map (of info for Hostnames). | 75 // initializing of the Predictor's map (of info for Hostnames). |
78 UrlInfo(); | 76 UrlInfo(); |
79 | 77 |
80 ~UrlInfo(); | 78 ~UrlInfo(); |
81 | 79 |
82 // NeedDnsUpdate decides, based on our internal info, | 80 // NeedDnsUpdate decides, based on our internal info, |
83 // if it would be valuable to attempt to update (prefectch) | 81 // if it would be valuable to attempt to update (prefectch) |
84 // DNS data for hostname. This decision is based | 82 // DNS data for hostname. This decision is based |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 // IsStillCached() guesses if the DNS cache still has IP data. | 142 // IsStillCached() guesses if the DNS cache still has IP data. |
145 bool IsStillCached() const; | 143 bool IsStillCached() const; |
146 | 144 |
147 // Record why we created, or have updated (reqested pre-resolution) of this | 145 // Record why we created, or have updated (reqested pre-resolution) of this |
148 // instance. | 146 // instance. |
149 void SetMotivation(ResolutionMotivation motivation); | 147 void SetMotivation(ResolutionMotivation motivation); |
150 | 148 |
151 // Helper function for about:dns printing. | 149 // Helper function for about:dns printing. |
152 std::string GetAsciiMotivation() const; | 150 std::string GetAsciiMotivation() const; |
153 | 151 |
154 // The next declaration is non-const to facilitate testing. | |
155 static base::TimeDelta cache_expiration_duration_; | |
156 | |
157 // The current state of this instance. | 152 // The current state of this instance. |
158 DnsProcessingState state_; | 153 DnsProcessingState state_; |
159 | 154 |
160 // Record the state prior to going to a queued state, in case we have to back | 155 // Record the state prior to going to a queued state, in case we have to back |
161 // out of the queue. | 156 // out of the queue. |
162 DnsProcessingState old_prequeue_state_; | 157 DnsProcessingState old_prequeue_state_; |
163 | 158 |
164 GURL url_; // Host, port and scheme for this info. | 159 GURL url_; // Host, port and scheme for this info. |
165 | 160 |
166 // When was last state changed (usually lookup completed). | 161 // When was last state changed (usually lookup completed). |
(...skipping 18 matching lines...) Expand all Loading... |
185 GURL referring_url_; | 180 GURL referring_url_; |
186 | 181 |
187 // We put these objects into a std::map, and hence we | 182 // We put these objects into a std::map, and hence we |
188 // need some "evil" constructors. | 183 // need some "evil" constructors. |
189 // DISALLOW_COPY_AND_ASSIGN(UrlInfo); | 184 // DISALLOW_COPY_AND_ASSIGN(UrlInfo); |
190 }; | 185 }; |
191 | 186 |
192 } // namespace chrome_browser_net | 187 } // namespace chrome_browser_net |
193 | 188 |
194 #endif // CHROME_BROWSER_NET_URL_INFO_H_ | 189 #endif // CHROME_BROWSER_NET_URL_INFO_H_ |
OLD | NEW |