OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "webkit/browser/appcache/mock_appcache_storage.h" | 5 #include "webkit/browser/appcache/mock_appcache_storage.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 const GURL& entry_url, int64 cache_id) { | 132 const GURL& entry_url, int64 cache_id) { |
133 AppCache* cache = working_set_.GetCache(cache_id); | 133 AppCache* cache = working_set_.GetCache(cache_id); |
134 if (cache) { | 134 if (cache) { |
135 AppCacheEntry* entry = cache->GetEntry(entry_url); | 135 AppCacheEntry* entry = cache->GetEntry(entry_url); |
136 DCHECK(entry); | 136 DCHECK(entry); |
137 if (entry) | 137 if (entry) |
138 entry->add_types(AppCacheEntry::FOREIGN); | 138 entry->add_types(AppCacheEntry::FOREIGN); |
139 } | 139 } |
140 } | 140 } |
141 | 141 |
142 void MockAppCacheStorage::MakeGroupObsolete( | 142 void MockAppCacheStorage::MakeGroupObsolete(AppCacheGroup* group, |
143 AppCacheGroup* group, Delegate* delegate) { | 143 Delegate* delegate, |
| 144 int response_code) { |
144 DCHECK(group && delegate); | 145 DCHECK(group && delegate); |
145 | 146 |
146 // Always make this method look async. | 147 // Always make this method look async. |
147 ScheduleTask( | 148 ScheduleTask( |
148 base::Bind(&MockAppCacheStorage::ProcessMakeGroupObsolete, | 149 base::Bind(&MockAppCacheStorage::ProcessMakeGroupObsolete, |
149 weak_factory_.GetWeakPtr(), make_scoped_refptr(group), | 150 weak_factory_.GetWeakPtr(), |
150 make_scoped_refptr(GetOrCreateDelegateReference(delegate)))); | 151 make_scoped_refptr(group), |
| 152 make_scoped_refptr(GetOrCreateDelegateReference(delegate)), |
| 153 response_code)); |
151 } | 154 } |
152 | 155 |
153 AppCacheResponseReader* MockAppCacheStorage::CreateResponseReader( | 156 AppCacheResponseReader* MockAppCacheStorage::CreateResponseReader( |
154 const GURL& manifest_url, int64 group_id, int64 response_id) { | 157 const GURL& manifest_url, int64 group_id, int64 response_id) { |
155 if (simulated_reader_) | 158 if (simulated_reader_) |
156 return simulated_reader_.release(); | 159 return simulated_reader_.release(); |
157 return new AppCacheResponseReader(response_id, group_id, disk_cache()); | 160 return new AppCacheResponseReader(response_id, group_id, disk_cache()); |
158 } | 161 } |
159 | 162 |
160 AppCacheResponseWriter* MockAppCacheStorage::CreateResponseWriter( | 163 AppCacheResponseWriter* MockAppCacheStorage::CreateResponseWriter( |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 return; | 411 return; |
409 } | 412 } |
410 | 413 |
411 // Didn't find anything. | 414 // Didn't find anything. |
412 delegate_ref->delegate->OnMainResponseFound( | 415 delegate_ref->delegate->OnMainResponseFound( |
413 url, AppCacheEntry(), GURL(), AppCacheEntry(), kNoCacheId, 0, GURL()); | 416 url, AppCacheEntry(), GURL(), AppCacheEntry(), kNoCacheId, 0, GURL()); |
414 } | 417 } |
415 | 418 |
416 void MockAppCacheStorage::ProcessMakeGroupObsolete( | 419 void MockAppCacheStorage::ProcessMakeGroupObsolete( |
417 scoped_refptr<AppCacheGroup> group, | 420 scoped_refptr<AppCacheGroup> group, |
418 scoped_refptr<DelegateReference> delegate_ref) { | 421 scoped_refptr<DelegateReference> delegate_ref, |
| 422 int response_code) { |
419 if (simulate_make_group_obsolete_failure_) { | 423 if (simulate_make_group_obsolete_failure_) { |
420 if (delegate_ref->delegate) | 424 if (delegate_ref->delegate) |
421 delegate_ref->delegate->OnGroupMadeObsolete(group.get(), false); | 425 delegate_ref->delegate->OnGroupMadeObsolete( |
| 426 group.get(), false, response_code); |
422 return; | 427 return; |
423 } | 428 } |
424 | 429 |
425 RemoveStoredGroup(group.get()); | 430 RemoveStoredGroup(group.get()); |
426 if (group->newest_complete_cache()) | 431 if (group->newest_complete_cache()) |
427 RemoveStoredCache(group->newest_complete_cache()); | 432 RemoveStoredCache(group->newest_complete_cache()); |
428 | 433 |
429 // Copy the collection prior to removal, on final release | 434 // Copy the collection prior to removal, on final release |
430 // of a cache the group's collection will change. | 435 // of a cache the group's collection will change. |
431 AppCacheGroup::Caches copy = group->old_caches(); | 436 AppCacheGroup::Caches copy = group->old_caches(); |
432 RemoveStoredCaches(copy); | 437 RemoveStoredCaches(copy); |
433 | 438 |
434 group->set_obsolete(true); | 439 group->set_obsolete(true); |
435 | 440 |
436 // Also remove from the working set, caches for an 'obsolete' group | 441 // Also remove from the working set, caches for an 'obsolete' group |
437 // may linger in use, but the group itself cannot be looked up by | 442 // may linger in use, but the group itself cannot be looked up by |
438 // 'manifest_url' in the working set any longer. | 443 // 'manifest_url' in the working set any longer. |
439 working_set()->RemoveGroup(group.get()); | 444 working_set()->RemoveGroup(group.get()); |
440 | 445 |
441 if (delegate_ref->delegate) | 446 if (delegate_ref->delegate) |
442 delegate_ref->delegate->OnGroupMadeObsolete(group.get(), true); | 447 delegate_ref->delegate->OnGroupMadeObsolete( |
| 448 group.get(), true, response_code); |
443 } | 449 } |
444 | 450 |
445 void MockAppCacheStorage::ScheduleTask(const base::Closure& task) { | 451 void MockAppCacheStorage::ScheduleTask(const base::Closure& task) { |
446 pending_tasks_.push_back(task); | 452 pending_tasks_.push_back(task); |
447 base::MessageLoop::current()->PostTask( | 453 base::MessageLoop::current()->PostTask( |
448 FROM_HERE, | 454 FROM_HERE, |
449 base::Bind(&MockAppCacheStorage::RunOnePendingTask, | 455 base::Bind(&MockAppCacheStorage::RunOnePendingTask, |
450 weak_factory_.GetWeakPtr())); | 456 weak_factory_.GetWeakPtr())); |
451 } | 457 } |
452 | 458 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 bool MockAppCacheStorage::ShouldCacheLoadAppearAsync(const AppCache* cache) { | 534 bool MockAppCacheStorage::ShouldCacheLoadAppearAsync(const AppCache* cache) { |
529 if (!cache) | 535 if (!cache) |
530 return true; | 536 return true; |
531 | 537 |
532 // If the 'stored' ref is the only ref, real storage will have to load from | 538 // If the 'stored' ref is the only ref, real storage will have to load from |
533 // the database. | 539 // the database. |
534 return IsCacheStored(cache) && cache->HasOneRef(); | 540 return IsCacheStored(cache) && cache->HasOneRef(); |
535 } | 541 } |
536 | 542 |
537 } // namespace appcache | 543 } // namespace appcache |
OLD | NEW |