OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "net/http/http_cache_transaction.h" | 5 #include "net/http/http_cache_transaction.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #if defined(OS_POSIX) | 9 #if defined(OS_POSIX) |
10 #include <unistd.h> | 10 #include <unistd.h> |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
231 | 231 |
232 void RecordNoStoreHeaderHistogram(int load_flags, | 232 void RecordNoStoreHeaderHistogram(int load_flags, |
233 const net::HttpResponseInfo* response) { | 233 const net::HttpResponseInfo* response) { |
234 if (load_flags & net::LOAD_MAIN_FRAME) { | 234 if (load_flags & net::LOAD_MAIN_FRAME) { |
235 UMA_HISTOGRAM_BOOLEAN( | 235 UMA_HISTOGRAM_BOOLEAN( |
236 "Net.MainFrameNoStore", | 236 "Net.MainFrameNoStore", |
237 response->headers->HasHeaderValue("cache-control", "no-store")); | 237 response->headers->HasHeaderValue("cache-control", "no-store")); |
238 } | 238 } |
239 } | 239 } |
240 | 240 |
241 // TODO(ricea): Add CACHE_USABLE_STALE once stale-while-revalidate CL landed. | |
242 // TODO(ricea): Either remove this histogram or make it permanent by M40. | |
243 void RecordExternallyConditionalizedHistogram(bool requires_validation) { | |
244 enum ExternallyConditionalizedType { | |
245 EXTERNALLY_CONDITIONALIZED_CACHE_REQUIRES_VALIDATION, | |
246 EXTERNALLY_CONDITIONALIZED_CACHE_USABLE, | |
247 EXTERNALLY_CONDITIONALIZED_MAX | |
248 }; | |
249 ExternallyConditionalizedType type = | |
250 requires_validation ? EXTERNALLY_CONDITIONALIZED_CACHE_REQUIRES_VALIDATION | |
251 : EXTERNALLY_CONDITIONALIZED_CACHE_USABLE; | |
252 UMA_HISTOGRAM_ENUMERATION("HttpCache.ExternallyConditionalized", | |
253 type, | |
254 EXTERNALLY_CONDITIONALIZED_MAX); | |
255 } | |
256 | |
241 } // namespace | 257 } // namespace |
242 | 258 |
243 namespace net { | 259 namespace net { |
244 | 260 |
245 struct HeaderNameAndValue { | 261 struct HeaderNameAndValue { |
246 const char* name; | 262 const char* name; |
247 const char* value; | 263 const char* value; |
248 }; | 264 }; |
249 | 265 |
250 // If the request includes one of these request headers, then avoid caching | 266 // If the request includes one of these request headers, then avoid caching |
(...skipping 1963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2214 std::string validator; | 2230 std::string validator; |
2215 response_.headers->EnumerateHeader( | 2231 response_.headers->EnumerateHeader( |
2216 NULL, | 2232 NULL, |
2217 kValidationHeaders[i].related_response_header_name, | 2233 kValidationHeaders[i].related_response_header_name, |
2218 &validator); | 2234 &validator); |
2219 | 2235 |
2220 if (response_.headers->response_code() != 200 || truncated_ || | 2236 if (response_.headers->response_code() != 200 || truncated_ || |
2221 validator.empty() || validator != external_validation_.values[i]) { | 2237 validator.empty() || validator != external_validation_.values[i]) { |
2222 // The externally conditionalized request is not a validation request | 2238 // The externally conditionalized request is not a validation request |
2223 // for our existing cache entry. Proceed with caching disabled. | 2239 // for our existing cache entry. Proceed with caching disabled. |
2224 UpdateTransactionPattern(PATTERN_NOT_COVERED); | 2240 UpdateTransactionPattern(PATTERN_NOT_COVERED); |
rvargas (doing something else)
2014/09/04 01:45:12
The description says that it tells whether the res
Adam Rice
2014/09/04 15:19:41
Sorry, I had some kind of tunnel vision and was co
| |
2225 DoneWritingToEntry(true); | 2241 DoneWritingToEntry(true); |
2226 } | 2242 } |
2227 } | 2243 } |
2228 | 2244 |
2245 // TODO(ricea): This calculation is expensive to perform just to collect | |
2246 // statistics. Either remove it or use the result, depending on the result of | |
2247 // the experiment. | |
2248 RecordExternallyConditionalizedHistogram(RequiresValidation()); | |
2249 | |
2229 next_state_ = STATE_SEND_REQUEST; | 2250 next_state_ = STATE_SEND_REQUEST; |
2230 return OK; | 2251 return OK; |
2231 } | 2252 } |
2232 | 2253 |
2233 int HttpCache::Transaction::RestartNetworkRequest() { | 2254 int HttpCache::Transaction::RestartNetworkRequest() { |
2234 DCHECK(mode_ & WRITE || mode_ == NONE); | 2255 DCHECK(mode_ & WRITE || mode_ == NONE); |
2235 DCHECK(network_trans_.get()); | 2256 DCHECK(network_trans_.get()); |
2236 DCHECK_EQ(STATE_NONE, next_state_); | 2257 DCHECK_EQ(STATE_NONE, next_state_); |
2237 | 2258 |
2238 next_state_ = STATE_SEND_REQUEST_COMPLETE; | 2259 next_state_ = STATE_SEND_REQUEST_COMPLETE; |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2869 default: | 2890 default: |
2870 NOTREACHED(); | 2891 NOTREACHED(); |
2871 } | 2892 } |
2872 } | 2893 } |
2873 | 2894 |
2874 void HttpCache::Transaction::OnIOComplete(int result) { | 2895 void HttpCache::Transaction::OnIOComplete(int result) { |
2875 DoLoop(result); | 2896 DoLoop(result); |
2876 } | 2897 } |
2877 | 2898 |
2878 } // namespace net | 2899 } // namespace net |
OLD | NEW |