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

Side by Side Diff: content/browser/appcache/appcache_storage_impl_unittest.cc

Issue 2940023002: TaskScheduler: migrate appcache database over to use it. (Closed)
Patch Set: many more tests Created 3 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/appcache/appcache_storage_impl.h" 5 #include "content/browser/appcache/appcache_storage_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <stack> 10 #include <stack>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/bind_helpers.h" 14 #include "base/bind_helpers.h"
15 #include "base/callback.h" 15 #include "base/callback.h"
16 #include "base/files/file_util.h" 16 #include "base/files/file_util.h"
17 #include "base/files/scoped_temp_dir.h" 17 #include "base/files/scoped_temp_dir.h"
18 #include "base/location.h" 18 #include "base/location.h"
19 #include "base/macros.h" 19 #include "base/macros.h"
20 #include "base/memory/ptr_util.h" 20 #include "base/memory/ptr_util.h"
21 #include "base/message_loop/message_loop.h" 21 #include "base/message_loop/message_loop.h"
22 #include "base/single_thread_task_runner.h" 22 #include "base/single_thread_task_runner.h"
23 #include "base/synchronization/waitable_event.h" 23 #include "base/synchronization/waitable_event.h"
24 #include "base/test/scoped_task_environment.h"
24 #include "base/threading/thread.h" 25 #include "base/threading/thread.h"
25 #include "base/threading/thread_task_runner_handle.h" 26 #include "base/threading/thread_task_runner_handle.h"
26 #include "content/browser/appcache/appcache.h" 27 #include "content/browser/appcache/appcache.h"
27 #include "content/browser/appcache/appcache_backend_impl.h" 28 #include "content/browser/appcache/appcache_backend_impl.h"
28 #include "content/browser/appcache/appcache_database.h" 29 #include "content/browser/appcache/appcache_database.h"
29 #include "content/browser/appcache/appcache_entry.h" 30 #include "content/browser/appcache/appcache_entry.h"
30 #include "content/browser/appcache/appcache_group.h" 31 #include "content/browser/appcache/appcache_group.h"
31 #include "content/browser/appcache/appcache_host.h" 32 #include "content/browser/appcache/appcache_host.h"
32 #include "content/browser/appcache/appcache_interceptor.h" 33 #include "content/browser/appcache/appcache_interceptor.h"
33 #include "content/browser/appcache/appcache_request_handler.h" 34 #include "content/browser/appcache/appcache_request_handler.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 void CleanUp() override { 181 void CleanUp() override {
181 request_context_.reset(); 182 request_context_.reset();
182 job_factory_.reset(); 183 job_factory_.reset();
183 } 184 }
184 185
185 private: 186 private:
186 std::unique_ptr<net::URLRequestJobFactory> job_factory_; 187 std::unique_ptr<net::URLRequestJobFactory> job_factory_;
187 std::unique_ptr<net::URLRequestContext> request_context_; 188 std::unique_ptr<net::URLRequestContext> request_context_;
188 }; 189 };
189 190
191 std::unique_ptr<base::test::ScopedTaskEnvironment> scoped_task_environment;
190 std::unique_ptr<IOThread> io_thread; 192 std::unique_ptr<IOThread> io_thread;
191 std::unique_ptr<base::Thread> db_thread; 193 std::unique_ptr<base::Thread> background_thread;
192 194
193 } // namespace 195 } // namespace
194 196
195 class AppCacheStorageImplTest : public testing::Test { 197 class AppCacheStorageImplTest : public testing::Test {
196 public: 198 public:
197 class MockStorageDelegate : public AppCacheStorage::Delegate { 199 class MockStorageDelegate : public AppCacheStorage::Delegate {
198 public: 200 public:
199 explicit MockStorageDelegate(AppCacheStorageImplTest* test) 201 explicit MockStorageDelegate(AppCacheStorageImplTest* test)
200 : loaded_cache_id_(0), stored_group_success_(false), 202 : loaded_cache_id_(0), stored_group_success_(false),
201 would_exceed_quota_(false), obsoleted_success_(false), 203 would_exceed_quota_(false), obsoleted_success_(false),
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 GURL found_manifest_url_; 273 GURL found_manifest_url_;
272 AppCacheStorageImplTest* test_; 274 AppCacheStorageImplTest* test_;
273 }; 275 };
274 276
275 class MockQuotaManager : public storage::QuotaManager { 277 class MockQuotaManager : public storage::QuotaManager {
276 public: 278 public:
277 MockQuotaManager() 279 MockQuotaManager()
278 : QuotaManager(true /* is_incognito */, 280 : QuotaManager(true /* is_incognito */,
279 base::FilePath(), 281 base::FilePath(),
280 io_thread->task_runner().get(), 282 io_thread->task_runner().get(),
281 db_thread->task_runner().get(), 283 background_thread->task_runner().get(),
282 nullptr, 284 nullptr,
283 storage::GetQuotaSettingsFunc()), 285 storage::GetQuotaSettingsFunc()),
284 async_(false) {} 286 async_(false) {}
285 287
286 void GetUsageAndQuota(const GURL& origin, 288 void GetUsageAndQuota(const GURL& origin,
287 storage::StorageType type, 289 storage::StorageType type,
288 const UsageAndQuotaCallback& callback) override { 290 const UsageAndQuotaCallback& callback) override {
289 EXPECT_EQ(storage::kStorageTypeTemporary, type); 291 EXPECT_EQ(storage::kStorageTypeTemporary, type);
290 if (async_) { 292 if (async_) {
291 base::ThreadTaskRunnerHandle::Get()->PostTask( 293 base::ThreadTaskRunnerHandle::Get()->PostTask(
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 (this->*method)(); 367 (this->*method)();
366 } 368 }
367 369
368 // Helper callback to run a test on our io_thread. The io_thread is spun up 370 // Helper callback to run a test on our io_thread. The io_thread is spun up
369 // once and reused for all tests. 371 // once and reused for all tests.
370 template <class Method> 372 template <class Method>
371 void MethodWrapper(Method method) { 373 void MethodWrapper(Method method) {
372 SetUpTest(); 374 SetUpTest();
373 375
374 // Ensure InitTask execution prior to conducting a test. 376 // Ensure InitTask execution prior to conducting a test.
375 FlushDbThreadTasks(); 377 FlushAllTasks();
376 378
377 // We also have to wait for InitTask completion call to be performed 379 // We also have to wait for InitTask completion call to be performed
378 // on the IO thread prior to running the test. Its guaranteed to be 380 // on the IO thread prior to running the test. Its guaranteed to be
379 // queued by this time. 381 // queued by this time.
380 base::ThreadTaskRunnerHandle::Get()->PostTask( 382 base::ThreadTaskRunnerHandle::Get()->PostTask(
gab 2017/06/20 21:29:54 This could perhaps use SequencedTaskRunnerHandle::
michaeln 2017/07/11 00:33:54 Done throughout the file
381 FROM_HERE, base::Bind(&AppCacheStorageImplTest::RunMethod<Method>, 383 FROM_HERE, base::Bind(&AppCacheStorageImplTest::RunMethod<Method>,
382 base::Unretained(this), method)); 384 base::Unretained(this), method));
383 } 385 }
384 386
385 static void SetUpTestCase() { 387 static void SetUpTestCase() {
388 scoped_task_environment.reset(new base::test::ScopedTaskEnvironment());
389
386 // We start both threads as TYPE_IO because we also use the db_thead 390 // We start both threads as TYPE_IO because we also use the db_thead
387 // for the disk_cache which needs to be of TYPE_IO. 391 // for the disk_cache which needs to be of TYPE_IO.
388 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0); 392 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
389 io_thread.reset(new IOThread("AppCacheTest.IOThread")); 393 io_thread.reset(new IOThread("AppCacheTest.IOThread"));
390 ASSERT_TRUE(io_thread->StartWithOptions(options)); 394 ASSERT_TRUE(io_thread->StartWithOptions(options));
391 db_thread.reset(new base::Thread("AppCacheTest::DBThread")); 395 background_thread.reset(new base::Thread("AppCacheTest::BackgroundThread"));
392 ASSERT_TRUE(db_thread->StartWithOptions(options)); 396 ASSERT_TRUE(background_thread->StartWithOptions(options));
393 } 397 }
394 398
395 static void TearDownTestCase() { 399 static void TearDownTestCase() {
396 io_thread.reset(NULL); 400 io_thread.reset();
397 db_thread.reset(NULL); 401 background_thread.reset();
402 scoped_task_environment.reset();
398 } 403 }
399 404
400 // Test harness -------------------------------------------------- 405 // Test harness --------------------------------------------------
401 406
402 AppCacheStorageImplTest() { request_delegate_.set_quit_on_complete(false); } 407 AppCacheStorageImplTest() { request_delegate_.set_quit_on_complete(false); }
403 408
404 template <class Method> 409 template <class Method>
405 void RunTestOnIOThread(Method method) { 410 void RunTestOnIOThread(Method method) {
406 test_finished_event_.reset(new base::WaitableEvent( 411 test_finished_event_.reset(new base::WaitableEvent(
407 base::WaitableEvent::ResetPolicy::AUTOMATIC, 412 base::WaitableEvent::ResetPolicy::AUTOMATIC,
408 base::WaitableEvent::InitialState::NOT_SIGNALED)); 413 base::WaitableEvent::InitialState::NOT_SIGNALED));
409 io_thread->task_runner()->PostTask( 414 io_thread->task_runner()->PostTask(
410 FROM_HERE, base::Bind(&AppCacheStorageImplTest::MethodWrapper<Method>, 415 FROM_HERE, base::Bind(&AppCacheStorageImplTest::MethodWrapper<Method>,
411 base::Unretained(this), method)); 416 base::Unretained(this), method));
412 test_finished_event_->Wait(); 417 test_finished_event_->Wait();
413 } 418 }
414 419
415 void SetUpTest() { 420 void SetUpTest() {
416 DCHECK(io_thread->task_runner()->BelongsToCurrentThread()); 421 DCHECK(io_thread->task_runner()->BelongsToCurrentThread());
417 service_.reset(new AppCacheServiceImpl(NULL)); 422 service_.reset(new AppCacheServiceImpl(nullptr));
418 service_->Initialize(base::FilePath(), db_thread->task_runner(), NULL); 423 service_->Initialize(base::FilePath(), background_thread->task_runner());
419 mock_quota_manager_proxy_ = new MockQuotaManagerProxy(); 424 mock_quota_manager_proxy_ = new MockQuotaManagerProxy();
420 service_->quota_manager_proxy_ = mock_quota_manager_proxy_; 425 service_->quota_manager_proxy_ = mock_quota_manager_proxy_;
421 delegate_.reset(new MockStorageDelegate(this)); 426 delegate_.reset(new MockStorageDelegate(this));
422 } 427 }
423 428
424 void TearDownTest() { 429 void TearDownTest() {
425 DCHECK(io_thread->task_runner()->BelongsToCurrentThread()); 430 DCHECK(io_thread->task_runner()->BelongsToCurrentThread());
431 scoped_refptr<base::SequencedTaskRunner> db_runner =
432 storage()->db_task_runner_;
426 storage()->CancelDelegateCallbacks(delegate()); 433 storage()->CancelDelegateCallbacks(delegate());
427 group_ = NULL; 434 group_ = NULL;
428 cache_ = NULL; 435 cache_ = NULL;
429 cache2_ = NULL; 436 cache2_ = NULL;
430 mock_quota_manager_proxy_ = NULL; 437 mock_quota_manager_proxy_ = NULL;
431 delegate_.reset(); 438 delegate_.reset();
432 service_.reset(); 439 service_.reset();
433 FlushDbThreadTasks(); 440 FlushTasks(db_runner.get());
441 FlushTasks(background_thread->task_runner().get());
442 FlushTasks(db_runner.get());
434 } 443 }
435 444
436 void TestFinished() { 445 void TestFinished() {
437 // We unwind the stack prior to finishing up to let stack 446 // We unwind the stack prior to finishing up to let stack
438 // based objects get deleted. 447 // based objects get deleted.
439 DCHECK(io_thread->task_runner()->BelongsToCurrentThread()); 448 DCHECK(io_thread->task_runner()->BelongsToCurrentThread());
440 base::ThreadTaskRunnerHandle::Get()->PostTask( 449 base::ThreadTaskRunnerHandle::Get()->PostTask(
441 FROM_HERE, base::Bind(&AppCacheStorageImplTest::TestFinishedUnwound, 450 FROM_HERE, base::Bind(&AppCacheStorageImplTest::TestFinishedUnwound,
442 base::Unretained(this))); 451 base::Unretained(this)));
443 } 452 }
(...skipping 13 matching lines...) Expand all
457 return; 466 return;
458 } 467 }
459 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task_stack_.top()); 468 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task_stack_.top());
460 task_stack_.pop(); 469 task_stack_.pop();
461 } 470 }
462 471
463 static void SignalEvent(base::WaitableEvent* event) { 472 static void SignalEvent(base::WaitableEvent* event) {
464 event->Signal(); 473 event->Signal();
465 } 474 }
466 475
467 void FlushDbThreadTasks() { 476 void FlushAllTasks() {
477 FlushTasks(storage()->db_task_runner_.get());
478 FlushTasks(background_thread->task_runner().get());
479 FlushTasks(storage()->db_task_runner_.get());
480 }
481
482 void FlushTasks(base::SequencedTaskRunner* runner) {
468 // We pump a task thru the db thread to ensure any tasks previously 483 // We pump a task thru the db thread to ensure any tasks previously
469 // scheduled on that thread have been performed prior to return. 484 // scheduled on that thread have been performed prior to return.
470 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, 485 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
471 base::WaitableEvent::InitialState::NOT_SIGNALED); 486 base::WaitableEvent::InitialState::NOT_SIGNALED);
472 db_thread->task_runner()->PostTask( 487 runner->PostTask(FROM_HERE,
473 FROM_HERE, base::Bind(&AppCacheStorageImplTest::SignalEvent, &event)); 488 base::Bind(&AppCacheStorageImplTest::SignalEvent, &event));
474 event.Wait(); 489 event.Wait();
475 } 490 }
476 491
477 // LoadCache_Miss ---------------------------------------------------- 492 // LoadCache_Miss ----------------------------------------------------
478 493
479 void LoadCache_Miss() { 494 void LoadCache_Miss() {
480 // Attempt to load a cache that doesn't exist. Should 495 // Attempt to load a cache that doesn't exist. Should
481 // complete asynchronously. 496 // complete asynchronously.
482 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_LoadCache_Miss, 497 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_LoadCache_Miss,
483 base::Unretained(this))); 498 base::Unretained(this)));
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 907
893 // Conduct the test. 908 // Conduct the test.
894 storage()->MarkEntryAsForeign(kEntryUrl, 1); 909 storage()->MarkEntryAsForeign(kEntryUrl, 1);
895 910
896 // The entry in the working set should have been updated syncly. 911 // The entry in the working set should have been updated syncly.
897 EXPECT_TRUE(cache_->GetEntry(kEntryUrl)->IsForeign()); 912 EXPECT_TRUE(cache_->GetEntry(kEntryUrl)->IsForeign());
898 EXPECT_TRUE(cache_->GetEntry(kEntryUrl)->IsExplicit()); 913 EXPECT_TRUE(cache_->GetEntry(kEntryUrl)->IsExplicit());
899 914
900 // And the entry in storage should also be updated, but that 915 // And the entry in storage should also be updated, but that
901 // happens asynchronously on the db thread. 916 // happens asynchronously on the db thread.
902 FlushDbThreadTasks(); 917 FlushAllTasks();
903 AppCacheDatabase::EntryRecord entry_record2; 918 AppCacheDatabase::EntryRecord entry_record2;
904 EXPECT_TRUE(database()->FindEntry(1, kEntryUrl, &entry_record2)); 919 EXPECT_TRUE(database()->FindEntry(1, kEntryUrl, &entry_record2));
905 EXPECT_EQ(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, 920 EXPECT_EQ(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN,
906 entry_record2.flags); 921 entry_record2.flags);
907 TestFinished(); 922 TestFinished();
908 } 923 }
909 924
910 // MarkEntryAsForeignWithLoadInProgress ------------------------------- 925 // MarkEntryAsForeignWithLoadInProgress -------------------------------
911 926
912 void MarkEntryAsForeignWithLoadInProgress() { 927 void MarkEntryAsForeignWithLoadInProgress() {
(...skipping 24 matching lines...) Expand all
937 952
938 void Verify_MarkEntryAsForeignWithLoadInProgress() { 953 void Verify_MarkEntryAsForeignWithLoadInProgress() {
939 EXPECT_EQ(1, delegate()->loaded_cache_id_); 954 EXPECT_EQ(1, delegate()->loaded_cache_id_);
940 EXPECT_TRUE(delegate()->loaded_cache_.get()); 955 EXPECT_TRUE(delegate()->loaded_cache_.get());
941 956
942 // The entry in the working set should have been updated upon load. 957 // The entry in the working set should have been updated upon load.
943 EXPECT_TRUE(delegate()->loaded_cache_->GetEntry(kEntryUrl)->IsForeign()); 958 EXPECT_TRUE(delegate()->loaded_cache_->GetEntry(kEntryUrl)->IsForeign());
944 EXPECT_TRUE(delegate()->loaded_cache_->GetEntry(kEntryUrl)->IsExplicit()); 959 EXPECT_TRUE(delegate()->loaded_cache_->GetEntry(kEntryUrl)->IsExplicit());
945 960
946 // And the entry in storage should also be updated. 961 // And the entry in storage should also be updated.
947 FlushDbThreadTasks(); 962 FlushAllTasks();
948 AppCacheDatabase::EntryRecord entry_record; 963 AppCacheDatabase::EntryRecord entry_record;
949 EXPECT_TRUE(database()->FindEntry(1, kEntryUrl, &entry_record)); 964 EXPECT_TRUE(database()->FindEntry(1, kEntryUrl, &entry_record));
950 EXPECT_EQ(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, 965 EXPECT_EQ(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN,
951 entry_record.flags); 966 entry_record.flags);
952 TestFinished(); 967 TestFinished();
953 } 968 }
954 969
955 // FindNoMainResponse ------------------------------- 970 // FindNoMainResponse -------------------------------
956 971
957 void FindNoMainResponse() { 972 void FindNoMainResponse() {
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after
1717 entry_record.url = manifest_url; 1732 entry_record.url = manifest_url;
1718 entry_record.flags = AppCacheEntry::MANIFEST; 1733 entry_record.flags = AppCacheEntry::MANIFEST;
1719 entry_record.response_id = 1; 1734 entry_record.response_id = 1;
1720 entry_record.response_size = kDefaultEntrySize; 1735 entry_record.response_size = kDefaultEntrySize;
1721 EXPECT_TRUE(db.InsertEntry(&entry_record)); 1736 EXPECT_TRUE(db.InsertEntry(&entry_record));
1722 } 1737 }
1723 1738
1724 // Recreate the service to point at the db and corruption on disk. 1739 // Recreate the service to point at the db and corruption on disk.
1725 service_.reset(new AppCacheServiceImpl(NULL)); 1740 service_.reset(new AppCacheServiceImpl(NULL));
1726 service_->set_request_context(io_thread->request_context()); 1741 service_->set_request_context(io_thread->request_context());
1727 service_->Initialize(temp_directory_.GetPath(), db_thread->task_runner(), 1742 service_->Initialize(temp_directory_.GetPath(),
1728 db_thread->task_runner()); 1743 background_thread->task_runner());
1729 mock_quota_manager_proxy_ = new MockQuotaManagerProxy(); 1744 mock_quota_manager_proxy_ = new MockQuotaManagerProxy();
1730 service_->quota_manager_proxy_ = mock_quota_manager_proxy_; 1745 service_->quota_manager_proxy_ = mock_quota_manager_proxy_;
1731 delegate_.reset(new MockStorageDelegate(this)); 1746 delegate_.reset(new MockStorageDelegate(this));
1732 1747
1733 // Additional setup to observe reinitailize happens. 1748 // Additional setup to observe reinitailize happens.
1734 observer_.reset(new MockServiceObserver(this)); 1749 observer_.reset(new MockServiceObserver(this));
1735 service_->AddObserver(observer_.get()); 1750 service_->AddObserver(observer_.get());
1736 1751
1737 // We continue after the init task is complete including the callback 1752 // We continue after the init task is complete including the callback
1738 // on the current thread. 1753 // on the current thread.
1739 FlushDbThreadTasks(); 1754 FlushAllTasks();
1740 base::ThreadTaskRunnerHandle::Get()->PostTask( 1755 base::ThreadTaskRunnerHandle::Get()->PostTask(
1741 FROM_HERE, base::Bind(&AppCacheStorageImplTest::Continue_Reinitialize, 1756 FROM_HERE, base::Bind(&AppCacheStorageImplTest::Continue_Reinitialize,
1742 base::Unretained(this), test_case)); 1757 base::Unretained(this), test_case));
1743 } 1758 }
1744 1759
1745 void Continue_Reinitialize(ReinitTestCase test_case) { 1760 void Continue_Reinitialize(ReinitTestCase test_case) {
1746 const int kMockProcessId = 1; 1761 const int kMockProcessId = 1;
1747 backend_.reset(new AppCacheBackendImpl); 1762 backend_.reset(new AppCacheBackendImpl);
1748 backend_->Initialize(service_.get(), &frontend_, kMockProcessId); 1763 backend_->Initialize(service_.get(), &frontend_, kMockProcessId);
1749 1764
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1807 if (test_case == CORRUPT_CACHE_ON_INSTALL || 1822 if (test_case == CORRUPT_CACHE_ON_INSTALL ||
1808 test_case == CORRUPT_SQL_ON_INSTALL) { 1823 test_case == CORRUPT_SQL_ON_INSTALL) {
1809 EXPECT_TRUE(frontend_.error_event_was_raised_); 1824 EXPECT_TRUE(frontend_.error_event_was_raised_);
1810 AppCacheHost* host1 = backend_->GetHost(1); 1825 AppCacheHost* host1 = backend_->GetHost(1);
1811 EXPECT_FALSE(host1->associated_cache()); 1826 EXPECT_FALSE(host1->associated_cache());
1812 EXPECT_FALSE(host1->group_being_updated_.get()); 1827 EXPECT_FALSE(host1->group_being_updated_.get());
1813 EXPECT_TRUE(host1->disabled_storage_reference_.get()); 1828 EXPECT_TRUE(host1->disabled_storage_reference_.get());
1814 } else { 1829 } else {
1815 ASSERT_EQ(CORRUPT_CACHE_ON_LOAD_EXISTING, test_case); 1830 ASSERT_EQ(CORRUPT_CACHE_ON_LOAD_EXISTING, test_case);
1816 AppCacheHost* host2 = backend_->GetHost(2); 1831 AppCacheHost* host2 = backend_->GetHost(2);
1817 EXPECT_EQ(1, host2->main_resource_cache_->cache_id());
1818 EXPECT_TRUE(host2->disabled_storage_reference_.get()); 1832 EXPECT_TRUE(host2->disabled_storage_reference_.get());
1819 } 1833 }
1820 1834
1821 // Cleanup and claim victory. 1835 // Cleanup and claim victory.
1822 service_->RemoveObserver(observer_.get()); 1836 service_->RemoveObserver(observer_.get());
1823 request_.reset(); 1837 request_.reset();
1824 backend_.reset(); 1838 backend_.reset();
1825 observer_.reset(); 1839 observer_.reset();
1826 TestFinished(); 1840 TestFinished();
1827 } 1841 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
2029 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize2); 2043 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize2);
2030 } 2044 }
2031 2045
2032 TEST_F(AppCacheStorageImplTest, Reinitialize3) { 2046 TEST_F(AppCacheStorageImplTest, Reinitialize3) {
2033 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize3); 2047 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize3);
2034 } 2048 }
2035 2049
2036 // That's all folks! 2050 // That's all folks!
2037 2051
2038 } // namespace content 2052 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698