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/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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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(const std::string& key) | 53 MockDiskEntry::MockDiskEntry(const std::string& key) |
54 : key_(key), doomed_(false), sparse_(false), | 54 : key_(key), |
55 fail_requests_(false), fail_sparse_requests_(false), busy_(false), | 55 doomed_(false), |
| 56 sparse_(false), |
| 57 fail_requests_(false), |
| 58 fail_sparse_requests_(false), |
| 59 busy_(false), |
56 delayed_(false) { | 60 delayed_(false) { |
57 test_mode_ = GetTestModeForEntry(key); | 61 test_mode_ = GetTestModeForEntry(key); |
58 } | 62 } |
59 | 63 |
60 void MockDiskEntry::Doom() { | 64 void MockDiskEntry::Doom() { |
61 doomed_ = true; | 65 doomed_ = true; |
62 } | 66 } |
63 | 67 |
64 void MockDiskEntry::Close() { | 68 void MockDiskEntry::Close() { |
65 Release(); | 69 Release(); |
66 } | 70 } |
67 | 71 |
68 std::string MockDiskEntry::GetKey() const { | 72 std::string MockDiskEntry::GetKey() const { |
69 return key_; | 73 return key_; |
70 } | 74 } |
71 | 75 |
72 base::Time MockDiskEntry::GetLastUsed() const { | 76 base::Time MockDiskEntry::GetLastUsed() const { |
73 return base::Time::FromInternalValue(0); | 77 return base::Time::FromInternalValue(0); |
74 } | 78 } |
75 | 79 |
76 base::Time MockDiskEntry::GetLastModified() const { | 80 base::Time MockDiskEntry::GetLastModified() const { |
77 return base::Time::FromInternalValue(0); | 81 return base::Time::FromInternalValue(0); |
78 } | 82 } |
79 | 83 |
80 int32 MockDiskEntry::GetDataSize(int index) const { | 84 int32 MockDiskEntry::GetDataSize(int index) const { |
81 DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); | 85 DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); |
82 return static_cast<int32>(data_[index].size()); | 86 return static_cast<int32>(data_[index].size()); |
83 } | 87 } |
84 | 88 |
85 int MockDiskEntry::ReadData( | 89 int MockDiskEntry::ReadData(int index, |
86 int index, int offset, net::IOBuffer* buf, int buf_len, | 90 int offset, |
87 const net::CompletionCallback& callback) { | 91 net::IOBuffer* buf, |
| 92 int buf_len, |
| 93 const net::CompletionCallback& callback) { |
88 DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); | 94 DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); |
89 DCHECK(!callback.is_null()); | 95 DCHECK(!callback.is_null()); |
90 | 96 |
91 if (fail_requests_) | 97 if (fail_requests_) |
92 return net::ERR_CACHE_READ_FAILURE; | 98 return net::ERR_CACHE_READ_FAILURE; |
93 | 99 |
94 if (offset < 0 || offset > static_cast<int>(data_[index].size())) | 100 if (offset < 0 || offset > static_cast<int>(data_[index].size())) |
95 return net::ERR_FAILED; | 101 return net::ERR_FAILED; |
96 if (static_cast<size_t>(offset) == data_[index].size()) | 102 if (static_cast<size_t>(offset) == data_[index].size()) |
97 return 0; | 103 return 0; |
98 | 104 |
99 int num = std::min(buf_len, static_cast<int>(data_[index].size()) - offset); | 105 int num = std::min(buf_len, static_cast<int>(data_[index].size()) - offset); |
100 memcpy(buf->data(), &data_[index][offset], num); | 106 memcpy(buf->data(), &data_[index][offset], num); |
101 | 107 |
102 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_READ) | 108 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_READ) |
103 return num; | 109 return num; |
104 | 110 |
105 CallbackLater(callback, num); | 111 CallbackLater(callback, num); |
106 return net::ERR_IO_PENDING; | 112 return net::ERR_IO_PENDING; |
107 } | 113 } |
108 | 114 |
109 int MockDiskEntry::WriteData( | 115 int MockDiskEntry::WriteData(int index, |
110 int index, int offset, net::IOBuffer* buf, int buf_len, | 116 int offset, |
111 const net::CompletionCallback& callback, bool truncate) { | 117 net::IOBuffer* buf, |
| 118 int buf_len, |
| 119 const net::CompletionCallback& callback, |
| 120 bool truncate) { |
112 DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); | 121 DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); |
113 DCHECK(!callback.is_null()); | 122 DCHECK(!callback.is_null()); |
114 DCHECK(truncate); | 123 DCHECK(truncate); |
115 | 124 |
116 if (fail_requests_) { | 125 if (fail_requests_) { |
117 CallbackLater(callback, net::ERR_CACHE_READ_FAILURE); | 126 CallbackLater(callback, net::ERR_CACHE_READ_FAILURE); |
118 return net::ERR_IO_PENDING; | 127 return net::ERR_IO_PENDING; |
119 } | 128 } |
120 | 129 |
121 if (offset < 0 || offset > static_cast<int>(data_[index].size())) | 130 if (offset < 0 || offset > static_cast<int>(data_[index].size())) |
122 return net::ERR_FAILED; | 131 return net::ERR_FAILED; |
123 | 132 |
124 data_[index].resize(offset + buf_len); | 133 data_[index].resize(offset + buf_len); |
125 if (buf_len) | 134 if (buf_len) |
126 memcpy(&data_[index][offset], buf->data(), buf_len); | 135 memcpy(&data_[index][offset], buf->data(), buf_len); |
127 | 136 |
128 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE) | 137 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE) |
129 return buf_len; | 138 return buf_len; |
130 | 139 |
131 CallbackLater(callback, buf_len); | 140 CallbackLater(callback, buf_len); |
132 return net::ERR_IO_PENDING; | 141 return net::ERR_IO_PENDING; |
133 } | 142 } |
134 | 143 |
135 int MockDiskEntry::ReadSparseData(int64 offset, net::IOBuffer* buf, int buf_len, | 144 int MockDiskEntry::ReadSparseData(int64 offset, |
| 145 net::IOBuffer* buf, |
| 146 int buf_len, |
136 const net::CompletionCallback& callback) { | 147 const net::CompletionCallback& callback) { |
137 DCHECK(!callback.is_null()); | 148 DCHECK(!callback.is_null()); |
138 if (fail_sparse_requests_) | 149 if (fail_sparse_requests_) |
139 return net::ERR_NOT_IMPLEMENTED; | 150 return net::ERR_NOT_IMPLEMENTED; |
140 if (!sparse_ || busy_) | 151 if (!sparse_ || busy_) |
141 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; | 152 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; |
142 if (offset < 0) | 153 if (offset < 0) |
143 return net::ERR_FAILED; | 154 return net::ERR_FAILED; |
144 | 155 |
145 if (fail_requests_) | 156 if (fail_requests_) |
146 return net::ERR_CACHE_READ_FAILURE; | 157 return net::ERR_CACHE_READ_FAILURE; |
147 | 158 |
148 DCHECK(offset < kint32max); | 159 DCHECK(offset < kint32max); |
149 int real_offset = static_cast<int>(offset); | 160 int real_offset = static_cast<int>(offset); |
150 if (!buf_len) | 161 if (!buf_len) |
151 return 0; | 162 return 0; |
152 | 163 |
153 int num = std::min(static_cast<int>(data_[1].size()) - real_offset, | 164 int num = std::min(static_cast<int>(data_[1].size()) - real_offset, buf_len); |
154 buf_len); | |
155 memcpy(buf->data(), &data_[1][real_offset], num); | 165 memcpy(buf->data(), &data_[1][real_offset], num); |
156 | 166 |
157 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_READ) | 167 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_READ) |
158 return num; | 168 return num; |
159 | 169 |
160 CallbackLater(callback, num); | 170 CallbackLater(callback, num); |
161 busy_ = true; | 171 busy_ = true; |
162 delayed_ = false; | 172 delayed_ = false; |
163 return net::ERR_IO_PENDING; | 173 return net::ERR_IO_PENDING; |
164 } | 174 } |
165 | 175 |
166 int MockDiskEntry::WriteSparseData(int64 offset, net::IOBuffer* buf, | 176 int MockDiskEntry::WriteSparseData(int64 offset, |
| 177 net::IOBuffer* buf, |
167 int buf_len, | 178 int buf_len, |
168 const net::CompletionCallback& callback) { | 179 const net::CompletionCallback& callback) { |
169 DCHECK(!callback.is_null()); | 180 DCHECK(!callback.is_null()); |
170 if (fail_sparse_requests_) | 181 if (fail_sparse_requests_) |
171 return net::ERR_NOT_IMPLEMENTED; | 182 return net::ERR_NOT_IMPLEMENTED; |
172 if (busy_) | 183 if (busy_) |
173 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; | 184 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; |
174 if (!sparse_) { | 185 if (!sparse_) { |
175 if (data_[1].size()) | 186 if (data_[1].size()) |
176 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; | 187 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; |
(...skipping 14 matching lines...) Expand all Loading... |
191 data_[1].resize(real_offset + buf_len); | 202 data_[1].resize(real_offset + buf_len); |
192 | 203 |
193 memcpy(&data_[1][real_offset], buf->data(), buf_len); | 204 memcpy(&data_[1][real_offset], buf->data(), buf_len); |
194 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE) | 205 if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE) |
195 return buf_len; | 206 return buf_len; |
196 | 207 |
197 CallbackLater(callback, buf_len); | 208 CallbackLater(callback, buf_len); |
198 return net::ERR_IO_PENDING; | 209 return net::ERR_IO_PENDING; |
199 } | 210 } |
200 | 211 |
201 int MockDiskEntry::GetAvailableRange(int64 offset, int len, int64* start, | 212 int MockDiskEntry::GetAvailableRange(int64 offset, |
| 213 int len, |
| 214 int64* start, |
202 const net::CompletionCallback& callback) { | 215 const net::CompletionCallback& callback) { |
203 DCHECK(!callback.is_null()); | 216 DCHECK(!callback.is_null()); |
204 if (!sparse_ || busy_) | 217 if (!sparse_ || busy_) |
205 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; | 218 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; |
206 if (offset < 0) | 219 if (offset < 0) |
207 return net::ERR_FAILED; | 220 return net::ERR_FAILED; |
208 | 221 |
209 if (fail_requests_) | 222 if (fail_requests_) |
210 return net::ERR_CACHE_READ_FAILURE; | 223 return net::ERR_CACHE_READ_FAILURE; |
211 | 224 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 // leveraging the fact that this class is reference counted. | 296 // leveraging the fact that this class is reference counted. |
284 void MockDiskEntry::CallbackLater(const net::CompletionCallback& callback, | 297 void MockDiskEntry::CallbackLater(const net::CompletionCallback& callback, |
285 int result) { | 298 int result) { |
286 if (ignore_callbacks_) | 299 if (ignore_callbacks_) |
287 return StoreAndDeliverCallbacks(true, this, callback, result); | 300 return StoreAndDeliverCallbacks(true, this, callback, result); |
288 base::MessageLoop::current()->PostTask( | 301 base::MessageLoop::current()->PostTask( |
289 FROM_HERE, | 302 FROM_HERE, |
290 base::Bind(&MockDiskEntry::RunCallback, this, callback, result)); | 303 base::Bind(&MockDiskEntry::RunCallback, this, callback, result)); |
291 } | 304 } |
292 | 305 |
293 void MockDiskEntry::RunCallback( | 306 void MockDiskEntry::RunCallback(const net::CompletionCallback& callback, |
294 const net::CompletionCallback& callback, int result) { | 307 int result) { |
295 if (busy_) { | 308 if (busy_) { |
296 // This is kind of hacky, but controlling the behavior of just this entry | 309 // This is kind of hacky, but controlling the behavior of just this entry |
297 // from a test is sort of complicated. What we really want to do is | 310 // from a test is sort of complicated. What we really want to do is |
298 // delay the delivery of a sparse IO operation a little more so that the | 311 // delay the delivery of a sparse IO operation a little more so that the |
299 // request start operation (async) will finish without seeing the end of | 312 // request start operation (async) will finish without seeing the end of |
300 // this operation (already posted to the message loop)... and without | 313 // this operation (already posted to the message loop)... and without |
301 // just delaying for n mS (which may cause trouble with slow bots). So | 314 // just delaying for n mS (which may cause trouble with slow bots). So |
302 // we re-post this operation (all async sparse IO operations will take two | 315 // we re-post this operation (all async sparse IO operations will take two |
303 // trips through the message loop instead of one). | 316 // trips through the message loop instead of one). |
304 if (!delayed_) { | 317 if (!delayed_) { |
305 delayed_ = true; | 318 delayed_ = true; |
306 return CallbackLater(callback, result); | 319 return CallbackLater(callback, result); |
307 } | 320 } |
308 } | 321 } |
309 busy_ = false; | 322 busy_ = false; |
310 callback.Run(result); | 323 callback.Run(result); |
311 } | 324 } |
312 | 325 |
313 // When |store| is true, stores the callback to be delivered later; otherwise | 326 // When |store| is true, stores the callback to be delivered later; otherwise |
314 // delivers any callback previously stored. | 327 // delivers any callback previously stored. |
315 // Static. | 328 // Static. |
316 void MockDiskEntry::StoreAndDeliverCallbacks( | 329 void MockDiskEntry::StoreAndDeliverCallbacks( |
317 bool store, MockDiskEntry* entry, const net::CompletionCallback& callback, | 330 bool store, |
| 331 MockDiskEntry* entry, |
| 332 const net::CompletionCallback& callback, |
318 int result) { | 333 int result) { |
319 static std::vector<CallbackInfo> callback_list; | 334 static std::vector<CallbackInfo> callback_list; |
320 if (store) { | 335 if (store) { |
321 CallbackInfo c = {entry, callback, result}; | 336 CallbackInfo c = {entry, callback, result}; |
322 callback_list.push_back(c); | 337 callback_list.push_back(c); |
323 } else { | 338 } else { |
324 for (size_t i = 0; i < callback_list.size(); i++) { | 339 for (size_t i = 0; i < callback_list.size(); i++) { |
325 CallbackInfo& c = callback_list[i]; | 340 CallbackInfo& c = callback_list[i]; |
326 c.entry->CallbackLater(c.callback, c.result); | 341 c.entry->CallbackLater(c.callback, c.result); |
327 } | 342 } |
328 callback_list.clear(); | 343 callback_list.clear(); |
329 } | 344 } |
330 } | 345 } |
331 | 346 |
332 // Statics. | 347 // Statics. |
333 bool MockDiskEntry::cancel_ = false; | 348 bool MockDiskEntry::cancel_ = false; |
334 bool MockDiskEntry::ignore_callbacks_ = false; | 349 bool MockDiskEntry::ignore_callbacks_ = false; |
335 | 350 |
336 //----------------------------------------------------------------------------- | 351 //----------------------------------------------------------------------------- |
337 | 352 |
338 MockDiskCache::MockDiskCache() | 353 MockDiskCache::MockDiskCache() |
339 : open_count_(0), create_count_(0), fail_requests_(false), | 354 : open_count_(0), |
340 soft_failures_(false), double_create_check_(true), | 355 create_count_(0), |
| 356 fail_requests_(false), |
| 357 soft_failures_(false), |
| 358 double_create_check_(true), |
341 fail_sparse_requests_(false) { | 359 fail_sparse_requests_(false) { |
342 } | 360 } |
343 | 361 |
344 MockDiskCache::~MockDiskCache() { | 362 MockDiskCache::~MockDiskCache() { |
345 ReleaseAll(); | 363 ReleaseAll(); |
346 } | 364 } |
347 | 365 |
348 net::CacheType MockDiskCache::GetCacheType() const { | 366 net::CacheType MockDiskCache::GetCacheType() const { |
349 return net::DISK_CACHE; | 367 return net::DISK_CACHE; |
350 } | 368 } |
351 | 369 |
352 int32 MockDiskCache::GetEntryCount() const { | 370 int32 MockDiskCache::GetEntryCount() const { |
353 return static_cast<int32>(entries_.size()); | 371 return static_cast<int32>(entries_.size()); |
354 } | 372 } |
355 | 373 |
356 int MockDiskCache::OpenEntry(const std::string& key, disk_cache::Entry** entry, | 374 int MockDiskCache::OpenEntry(const std::string& key, |
| 375 disk_cache::Entry** entry, |
357 const net::CompletionCallback& callback) { | 376 const net::CompletionCallback& callback) { |
358 DCHECK(!callback.is_null()); | 377 DCHECK(!callback.is_null()); |
359 if (fail_requests_) | 378 if (fail_requests_) |
360 return net::ERR_CACHE_OPEN_FAILURE; | 379 return net::ERR_CACHE_OPEN_FAILURE; |
361 | 380 |
362 EntryMap::iterator it = entries_.find(key); | 381 EntryMap::iterator it = entries_.find(key); |
363 if (it == entries_.end()) | 382 if (it == entries_.end()) |
364 return net::ERR_CACHE_OPEN_FAILURE; | 383 return net::ERR_CACHE_OPEN_FAILURE; |
365 | 384 |
366 if (it->second->is_doomed()) { | 385 if (it->second->is_doomed()) { |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 const base::Time end_time, | 469 const base::Time end_time, |
451 const net::CompletionCallback& callback) { | 470 const net::CompletionCallback& callback) { |
452 return net::ERR_NOT_IMPLEMENTED; | 471 return net::ERR_NOT_IMPLEMENTED; |
453 } | 472 } |
454 | 473 |
455 int MockDiskCache::DoomEntriesSince(const base::Time initial_time, | 474 int MockDiskCache::DoomEntriesSince(const base::Time initial_time, |
456 const net::CompletionCallback& callback) { | 475 const net::CompletionCallback& callback) { |
457 return net::ERR_NOT_IMPLEMENTED; | 476 return net::ERR_NOT_IMPLEMENTED; |
458 } | 477 } |
459 | 478 |
460 int MockDiskCache::OpenNextEntry(void** iter, disk_cache::Entry** next_entry, | 479 int MockDiskCache::OpenNextEntry(void** iter, |
| 480 disk_cache::Entry** next_entry, |
461 const net::CompletionCallback& callback) { | 481 const net::CompletionCallback& callback) { |
462 return net::ERR_NOT_IMPLEMENTED; | 482 return net::ERR_NOT_IMPLEMENTED; |
463 } | 483 } |
464 | 484 |
465 void MockDiskCache::EndEnumeration(void** iter) { | 485 void MockDiskCache::EndEnumeration(void** iter) { |
466 } | 486 } |
467 | 487 |
468 void MockDiskCache::GetStats( | 488 void MockDiskCache::GetStats( |
469 std::vector<std::pair<std::string, std::string> >* stats) { | 489 std::vector<std::pair<std::string, std::string> >* stats) { |
470 } | 490 } |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 net::HttpResponseInfo* response_info, | 540 net::HttpResponseInfo* response_info, |
521 bool* response_truncated) { | 541 bool* response_truncated) { |
522 int size = disk_entry->GetDataSize(0); | 542 int size = disk_entry->GetDataSize(0); |
523 | 543 |
524 net::TestCompletionCallback cb; | 544 net::TestCompletionCallback cb; |
525 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(size)); | 545 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(size)); |
526 int rv = disk_entry->ReadData(0, 0, buffer.get(), size, cb.callback()); | 546 int rv = disk_entry->ReadData(0, 0, buffer.get(), size, cb.callback()); |
527 rv = cb.GetResult(rv); | 547 rv = cb.GetResult(rv); |
528 EXPECT_EQ(size, rv); | 548 EXPECT_EQ(size, rv); |
529 | 549 |
530 return net::HttpCache::ParseResponseInfo(buffer->data(), size, | 550 return net::HttpCache::ParseResponseInfo( |
531 response_info, | 551 buffer->data(), size, response_info, response_truncated); |
532 response_truncated); | |
533 } | 552 } |
534 | 553 |
535 bool MockHttpCache::WriteResponseInfo( | 554 bool MockHttpCache::WriteResponseInfo( |
536 disk_cache::Entry* disk_entry, const net::HttpResponseInfo* response_info, | 555 disk_cache::Entry* disk_entry, |
537 bool skip_transient_headers, bool response_truncated) { | 556 const net::HttpResponseInfo* response_info, |
| 557 bool skip_transient_headers, |
| 558 bool response_truncated) { |
538 Pickle pickle; | 559 Pickle pickle; |
539 response_info->Persist( | 560 response_info->Persist(&pickle, skip_transient_headers, response_truncated); |
540 &pickle, skip_transient_headers, response_truncated); | |
541 | 561 |
542 net::TestCompletionCallback cb; | 562 net::TestCompletionCallback cb; |
543 scoped_refptr<net::WrappedIOBuffer> data(new net::WrappedIOBuffer( | 563 scoped_refptr<net::WrappedIOBuffer> data( |
544 reinterpret_cast<const char*>(pickle.data()))); | 564 new net::WrappedIOBuffer(reinterpret_cast<const char*>(pickle.data()))); |
545 int len = static_cast<int>(pickle.size()); | 565 int len = static_cast<int>(pickle.size()); |
546 | 566 |
547 int rv = disk_entry->WriteData(0, 0, data.get(), len, cb.callback(), true); | 567 int rv = disk_entry->WriteData(0, 0, data.get(), len, cb.callback(), true); |
548 rv = cb.GetResult(rv); | 568 rv = cb.GetResult(rv); |
549 return (rv == len); | 569 return (rv == len); |
550 } | 570 } |
551 | 571 |
552 bool MockHttpCache::OpenBackendEntry(const std::string& key, | 572 bool MockHttpCache::OpenBackendEntry(const std::string& key, |
553 disk_cache::Entry** entry) { | 573 disk_cache::Entry** entry) { |
554 net::TestCompletionCallback cb; | 574 net::TestCompletionCallback cb; |
(...skipping 26 matching lines...) Expand all Loading... |
581 | 601 |
582 int MockDiskCacheNoCB::CreateEntry(const std::string& key, | 602 int MockDiskCacheNoCB::CreateEntry(const std::string& key, |
583 disk_cache::Entry** entry, | 603 disk_cache::Entry** entry, |
584 const net::CompletionCallback& callback) { | 604 const net::CompletionCallback& callback) { |
585 return net::ERR_IO_PENDING; | 605 return net::ERR_IO_PENDING; |
586 } | 606 } |
587 | 607 |
588 //----------------------------------------------------------------------------- | 608 //----------------------------------------------------------------------------- |
589 | 609 |
590 int MockBackendNoCbFactory::CreateBackend( | 610 int MockBackendNoCbFactory::CreateBackend( |
591 net::NetLog* net_log, scoped_ptr<disk_cache::Backend>* backend, | 611 net::NetLog* net_log, |
| 612 scoped_ptr<disk_cache::Backend>* backend, |
592 const net::CompletionCallback& callback) { | 613 const net::CompletionCallback& callback) { |
593 backend->reset(new MockDiskCacheNoCB()); | 614 backend->reset(new MockDiskCacheNoCB()); |
594 return net::OK; | 615 return net::OK; |
595 } | 616 } |
596 | 617 |
597 //----------------------------------------------------------------------------- | 618 //----------------------------------------------------------------------------- |
598 | 619 |
599 MockBlockingBackendFactory::MockBlockingBackendFactory() | 620 MockBlockingBackendFactory::MockBlockingBackendFactory() |
600 : backend_(NULL), | 621 : backend_(NULL), block_(true), fail_(false) { |
601 block_(true), | |
602 fail_(false) { | |
603 } | 622 } |
604 | 623 |
605 MockBlockingBackendFactory::~MockBlockingBackendFactory() { | 624 MockBlockingBackendFactory::~MockBlockingBackendFactory() { |
606 } | 625 } |
607 | 626 |
608 int MockBlockingBackendFactory::CreateBackend( | 627 int MockBlockingBackendFactory::CreateBackend( |
609 net::NetLog* net_log, scoped_ptr<disk_cache::Backend>* backend, | 628 net::NetLog* net_log, |
| 629 scoped_ptr<disk_cache::Backend>* backend, |
610 const net::CompletionCallback& callback) { | 630 const net::CompletionCallback& callback) { |
611 if (!block_) { | 631 if (!block_) { |
612 if (!fail_) | 632 if (!fail_) |
613 backend->reset(new MockDiskCache()); | 633 backend->reset(new MockDiskCache()); |
614 return Result(); | 634 return Result(); |
615 } | 635 } |
616 | 636 |
617 backend_ = backend; | 637 backend_ = backend; |
618 callback_ = callback; | 638 callback_ = callback; |
619 return net::ERR_IO_PENDING; | 639 return net::ERR_IO_PENDING; |
620 } | 640 } |
621 | 641 |
622 void MockBlockingBackendFactory::FinishCreation() { | 642 void MockBlockingBackendFactory::FinishCreation() { |
623 block_ = false; | 643 block_ = false; |
624 if (!callback_.is_null()) { | 644 if (!callback_.is_null()) { |
625 if (!fail_) | 645 if (!fail_) |
626 backend_->reset(new MockDiskCache()); | 646 backend_->reset(new MockDiskCache()); |
627 net::CompletionCallback cb = callback_; | 647 net::CompletionCallback cb = callback_; |
628 callback_.Reset(); | 648 callback_.Reset(); |
629 cb.Run(Result()); // This object can be deleted here. | 649 cb.Run(Result()); // This object can be deleted here. |
630 } | 650 } |
631 } | 651 } |
OLD | NEW |