| Index: components/offline_pages/core/archive_manager_unittest.cc
|
| diff --git a/components/offline_pages/core/archive_manager_unittest.cc b/components/offline_pages/core/archive_manager_unittest.cc
|
| index 57f868a872c7792bb402dcac1412f971b9da74a0..7794405312021be11245889db4c1f4df17baef87 100644
|
| --- a/components/offline_pages/core/archive_manager_unittest.cc
|
| +++ b/components/offline_pages/core/archive_manager_unittest.cc
|
| @@ -19,6 +19,8 @@
|
|
|
| namespace offline_pages {
|
|
|
| +using LifetimeType = LifetimePolicy::LifetimeType;
|
| +
|
| namespace {
|
| const base::FilePath::CharType kMissingArchivePath[] =
|
| FILE_PATH_LITERAL("missing_archive.path");
|
| @@ -38,7 +40,8 @@ class ArchiveManagerTest : public testing::Test {
|
| void PumpLoop();
|
| void ResetResults();
|
|
|
| - void ResetManager(const base::FilePath& file_path);
|
| + void ResetManager(const base::FilePath& temp_dir,
|
| + const base::FilePath& persistent_dir);
|
| void Callback(bool result);
|
| void GetAllArchivesCallback(const std::set<base::FilePath>& archive_paths);
|
| void GetStorageStatsCallback(
|
| @@ -46,9 +49,12 @@ class ArchiveManagerTest : public testing::Test {
|
|
|
| ArchiveManager* manager() { return manager_.get(); }
|
| const base::FilePath& temp_path() const { return temp_dir_.GetPath(); }
|
| + const base::FilePath& persistent_path() const {
|
| + return persistent_dir_.GetPath();
|
| + }
|
| CallbackStatus callback_status() const { return callback_status_; }
|
| const std::set<base::FilePath>& last_archive_paths() const {
|
| - return last_archvie_paths_;
|
| + return last_archive_paths_;
|
| }
|
| ArchiveManager::StorageStats last_storage_sizes() const {
|
| return last_storage_sizes_;
|
| @@ -58,10 +64,11 @@ class ArchiveManagerTest : public testing::Test {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
|
| base::ThreadTaskRunnerHandle task_runner_handle_;
|
| base::ScopedTempDir temp_dir_;
|
| + base::ScopedTempDir persistent_dir_;
|
|
|
| std::unique_ptr<ArchiveManager> manager_;
|
| CallbackStatus callback_status_;
|
| - std::set<base::FilePath> last_archvie_paths_;
|
| + std::set<base::FilePath> last_archive_paths_;
|
| ArchiveManager::StorageStats last_storage_sizes_;
|
| };
|
|
|
| @@ -73,7 +80,8 @@ ArchiveManagerTest::ArchiveManagerTest()
|
|
|
| void ArchiveManagerTest::SetUp() {
|
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| - ResetManager(temp_dir_.GetPath());
|
| + ASSERT_TRUE(persistent_dir_.CreateUniqueTempDir());
|
| + ResetManager(temp_dir_.GetPath(), persistent_dir_.GetPath());
|
| }
|
|
|
| void ArchiveManagerTest::PumpLoop() {
|
| @@ -82,12 +90,17 @@ void ArchiveManagerTest::PumpLoop() {
|
|
|
| void ArchiveManagerTest::ResetResults() {
|
| callback_status_ = CallbackStatus::NOT_CALLED;
|
| - last_archvie_paths_.clear();
|
| + last_archive_paths_.clear();
|
| }
|
|
|
| -void ArchiveManagerTest::ResetManager(const base::FilePath& file_path) {
|
| +void ArchiveManagerTest::ResetManager(const base::FilePath& temp_dir,
|
| + const base::FilePath& persistent_dir) {
|
| + ArchiveDirectories archive_dirs;
|
| + archive_dirs.emplace(std::make_pair(LifetimeType::TEMPORARY, temp_dir));
|
| + archive_dirs.emplace(
|
| + std::make_pair(LifetimeType::PERSISTENT, persistent_dir));
|
| manager_.reset(
|
| - new ArchiveManager(file_path, base::ThreadTaskRunnerHandle::Get()));
|
| + new ArchiveManager(archive_dirs, base::ThreadTaskRunnerHandle::Get()));
|
| }
|
|
|
| void ArchiveManagerTest::Callback(bool result) {
|
| @@ -97,7 +110,7 @@ void ArchiveManagerTest::Callback(bool result) {
|
|
|
| void ArchiveManagerTest::GetAllArchivesCallback(
|
| const std::set<base::FilePath>& archive_paths) {
|
| - last_archvie_paths_ = archive_paths;
|
| + last_archive_paths_ = archive_paths;
|
| }
|
|
|
| void ArchiveManagerTest::GetStorageStatsCallback(
|
| @@ -106,17 +119,21 @@ void ArchiveManagerTest::GetStorageStatsCallback(
|
| }
|
|
|
| TEST_F(ArchiveManagerTest, EnsureArchivesDirCreated) {
|
| - base::FilePath archive_dir =
|
| + base::FilePath temp_archive_dir =
|
| temp_path().Append(FILE_PATH_LITERAL("test_path"));
|
| - ResetManager(archive_dir);
|
| - EXPECT_FALSE(base::PathExists(archive_dir));
|
| + base::FilePath persistent_archive_dir =
|
| + persistent_path().Append(FILE_PATH_LITERAL("test_path"));
|
| + ResetManager(temp_archive_dir, persistent_archive_dir);
|
| + EXPECT_FALSE(base::PathExists(temp_archive_dir));
|
| + EXPECT_FALSE(base::PathExists(persistent_archive_dir));
|
|
|
| // Ensure archives dir exists, when it doesn't.
|
| manager()->EnsureArchivesDirCreated(
|
| base::Bind(&ArchiveManagerTest::Callback, base::Unretained(this), true));
|
| PumpLoop();
|
| EXPECT_EQ(CallbackStatus::CALLED_TRUE, callback_status());
|
| - EXPECT_TRUE(base::PathExists(archive_dir));
|
| + EXPECT_TRUE(base::PathExists(temp_archive_dir));
|
| + EXPECT_TRUE(base::PathExists(persistent_archive_dir));
|
|
|
| // Try again when the file already exists.
|
| ResetResults();
|
| @@ -124,7 +141,8 @@ TEST_F(ArchiveManagerTest, EnsureArchivesDirCreated) {
|
| base::Bind(&ArchiveManagerTest::Callback, base::Unretained(this), true));
|
| PumpLoop();
|
| EXPECT_EQ(CallbackStatus::CALLED_TRUE, callback_status());
|
| - EXPECT_TRUE(base::PathExists(archive_dir));
|
| + EXPECT_TRUE(base::PathExists(temp_archive_dir));
|
| + EXPECT_TRUE(base::PathExists(persistent_archive_dir));
|
| }
|
|
|
| TEST_F(ArchiveManagerTest, ExistsArchive) {
|
| @@ -152,8 +170,12 @@ TEST_F(ArchiveManagerTest, DeleteMultipleArchives) {
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_2));
|
| base::FilePath archive_path_3;
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_3));
|
| + base::FilePath archive_path_4;
|
| + EXPECT_TRUE(
|
| + base::CreateTemporaryFileInDir(persistent_path(), &archive_path_4));
|
|
|
| - std::vector<base::FilePath> archive_paths = {archive_path_1, archive_path_2};
|
| + std::vector<base::FilePath> archive_paths = {archive_path_1, archive_path_2,
|
| + archive_path_4};
|
|
|
| manager()->DeleteMultipleArchives(
|
| archive_paths,
|
| @@ -163,6 +185,7 @@ TEST_F(ArchiveManagerTest, DeleteMultipleArchives) {
|
| EXPECT_FALSE(base::PathExists(archive_path_1));
|
| EXPECT_FALSE(base::PathExists(archive_path_2));
|
| EXPECT_TRUE(base::PathExists(archive_path_3));
|
| + EXPECT_FALSE(base::PathExists(archive_path_4));
|
| }
|
|
|
| TEST_F(ArchiveManagerTest, DeleteMultipleArchivesSomeDoNotExist) {
|
| @@ -171,8 +194,12 @@ TEST_F(ArchiveManagerTest, DeleteMultipleArchivesSomeDoNotExist) {
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_2));
|
| base::FilePath archive_path_3;
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_3));
|
| + base::FilePath archive_path_4;
|
| + EXPECT_TRUE(
|
| + base::CreateTemporaryFileInDir(persistent_path(), &archive_path_4));
|
|
|
| - std::vector<base::FilePath> archive_paths = {archive_path_1, archive_path_2};
|
| + std::vector<base::FilePath> archive_paths = {archive_path_1, archive_path_2,
|
| + archive_path_4};
|
|
|
| EXPECT_FALSE(base::PathExists(archive_path_1));
|
|
|
| @@ -184,6 +211,7 @@ TEST_F(ArchiveManagerTest, DeleteMultipleArchivesSomeDoNotExist) {
|
| EXPECT_FALSE(base::PathExists(archive_path_1));
|
| EXPECT_FALSE(base::PathExists(archive_path_2));
|
| EXPECT_TRUE(base::PathExists(archive_path_3));
|
| + EXPECT_FALSE(base::PathExists(archive_path_4));
|
| }
|
|
|
| TEST_F(ArchiveManagerTest, DeleteMultipleArchivesNoneExist) {
|
| @@ -192,8 +220,12 @@ TEST_F(ArchiveManagerTest, DeleteMultipleArchivesNoneExist) {
|
| temp_path().Append(FILE_PATH_LITERAL("other_missing_file.mhtml"));
|
| base::FilePath archive_path_3;
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_3));
|
| + base::FilePath archive_path_4;
|
| + EXPECT_TRUE(
|
| + base::CreateTemporaryFileInDir(persistent_path(), &archive_path_4));
|
|
|
| - std::vector<base::FilePath> archive_paths = {archive_path_1, archive_path_2};
|
| + std::vector<base::FilePath> archive_paths = {archive_path_1, archive_path_2,
|
| + archive_path_4};
|
|
|
| EXPECT_FALSE(base::PathExists(archive_path_1));
|
| EXPECT_FALSE(base::PathExists(archive_path_2));
|
| @@ -206,6 +238,7 @@ TEST_F(ArchiveManagerTest, DeleteMultipleArchivesNoneExist) {
|
| EXPECT_FALSE(base::PathExists(archive_path_1));
|
| EXPECT_FALSE(base::PathExists(archive_path_2));
|
| EXPECT_TRUE(base::PathExists(archive_path_3));
|
| + EXPECT_FALSE(base::PathExists(archive_path_4));
|
| }
|
|
|
| TEST_F(ArchiveManagerTest, DeleteArchive) {
|
| @@ -239,14 +272,17 @@ TEST_F(ArchiveManagerTest, GetAllArchives) {
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_2));
|
| base::FilePath archive_path_3;
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_3));
|
| + base::FilePath archive_path_4;
|
| + EXPECT_TRUE(
|
| + base::CreateTemporaryFileInDir(persistent_path(), &archive_path_4));
|
| std::vector<base::FilePath> expected_paths{archive_path_1, archive_path_2,
|
| - archive_path_3};
|
| + archive_path_3, archive_path_4};
|
| std::sort(expected_paths.begin(), expected_paths.end());
|
|
|
| manager()->GetAllArchives(base::Bind(
|
| &ArchiveManagerTest::GetAllArchivesCallback, base::Unretained(this)));
|
| PumpLoop();
|
| - ASSERT_EQ(3UL, last_archive_paths().size());
|
| + ASSERT_EQ(4UL, last_archive_paths().size());
|
| std::vector<base::FilePath> actual_paths(last_archive_paths().begin(),
|
| last_archive_paths().end());
|
| // Comparing one to one works because last_archive_paths set is sorted.
|
| @@ -255,20 +291,55 @@ TEST_F(ArchiveManagerTest, GetAllArchives) {
|
| EXPECT_EQ(expected_paths[0].BaseName(), actual_paths[0].BaseName());
|
| EXPECT_EQ(expected_paths[1].BaseName(), actual_paths[1].BaseName());
|
| EXPECT_EQ(expected_paths[2].BaseName(), actual_paths[2].BaseName());
|
| + EXPECT_EQ(expected_paths[3].BaseName(), actual_paths[3].BaseName());
|
| }
|
|
|
| TEST_F(ArchiveManagerTest, GetStorageStats) {
|
| base::FilePath archive_path_1;
|
| EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_1));
|
| base::FilePath archive_path_2;
|
| - EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_2));
|
| + EXPECT_TRUE(
|
| + base::CreateTemporaryFileInDir(persistent_path(), &archive_path_2));
|
| +
|
| + std::set<LifetimeType> types(
|
| + {LifetimeType::TEMPORARY, LifetimeType::PERSISTENT});
|
| + manager()->GetStorageStats(
|
| + types, base::Bind(&ArchiveManagerTest::GetStorageStatsCallback,
|
| + base::Unretained(this)));
|
| + PumpLoop();
|
| + EXPECT_GT(last_storage_sizes().free_disk_space, 0);
|
| + EXPECT_EQ(base::ComputeDirectorySize(temp_path()) +
|
| + base::ComputeDirectorySize(persistent_path()),
|
| + last_storage_sizes().total_archives_size);
|
| +}
|
|
|
| - manager()->GetStorageStats(base::Bind(
|
| - &ArchiveManagerTest::GetStorageStatsCallback, base::Unretained(this)));
|
| +TEST_F(ArchiveManagerTest, GetStorageStatsSeparately) {
|
| + base::FilePath archive_path_1;
|
| + EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_path(), &archive_path_1));
|
| + base::FilePath archive_path_2;
|
| + EXPECT_TRUE(
|
| + base::CreateTemporaryFileInDir(persistent_path(), &archive_path_2));
|
| +
|
| + // Test temporary type.
|
| + std::set<LifetimeType> temp_types({LifetimeType::TEMPORARY});
|
| + manager()->GetStorageStats(
|
| + temp_types, base::Bind(&ArchiveManagerTest::GetStorageStatsCallback,
|
| + base::Unretained(this)));
|
| + PumpLoop();
|
| + EXPECT_GT(last_storage_sizes().free_disk_space, 0);
|
| + EXPECT_EQ(base::ComputeDirectorySize(temp_path()),
|
| + last_storage_sizes().total_archives_size);
|
| +
|
| + ResetResults();
|
| + // Test persistent type.
|
| + std::set<LifetimeType> persistent_types({LifetimeType::PERSISTENT});
|
| + manager()->GetStorageStats(
|
| + persistent_types, base::Bind(&ArchiveManagerTest::GetStorageStatsCallback,
|
| + base::Unretained(this)));
|
| PumpLoop();
|
| EXPECT_GT(last_storage_sizes().free_disk_space, 0);
|
| - EXPECT_EQ(last_storage_sizes().total_archives_size,
|
| - base::ComputeDirectorySize(temp_path()));
|
| + EXPECT_EQ(base::ComputeDirectorySize(persistent_path()),
|
| + last_storage_sizes().total_archives_size);
|
| }
|
|
|
| } // namespace offline_pages
|
|
|