Index: content/browser/cache_storage/cache_storage_manager_unittest.cc |
diff --git a/content/browser/cache_storage/cache_storage_manager_unittest.cc b/content/browser/cache_storage/cache_storage_manager_unittest.cc |
index 04c6a6a87a74600a95a6ab76da358dd66f13dc12..4c3758441db9806fe808e40dace22f623abc1d74 100644 |
--- a/content/browser/cache_storage/cache_storage_manager_unittest.cc |
+++ b/content/browser/cache_storage/cache_storage_manager_unittest.cc |
@@ -655,6 +655,31 @@ TEST_F(CacheStorageManagerTest, MemoryBackedSizePersistent) { |
EXPECT_EQ(0, cache_storage->MemoryBackedSize()); |
} |
+TEST_F(CacheStorageManagerTest, DeleteUnreferencedCacheDirectories) { |
+ // Create a referenced cache. |
+ EXPECT_TRUE(Open(origin1_, "foo")); |
+ EXPECT_TRUE(CachePut(callback_cache_, GURL("http://example.com/foo"))); |
+ |
+ // Create an unreferenced directory next to the referenced one. |
+ base::FilePath origin_path = CacheStorageManager::ConstructOriginPath( |
+ cache_manager_->root_path(), origin1_); |
+ base::FilePath unreferenced_path = origin_path.AppendASCII("bar"); |
+ EXPECT_TRUE(CreateDirectory(unreferenced_path)); |
+ EXPECT_TRUE(base::DirectoryExists(unreferenced_path)); |
+ |
+ // Create a new StorageManager so that the next time the cache is opened |
+ // the unreferenced directory can be deleted. |
+ quota_manager_proxy_->SimulateQuotaManagerDestroyed(); |
+ cache_manager_ = CacheStorageManager::Create(cache_manager_.get()); |
+ |
+ // Verify that the referenced cache still works. |
+ EXPECT_TRUE(Open(origin1_, "foo")); |
+ EXPECT_TRUE(CacheMatch(callback_cache_, GURL("http://example.com/foo"))); |
+ |
+ // Verify that the unreferenced cache is gone. |
+ EXPECT_FALSE(base::DirectoryExists(unreferenced_path)); |
+} |
+ |
class CacheStorageMigrationTest : public CacheStorageManagerTest { |
protected: |
CacheStorageMigrationTest() : cache1_("foo"), cache2_("bar") {} |