| Index: net/disk_cache/backend_unittest.cc
|
| diff --git a/net/disk_cache/backend_unittest.cc b/net/disk_cache/backend_unittest.cc
|
| index 572691c48b719545fb8bb51b4ad35c73124124ac..c3f2cfaf54c87962de6d08489335391214ddceec 100644
|
| --- a/net/disk_cache/backend_unittest.cc
|
| +++ b/net/disk_cache/backend_unittest.cc
|
| @@ -81,7 +81,7 @@
|
|
|
| bool CreateSetOfRandomEntries(std::set<std::string>* key_pool);
|
| bool EnumerateAndMatchKeys(int max_to_open,
|
| - TestIterator* iter,
|
| + void** iter,
|
| std::set<std::string>* keys_to_match,
|
| size_t* count);
|
|
|
| @@ -256,14 +256,12 @@
|
| // OpenNextEntry stops returning net::OK.
|
| bool DiskCacheBackendTest::EnumerateAndMatchKeys(
|
| int max_to_open,
|
| - TestIterator* iter,
|
| + void** iter,
|
| std::set<std::string>* keys_to_match,
|
| size_t* count) {
|
| disk_cache::Entry* entry;
|
|
|
| - if (!iter)
|
| - return false;
|
| - while (iter->OpenNextEntry(&entry) == net::OK) {
|
| + while (OpenNextEntry(iter, &entry) == net::OK) {
|
| if (!entry)
|
| return false;
|
| EXPECT_EQ(1U, keys_to_match->erase(entry->GetKey()));
|
| @@ -1239,11 +1237,11 @@
|
| Time final = Time::Now();
|
|
|
| disk_cache::Entry* entry;
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| int count = 0;
|
| Time last_modified[kNumEntries];
|
| Time last_used[kNumEntries];
|
| - while (iter->OpenNextEntry(&entry) == net::OK) {
|
| + while (OpenNextEntry(&iter, &entry) == net::OK) {
|
| ASSERT_TRUE(NULL != entry);
|
| if (count < kNumEntries) {
|
| last_modified[count] = entry->GetLastModified();
|
| @@ -1257,10 +1255,10 @@
|
| };
|
| EXPECT_EQ(kNumEntries, count);
|
|
|
| - iter = CreateIterator();
|
| + iter = NULL;
|
| count = 0;
|
| // The previous enumeration should not have changed the timestamps.
|
| - while (iter->OpenNextEntry(&entry) == net::OK) {
|
| + while (OpenNextEntry(&iter, &entry) == net::OK) {
|
| ASSERT_TRUE(NULL != entry);
|
| if (count < kNumEntries) {
|
| EXPECT_TRUE(last_modified[count] == entry->GetLastModified());
|
| @@ -1311,8 +1309,8 @@
|
| // Make sure that the timestamp is not the same.
|
| AddDelay();
|
| ASSERT_EQ(net::OK, OpenEntry(second, &entry1));
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry2));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry2));
|
| EXPECT_EQ(entry2->GetKey(), second);
|
|
|
| // Two entries and the iterator pointing at "first".
|
| @@ -1320,15 +1318,15 @@
|
| entry2->Close();
|
|
|
| // The iterator should still be valid, so we should not crash.
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry2));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry2));
|
| EXPECT_EQ(entry2->GetKey(), first);
|
| entry2->Close();
|
| - iter = CreateIterator();
|
| + cache_->EndEnumeration(&iter);
|
|
|
| // Modify the oldest entry and get the newest element.
|
| ASSERT_EQ(net::OK, OpenEntry(first, &entry1));
|
| EXPECT_EQ(0, WriteData(entry1, 0, 200, NULL, 0, false));
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry2));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry2));
|
| if (type_ == net::APP_CACHE) {
|
| // The list is not updated.
|
| EXPECT_EQ(entry2->GetKey(), second);
|
| @@ -1338,6 +1336,7 @@
|
|
|
| entry1->Close();
|
| entry2->Close();
|
| + cache_->EndEnumeration(&iter);
|
| }
|
|
|
| TEST_F(DiskCacheBackendTest, Enumerations2) {
|
| @@ -1392,10 +1391,11 @@
|
| EXPECT_EQ(kSize, ReadData(entry1, 0, 0, buffer1.get(), kSize));
|
| entry1->Close();
|
|
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry2));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry2));
|
| EXPECT_EQ(entry2->GetKey(), second);
|
| entry2->Close();
|
| + cache_->EndEnumeration(&iter);
|
| }
|
|
|
| #if !defined(LEAK_SANITIZER)
|
| @@ -1424,9 +1424,9 @@
|
|
|
| SimulateCrash();
|
|
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| int count = 0;
|
| - while (iter->OpenNextEntry(&entry) == net::OK) {
|
| + while (OpenNextEntry(&iter, &entry) == net::OK) {
|
| ASSERT_TRUE(NULL != entry);
|
| EXPECT_EQ(key2, entry->GetKey());
|
| entry->Close();
|
| @@ -1466,8 +1466,9 @@
|
| EXPECT_EQ(kNumEntries, cache_->GetEntryCount());
|
|
|
| disk_cache::Entry *entry1, *entry2;
|
| - scoped_ptr<TestIterator> iter1 = CreateIterator(), iter2 = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter1->OpenNextEntry(&entry1));
|
| + void* iter1 = NULL;
|
| + void* iter2 = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter1, &entry1));
|
| ASSERT_TRUE(NULL != entry1);
|
| entry1->Close();
|
| entry1 = NULL;
|
| @@ -1476,17 +1477,17 @@
|
| for (int i = 0; i < kNumEntries / 2; i++) {
|
| if (entry1)
|
| entry1->Close();
|
| - ASSERT_EQ(net::OK, iter1->OpenNextEntry(&entry1));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter1, &entry1));
|
| ASSERT_TRUE(NULL != entry1);
|
|
|
| - ASSERT_EQ(net::OK, iter2->OpenNextEntry(&entry2));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter2, &entry2));
|
| ASSERT_TRUE(NULL != entry2);
|
| entry2->Close();
|
| }
|
|
|
| // Messing up with entry1 will modify entry2->next.
|
| entry1->Doom();
|
| - ASSERT_EQ(net::OK, iter2->OpenNextEntry(&entry2));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter2, &entry2));
|
| ASSERT_TRUE(NULL != entry2);
|
|
|
| // The link entry2->entry1 should be broken.
|
| @@ -1495,9 +1496,12 @@
|
| entry2->Close();
|
|
|
| // And the second iterator should keep working.
|
| - ASSERT_EQ(net::OK, iter2->OpenNextEntry(&entry2));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter2, &entry2));
|
| ASSERT_TRUE(NULL != entry2);
|
| entry2->Close();
|
| +
|
| + cache_->EndEnumeration(&iter1);
|
| + cache_->EndEnumeration(&iter2);
|
| }
|
|
|
| TEST_F(DiskCacheBackendTest, FixEnumerators) {
|
| @@ -2023,8 +2027,8 @@
|
| InitCache();
|
|
|
| disk_cache::Entry* entry;
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - while (iter->OpenNextEntry(&entry) == net::OK) {
|
| + void* iter = NULL;
|
| + while (OpenNextEntry(&iter, &entry) == net::OK) {
|
| entry->Close();
|
| }
|
| }
|
| @@ -2168,8 +2172,8 @@
|
| EXPECT_EQ(1, cache_->GetEntryCount());
|
|
|
| // We should delete the cache. The list still has a corrupt node.
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + void* iter = NULL;
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
| FlushQueueForTest();
|
| EXPECT_EQ(0, cache_->GetEntryCount());
|
| }
|
| @@ -2212,10 +2216,10 @@
|
| EXPECT_EQ(1, cache_->GetEntryCount());
|
|
|
| // We should not delete the cache.
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| - entry->Close();
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| + entry->Close();
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
| EXPECT_EQ(1, cache_->GetEntryCount());
|
| }
|
|
|
| @@ -2262,13 +2266,13 @@
|
| } else {
|
| // We should detect the problem through the list, but we should not delete
|
| // the entry, just fail the iteration.
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + void* iter = NULL;
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
|
|
| // Now a full iteration will work, and return one entry.
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| entry->Close();
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
|
|
| // This should detect what's left of the bad entry.
|
| EXPECT_NE(net::OK, OpenEntry(second, &entry));
|
| @@ -2339,13 +2343,13 @@
|
| // Detection order: third -> second -> first.
|
| // We should detect the problem through the list, but we should not delete
|
| // the entry.
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| entry->Close();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| EXPECT_EQ(first, entry->GetKey());
|
| entry->Close();
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
| }
|
| DisableIntegrityCheck();
|
| }
|
| @@ -2406,17 +2410,17 @@
|
| // Detection order: third -> second.
|
| // We should detect the problem through the list, but we should not delete
|
| // the entry, just fail the iteration.
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| entry->Close();
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
|
|
| // Now a full iteration will work, and return two entries.
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| entry->Close();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| entry->Close();
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
| }
|
| DisableIntegrityCheck();
|
| }
|
| @@ -2494,12 +2498,12 @@
|
| // If the LRU is corrupt, we delete the cache.
|
| void DiskCacheBackendTest::BackendInvalidRankings() {
|
| disk_cache::Entry* entry;
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| entry->Close();
|
| EXPECT_EQ(2, cache_->GetEntryCount());
|
|
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry));
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
|
| FlushQueueForTest(); // Allow the restart to finish.
|
| EXPECT_EQ(0, cache_->GetEntryCount());
|
| }
|
| @@ -2539,10 +2543,10 @@
|
| // If the LRU is corrupt and we have open entries, we disable the cache.
|
| void DiskCacheBackendTest::BackendDisable() {
|
| disk_cache::Entry *entry1, *entry2;
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry1));
|
| -
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry2));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1));
|
| +
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry2));
|
| EXPECT_EQ(0, cache_->GetEntryCount());
|
| EXPECT_NE(net::OK, CreateEntry("Something new", &entry2));
|
|
|
| @@ -2590,9 +2594,9 @@
|
| EXPECT_EQ(8, cache_->GetEntryCount());
|
|
|
| disk_cache::Entry* entry;
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| int count = 0;
|
| - while (iter->OpenNextEntry(&entry) == net::OK) {
|
| + while (OpenNextEntry(&iter, &entry) == net::OK) {
|
| ASSERT_TRUE(NULL != entry);
|
| entry->Close();
|
| count++;
|
| @@ -2638,12 +2642,12 @@
|
| // If the index size changes when we disable the cache, we should not crash.
|
| void DiskCacheBackendTest::BackendDisable3() {
|
| disk_cache::Entry *entry1, *entry2;
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| EXPECT_EQ(2, cache_->GetEntryCount());
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry1));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1));
|
| entry1->Close();
|
|
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry2));
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry2));
|
| FlushQueueForTest();
|
|
|
| ASSERT_EQ(net::OK, CreateEntry("Something new", &entry2));
|
| @@ -2672,8 +2676,8 @@
|
| // If we disable the cache, already open entries should work as far as possible.
|
| void DiskCacheBackendTest::BackendDisable4() {
|
| disk_cache::Entry *entry1, *entry2, *entry3, *entry4;
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry1));
|
| + void* iter = NULL;
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1));
|
|
|
| char key2[2000];
|
| char key3[20000];
|
| @@ -2691,7 +2695,7 @@
|
| EXPECT_EQ(kBufSize, WriteData(entry3, 0, 0, buf.get(), kBufSize, false));
|
|
|
| // This line should disable the cache but not delete it.
|
| - EXPECT_NE(net::OK, iter->OpenNextEntry(&entry4));
|
| + EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry4));
|
| EXPECT_EQ(0, cache_->GetEntryCount());
|
|
|
| EXPECT_NE(net::OK, CreateEntry("cache is disabled", &entry4));
|
| @@ -3372,29 +3376,29 @@
|
|
|
| // Check that enumeration returns all entries.
|
| std::set<std::string> keys_to_match(key_pool);
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| size_t count = 0;
|
| - ASSERT_TRUE(EnumerateAndMatchKeys(-1, iter.get(), &keys_to_match, &count));
|
| - iter.reset();
|
| + ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
|
| + cache_->EndEnumeration(&iter);
|
| EXPECT_EQ(key_pool.size(), count);
|
| EXPECT_TRUE(keys_to_match.empty());
|
|
|
| // Check that opening entries does not affect enumeration.
|
| keys_to_match = key_pool;
|
| - iter = CreateIterator();
|
| + iter = NULL;
|
| count = 0;
|
| disk_cache::Entry* entry_opened_before;
|
| ASSERT_EQ(net::OK, OpenEntry(*(key_pool.begin()), &entry_opened_before));
|
| ASSERT_TRUE(EnumerateAndMatchKeys(key_pool.size()/2,
|
| - iter.get(),
|
| + &iter,
|
| &keys_to_match,
|
| &count));
|
|
|
| disk_cache::Entry* entry_opened_middle;
|
| ASSERT_EQ(net::OK,
|
| OpenEntry(*(keys_to_match.begin()), &entry_opened_middle));
|
| - ASSERT_TRUE(EnumerateAndMatchKeys(-1, iter.get(), &keys_to_match, &count));
|
| - iter.reset();
|
| + ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
|
| + cache_->EndEnumeration(&iter);
|
| entry_opened_before->Close();
|
| entry_opened_middle->Close();
|
|
|
| @@ -3412,10 +3416,10 @@
|
|
|
| // Check that enumeration returns all entries but the doomed one.
|
| std::set<std::string> keys_to_match(key_pool);
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| size_t count = 0;
|
| ASSERT_TRUE(EnumerateAndMatchKeys(key_pool.size()/2,
|
| - iter.get(),
|
| + &iter,
|
| &keys_to_match,
|
| &count));
|
|
|
| @@ -3423,8 +3427,8 @@
|
| DoomEntry(key_to_delete);
|
| keys_to_match.erase(key_to_delete);
|
| key_pool.erase(key_to_delete);
|
| - ASSERT_TRUE(EnumerateAndMatchKeys(-1, iter.get(), &keys_to_match, &count));
|
| - iter.reset();
|
| + ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
|
| + cache_->EndEnumeration(&iter);
|
|
|
| EXPECT_EQ(key_pool.size(), count);
|
| EXPECT_TRUE(keys_to_match.empty());
|
| @@ -3460,10 +3464,10 @@
|
|
|
| // Check that enumeration returns all entries but the corrupt one.
|
| std::set<std::string> keys_to_match(key_pool);
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| size_t count = 0;
|
| - ASSERT_TRUE(EnumerateAndMatchKeys(-1, iter.get(), &keys_to_match, &count));
|
| - iter.reset();
|
| + ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
|
| + cache_->EndEnumeration(&iter);
|
|
|
| EXPECT_EQ(key_pool.size(), count);
|
| EXPECT_TRUE(keys_to_match.empty());
|
| @@ -3477,9 +3481,9 @@
|
| std::set<std::string> key_pool;
|
| ASSERT_TRUE(CreateSetOfRandomEntries(&key_pool));
|
|
|
| - scoped_ptr<TestIterator> iter = CreateIterator();
|
| + void* iter = NULL;
|
| disk_cache::Entry* entry = NULL;
|
| - ASSERT_EQ(net::OK, iter->OpenNextEntry(&entry));
|
| + ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
|
| EXPECT_TRUE(entry);
|
| disk_cache::ScopedEntryPtr entry_closer(entry);
|
|
|
|
|