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 1190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 // sending a range. We have to delete the old entry. | 1201 // sending a range. We have to delete the old entry. |
1202 UpdateTransactionPattern(PATTERN_NOT_COVERED); | 1202 UpdateTransactionPattern(PATTERN_NOT_COVERED); |
1203 DoneWritingToEntry(false); | 1203 DoneWritingToEntry(false); |
1204 } | 1204 } |
1205 | 1205 |
1206 if (mode_ == WRITE && | 1206 if (mode_ == WRITE && |
1207 transaction_pattern_ != PATTERN_ENTRY_CANT_CONDITIONALIZE) { | 1207 transaction_pattern_ != PATTERN_ENTRY_CANT_CONDITIONALIZE) { |
1208 UpdateTransactionPattern(PATTERN_ENTRY_NOT_CACHED); | 1208 UpdateTransactionPattern(PATTERN_ENTRY_NOT_CACHED); |
1209 } | 1209 } |
1210 | 1210 |
| 1211 // Invalidate any cached GET with a successful PUT or DELETE. |
1211 if (mode_ == WRITE && | 1212 if (mode_ == WRITE && |
1212 (request_->method == "PUT" || request_->method == "DELETE")) { | 1213 (request_->method == "PUT" || request_->method == "DELETE")) { |
1213 if (NonErrorResponse(new_response->headers->response_code())) { | 1214 if (NonErrorResponse(new_response->headers->response_code())) { |
1214 int ret = cache_->DoomEntry(cache_key_, NULL); | 1215 int ret = cache_->DoomEntry(cache_key_, NULL); |
1215 DCHECK_EQ(OK, ret); | 1216 DCHECK_EQ(OK, ret); |
1216 } | 1217 } |
1217 cache_->DoneWritingToEntry(entry_, true); | 1218 cache_->DoneWritingToEntry(entry_, true); |
1218 entry_ = NULL; | 1219 entry_ = NULL; |
1219 mode_ = NONE; | 1220 mode_ = NONE; |
1220 } | 1221 } |
1221 | 1222 |
1222 if (request_->method == "POST" && | 1223 // Invalidate any cached GET with a successful POST. |
| 1224 if (!(effective_load_flags_ & LOAD_DISABLE_CACHE) && |
| 1225 request_->method == "POST" && |
1223 NonErrorResponse(new_response->headers->response_code())) { | 1226 NonErrorResponse(new_response->headers->response_code())) { |
1224 cache_->DoomMainEntryForUrl(request_->url); | 1227 cache_->DoomMainEntryForUrl(request_->url); |
1225 } | 1228 } |
1226 | 1229 |
1227 RecordVaryHeaderHistogram(new_response); | 1230 RecordVaryHeaderHistogram(new_response); |
1228 RecordNoStoreHeaderHistogram(request_->load_flags, new_response); | 1231 RecordNoStoreHeaderHistogram(request_->load_flags, new_response); |
1229 | 1232 |
1230 if (new_response_->headers->response_code() == 416 && | 1233 if (new_response_->headers->response_code() == 416 && |
1231 (request_->method == "GET" || request_->method == "POST")) { | 1234 (request_->method == "GET" || request_->method == "POST")) { |
1232 // If there is an active entry it may be destroyed with this transaction. | 1235 // If there is an active entry it may be destroyed with this transaction. |
(...skipping 1713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2946 | 2949 |
2947 void HttpCache::Transaction::OnIOComplete(int result) { | 2950 void HttpCache::Transaction::OnIOComplete(int result) { |
2948 // TODO(vadimt): Remove ScopedProfile below once crbug.com/422516 is fixed. | 2951 // TODO(vadimt): Remove ScopedProfile below once crbug.com/422516 is fixed. |
2949 tracked_objects::ScopedProfile tracking_profile( | 2952 tracked_objects::ScopedProfile tracking_profile( |
2950 FROM_HERE_WITH_EXPLICIT_FUNCTION("422516 Transaction::OnIOComplete")); | 2953 FROM_HERE_WITH_EXPLICIT_FUNCTION("422516 Transaction::OnIOComplete")); |
2951 | 2954 |
2952 DoLoop(result); | 2955 DoLoop(result); |
2953 } | 2956 } |
2954 | 2957 |
2955 } // namespace net | 2958 } // namespace net |
OLD | NEW |