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.h" | 5 #include "net/http/http_cache.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 832 | 832 |
| 833 // We do this before calling EntryAvailable to force any further calls to | 833 // We do this before calling EntryAvailable to force any further calls to |
| 834 // AddTransactionToEntry to add their transaction to the pending queue, which | 834 // AddTransactionToEntry to add their transaction to the pending queue, which |
| 835 // ensures FIFO ordering. | 835 // ensures FIFO ordering. |
| 836 if (!entry->writer && !entry->pending_queue.empty()) | 836 if (!entry->writer && !entry->pending_queue.empty()) |
| 837 ProcessPendingQueue(entry); | 837 ProcessPendingQueue(entry); |
| 838 | 838 |
| 839 return OK; | 839 return OK; |
| 840 } | 840 } |
| 841 | 841 |
| 842 void HttpCache::DoneWithEntry(ActiveEntry* entry, Transaction* trans, | |
| 843 bool cancel) { | |
| 844 // If we already posted a task to move on to the next transaction and this was | |
| 845 // the writer, there is nothing to cancel. | |
| 846 if (entry->will_process_pending_queue && entry->readers.empty()) | |
|
rvargas (doing something else)
2015/08/19 23:46:37
I worry about removing this method.
This logic sh
| |
| 847 return; | |
| 848 | |
| 849 if (entry->writer) { | |
| 850 DCHECK(trans == entry->writer); | |
| 851 | |
| 852 // Assume there was a failure. | |
| 853 bool success = false; | |
| 854 if (cancel) { | |
| 855 DCHECK(entry->disk_entry); | |
| 856 // This is a successful operation in the sense that we want to keep the | |
| 857 // entry. | |
| 858 success = trans->AddTruncatedFlag(); | |
| 859 // The previous operation may have deleted the entry. | |
| 860 if (!trans->entry()) | |
| 861 return; | |
| 862 } | |
| 863 DoneWritingToEntry(entry, success); | |
| 864 } else { | |
| 865 DoneReadingFromEntry(entry, trans); | |
| 866 } | |
| 867 } | |
| 868 | |
| 869 void HttpCache::DoneWritingToEntry(ActiveEntry* entry, bool success) { | 842 void HttpCache::DoneWritingToEntry(ActiveEntry* entry, bool success) { |
| 870 DCHECK(entry->readers.empty()); | 843 DCHECK(entry->readers.empty()); |
| 871 | 844 |
| 872 entry->writer = NULL; | 845 entry->writer = NULL; |
| 873 | 846 |
| 874 if (success) { | 847 if (success) { |
| 875 ProcessPendingQueue(entry); | 848 ProcessPendingQueue(entry); |
| 876 } else { | 849 } else { |
| 877 DCHECK(!entry->will_process_pending_queue); | 850 DCHECK(!entry->will_process_pending_queue); |
| 878 | 851 |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1181 building_backend_ = false; | 1154 building_backend_ = false; |
| 1182 DeletePendingOp(pending_op); | 1155 DeletePendingOp(pending_op); |
| 1183 } | 1156 } |
| 1184 | 1157 |
| 1185 // The cache may be gone when we return from the callback. | 1158 // The cache may be gone when we return from the callback. |
| 1186 if (!item->DoCallback(result, disk_cache_.get())) | 1159 if (!item->DoCallback(result, disk_cache_.get())) |
| 1187 item->NotifyTransaction(result, NULL); | 1160 item->NotifyTransaction(result, NULL); |
| 1188 } | 1161 } |
| 1189 | 1162 |
| 1190 } // namespace net | 1163 } // namespace net |
| OLD | NEW |