Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(860)

Side by Side Diff: net/http/mock_http_cache.cc

Issue 22926031: Sparse IO: Allow failover to network in debug builds (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: trying another upload, hopefully it will override the previous "old chunk mismatch" Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/http/mock_http_cache.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/mock_http_cache.h" 5 #include "net/http/mock_http_cache.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "net/base/completion_callback.h" 9 #include "net/base/completion_callback.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 } // namespace 43 } // namespace
44 44
45 //----------------------------------------------------------------------------- 45 //-----------------------------------------------------------------------------
46 46
47 struct MockDiskEntry::CallbackInfo { 47 struct MockDiskEntry::CallbackInfo {
48 scoped_refptr<MockDiskEntry> entry; 48 scoped_refptr<MockDiskEntry> entry;
49 net::CompletionCallback callback; 49 net::CompletionCallback callback;
50 int result; 50 int result;
51 }; 51 };
52 52
53 MockDiskEntry::MockDiskEntry()
54 : test_mode_(0), doomed_(false), sparse_(false),
55 fail_requests_(false), busy_(false), delayed_(false) {
56 }
57
58 MockDiskEntry::MockDiskEntry(const std::string& key) 53 MockDiskEntry::MockDiskEntry(const std::string& key)
59 : key_(key), doomed_(false), sparse_(false), 54 : key_(key), doomed_(false), sparse_(false),
60 fail_requests_(false), busy_(false), delayed_(false) { 55 fail_requests_(false), fail_sparse_requests_(false), busy_(false),
56 delayed_(false) {
61 test_mode_ = GetTestModeForEntry(key); 57 test_mode_ = GetTestModeForEntry(key);
62 } 58 }
63 59
64 void MockDiskEntry::Doom() { 60 void MockDiskEntry::Doom() {
65 doomed_ = true; 61 doomed_ = true;
66 } 62 }
67 63
68 void MockDiskEntry::Close() { 64 void MockDiskEntry::Close() {
69 Release(); 65 Release();
70 } 66 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE) 128 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE)
133 return buf_len; 129 return buf_len;
134 130
135 CallbackLater(callback, buf_len); 131 CallbackLater(callback, buf_len);
136 return net::ERR_IO_PENDING; 132 return net::ERR_IO_PENDING;
137 } 133 }
138 134
139 int MockDiskEntry::ReadSparseData(int64 offset, net::IOBuffer* buf, int buf_len, 135 int MockDiskEntry::ReadSparseData(int64 offset, net::IOBuffer* buf, int buf_len,
140 const net::CompletionCallback& callback) { 136 const net::CompletionCallback& callback) {
141 DCHECK(!callback.is_null()); 137 DCHECK(!callback.is_null());
138 if (fail_sparse_requests_)
139 return net::ERR_NOT_IMPLEMENTED;
142 if (!sparse_ || busy_) 140 if (!sparse_ || busy_)
143 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; 141 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED;
144 if (offset < 0) 142 if (offset < 0)
145 return net::ERR_FAILED; 143 return net::ERR_FAILED;
146 144
147 if (fail_requests_) 145 if (fail_requests_)
148 return net::ERR_CACHE_READ_FAILURE; 146 return net::ERR_CACHE_READ_FAILURE;
149 147
150 DCHECK(offset < kint32max); 148 DCHECK(offset < kint32max);
151 int real_offset = static_cast<int>(offset); 149 int real_offset = static_cast<int>(offset);
(...skipping 10 matching lines...) Expand all
162 CallbackLater(callback, num); 160 CallbackLater(callback, num);
163 busy_ = true; 161 busy_ = true;
164 delayed_ = false; 162 delayed_ = false;
165 return net::ERR_IO_PENDING; 163 return net::ERR_IO_PENDING;
166 } 164 }
167 165
168 int MockDiskEntry::WriteSparseData(int64 offset, net::IOBuffer* buf, 166 int MockDiskEntry::WriteSparseData(int64 offset, net::IOBuffer* buf,
169 int buf_len, 167 int buf_len,
170 const net::CompletionCallback& callback) { 168 const net::CompletionCallback& callback) {
171 DCHECK(!callback.is_null()); 169 DCHECK(!callback.is_null());
170 if (fail_sparse_requests_)
171 return net::ERR_NOT_IMPLEMENTED;
172 if (busy_) 172 if (busy_)
173 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; 173 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED;
174 if (!sparse_) { 174 if (!sparse_) {
175 if (data_[1].size()) 175 if (data_[1].size())
176 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; 176 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED;
177 sparse_ = true; 177 sparse_ = true;
178 } 178 }
179 if (offset < 0) 179 if (offset < 0)
180 return net::ERR_FAILED; 180 return net::ERR_FAILED;
181 if (!buf_len) 181 if (!buf_len)
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 } 230 }
231 } 231 }
232 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE) 232 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE)
233 return count; 233 return count;
234 234
235 CallbackLater(callback, count); 235 CallbackLater(callback, count);
236 return net::ERR_IO_PENDING; 236 return net::ERR_IO_PENDING;
237 } 237 }
238 238
239 bool MockDiskEntry::CouldBeSparse() const { 239 bool MockDiskEntry::CouldBeSparse() const {
240 if (fail_sparse_requests_)
241 return false;
240 return sparse_; 242 return sparse_;
241 } 243 }
242 244
243 void MockDiskEntry::CancelSparseIO() { 245 void MockDiskEntry::CancelSparseIO() {
244 cancel_ = true; 246 cancel_ = true;
245 } 247 }
246 248
247 int MockDiskEntry::ReadyForSparseIO(const net::CompletionCallback& callback) { 249 int MockDiskEntry::ReadyForSparseIO(const net::CompletionCallback& callback) {
250 if (fail_sparse_requests_)
251 return net::ERR_NOT_IMPLEMENTED;
248 if (!cancel_) 252 if (!cancel_)
249 return net::OK; 253 return net::OK;
250 254
251 cancel_ = false; 255 cancel_ = false;
252 DCHECK(!callback.is_null()); 256 DCHECK(!callback.is_null());
253 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_READ) 257 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_READ)
254 return net::OK; 258 return net::OK;
255 259
256 // The pending operation is already in the message loop (and hopefully 260 // The pending operation is already in the message loop (and hopefully
257 // already in the second pass). Just notify the caller that it finished. 261 // already in the second pass). Just notify the caller that it finished.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 } 330 }
327 331
328 // Statics. 332 // Statics.
329 bool MockDiskEntry::cancel_ = false; 333 bool MockDiskEntry::cancel_ = false;
330 bool MockDiskEntry::ignore_callbacks_ = false; 334 bool MockDiskEntry::ignore_callbacks_ = false;
331 335
332 //----------------------------------------------------------------------------- 336 //-----------------------------------------------------------------------------
333 337
334 MockDiskCache::MockDiskCache() 338 MockDiskCache::MockDiskCache()
335 : open_count_(0), create_count_(0), fail_requests_(false), 339 : open_count_(0), create_count_(0), fail_requests_(false),
336 soft_failures_(false), double_create_check_(true) { 340 soft_failures_(false), double_create_check_(true),
341 fail_sparse_requests_(false) {
337 } 342 }
338 343
339 MockDiskCache::~MockDiskCache() { 344 MockDiskCache::~MockDiskCache() {
340 ReleaseAll(); 345 ReleaseAll();
341 } 346 }
342 347
343 net::CacheType MockDiskCache::GetCacheType() const { 348 net::CacheType MockDiskCache::GetCacheType() const {
344 return net::DISK_CACHE; 349 return net::DISK_CACHE;
345 } 350 }
346 351
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 409
405 new_entry->AddRef(); 410 new_entry->AddRef();
406 entries_[key] = new_entry; 411 entries_[key] = new_entry;
407 412
408 new_entry->AddRef(); 413 new_entry->AddRef();
409 *entry = new_entry; 414 *entry = new_entry;
410 415
411 if (soft_failures_) 416 if (soft_failures_)
412 new_entry->set_fail_requests(); 417 new_entry->set_fail_requests();
413 418
419 if (fail_sparse_requests_)
420 new_entry->set_fail_sparse_requests();
421
414 if (GetTestModeForEntry(key) & TEST_MODE_SYNC_CACHE_START) 422 if (GetTestModeForEntry(key) & TEST_MODE_SYNC_CACHE_START)
415 return net::OK; 423 return net::OK;
416 424
417 CallbackLater(callback, net::OK); 425 CallbackLater(callback, net::OK);
418 return net::ERR_IO_PENDING; 426 return net::ERR_IO_PENDING;
419 } 427 }
420 428
421 int MockDiskCache::DoomEntry(const std::string& key, 429 int MockDiskCache::DoomEntry(const std::string& key,
422 const net::CompletionCallback& callback) { 430 const net::CompletionCallback& callback) {
423 DCHECK(!callback.is_null()); 431 DCHECK(!callback.is_null());
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 void MockBlockingBackendFactory::FinishCreation() { 618 void MockBlockingBackendFactory::FinishCreation() {
611 block_ = false; 619 block_ = false;
612 if (!callback_.is_null()) { 620 if (!callback_.is_null()) {
613 if (!fail_) 621 if (!fail_)
614 backend_->reset(new MockDiskCache()); 622 backend_->reset(new MockDiskCache());
615 net::CompletionCallback cb = callback_; 623 net::CompletionCallback cb = callback_;
616 callback_.Reset(); 624 callback_.Reset();
617 cb.Run(Result()); // This object can be deleted here. 625 cb.Run(Result()); // This object can be deleted here.
618 } 626 }
619 } 627 }
OLDNEW
« no previous file with comments | « net/http/mock_http_cache.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698