Chromium Code Reviews| 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 enum ExternallyConditionalizedType { | |
| 242 EXTERNALLY_CONDITIONALIZED_CACHE_REQUIRES_VALIDATION, | |
| 243 EXTERNALLY_CONDITIONALIZED_CACHE_USABLE, | |
| 244 EXTERNALLY_CONDITIONALIZED_MISMATCHED_VALIDATORS, | |
| 245 EXTERNALLY_CONDITIONALIZED_MAX | |
| 246 }; | |
| 247 | |
| 241 } // namespace | 248 } // namespace |
| 242 | 249 |
| 243 namespace net { | 250 namespace net { |
| 244 | 251 |
| 245 struct HeaderNameAndValue { | 252 struct HeaderNameAndValue { |
| 246 const char* name; | 253 const char* name; |
| 247 const char* value; | 254 const char* value; |
| 248 }; | 255 }; |
| 249 | 256 |
| 250 // If the request includes one of these request headers, then avoid caching | 257 // If the request includes one of these request headers, then avoid caching |
| (...skipping 1968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2219 | 2226 |
| 2220 if (response_.headers->response_code() != 200 || truncated_ || | 2227 if (response_.headers->response_code() != 200 || truncated_ || |
| 2221 validator.empty() || validator != external_validation_.values[i]) { | 2228 validator.empty() || validator != external_validation_.values[i]) { |
| 2222 // The externally conditionalized request is not a validation request | 2229 // The externally conditionalized request is not a validation request |
| 2223 // for our existing cache entry. Proceed with caching disabled. | 2230 // for our existing cache entry. Proceed with caching disabled. |
| 2224 UpdateTransactionPattern(PATTERN_NOT_COVERED); | 2231 UpdateTransactionPattern(PATTERN_NOT_COVERED); |
| 2225 DoneWritingToEntry(true); | 2232 DoneWritingToEntry(true); |
| 2226 } | 2233 } |
| 2227 } | 2234 } |
| 2228 | 2235 |
| 2236 // TODO(ricea): This calculation is expensive to perform just to collect | |
| 2237 // statistics. Either remove it or use the result, depending on the result of | |
| 2238 // the experiment. | |
| 2239 ExternallyConditionalizedType type = | |
| 2240 EXTERNALLY_CONDITIONALIZED_CACHE_USABLE; | |
| 2241 if (mode_ == NONE) | |
| 2242 type = EXTERNALLY_CONDITIONALIZED_MISMATCHED_VALIDATORS; | |
| 2243 else if (RequiresValidation()) | |
| 2244 type = EXTERNALLY_CONDITIONALIZED_CACHE_REQUIRES_VALIDATION; | |
| 2245 // TODO(ricea): Add CACHE_USABLE_STALE once stale-while-revalidate CL landed. | |
|
rvargas (doing something else)
2014/09/04 19:33:20
tiny nit: Please add an empty line above this line
Adam Rice
2014/09/05 05:49:29
Done.
| |
| 2246 // TODO(ricea): Either remove this histogram or make it permanent by M40. | |
| 2247 UMA_HISTOGRAM_ENUMERATION("HttpCache.ExternallyConditionalized", | |
| 2248 type, | |
| 2249 EXTERNALLY_CONDITIONALIZED_MAX); | |
| 2250 | |
| 2229 next_state_ = STATE_SEND_REQUEST; | 2251 next_state_ = STATE_SEND_REQUEST; |
| 2230 return OK; | 2252 return OK; |
| 2231 } | 2253 } |
| 2232 | 2254 |
| 2233 int HttpCache::Transaction::RestartNetworkRequest() { | 2255 int HttpCache::Transaction::RestartNetworkRequest() { |
| 2234 DCHECK(mode_ & WRITE || mode_ == NONE); | 2256 DCHECK(mode_ & WRITE || mode_ == NONE); |
| 2235 DCHECK(network_trans_.get()); | 2257 DCHECK(network_trans_.get()); |
| 2236 DCHECK_EQ(STATE_NONE, next_state_); | 2258 DCHECK_EQ(STATE_NONE, next_state_); |
| 2237 | 2259 |
| 2238 next_state_ = STATE_SEND_REQUEST_COMPLETE; | 2260 next_state_ = STATE_SEND_REQUEST_COMPLETE; |
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2869 default: | 2891 default: |
| 2870 NOTREACHED(); | 2892 NOTREACHED(); |
| 2871 } | 2893 } |
| 2872 } | 2894 } |
| 2873 | 2895 |
| 2874 void HttpCache::Transaction::OnIOComplete(int result) { | 2896 void HttpCache::Transaction::OnIOComplete(int result) { |
| 2875 DoLoop(result); | 2897 DoLoop(result); |
| 2876 } | 2898 } |
| 2877 | 2899 |
| 2878 } // namespace net | 2900 } // namespace net |
| OLD | NEW |