| Index: chrome/browser/media_galleries/media_scan_manager_unittest.cc
|
| diff --git a/chrome/browser/media_galleries/media_scan_manager_unittest.cc b/chrome/browser/media_galleries/media_scan_manager_unittest.cc
|
| index 5ab0c4ef241fc0186eedb29279d0bcbf7753b638..8279234f81bfb8c721a6095554122a4eddff6d4f 100644
|
| --- a/chrome/browser/media_galleries/media_scan_manager_unittest.cc
|
| +++ b/chrome/browser/media_galleries/media_scan_manager_unittest.cc
|
| @@ -230,7 +230,7 @@ class MediaScanManagerTest : public MediaScanManagerObserver,
|
| EXPECT_EQ(video_count, pref_info->second.video_count);
|
| }
|
|
|
| - // MediaScanMangerObserver implementation.
|
| + // MediaScanManagerObserver implementation.
|
| virtual void OnScanFinished(
|
| const std::string& extension_id,
|
| int gallery_count,
|
| @@ -242,6 +242,15 @@ class MediaScanManagerTest : public MediaScanManagerObserver,
|
| EXPECT_EQ(expected_file_counts_.video_count, file_counts.video_count);
|
| }
|
|
|
| + protected:
|
| + // So derived tests can access ...::FindContainerScanResults().
|
| + MediaFolderFinder::MediaFolderFinderResults FindContainerScanResults(
|
| + const MediaFolderFinder::MediaFolderFinderResults& found_folders,
|
| + const std::vector<base::FilePath>& sensitive_locations) {
|
| + return MediaScanManager::FindContainerScanResults(found_folders,
|
| + sensitive_locations);
|
| + }
|
| +
|
| private:
|
| void OnFindFoldersStarted(
|
| MediaFolderFinder::MediaFolderFinderResultsCallback callback) {
|
| @@ -306,6 +315,205 @@ TEST_F(MediaScanManagerTest, SingleResult) {
|
| EXPECT_EQ(galleries_before + 1, gallery_count());
|
| }
|
|
|
| +// Generally test that it includes directories with sufficient density
|
| +// and excludes others.
|
| +//
|
| +// A/ - NOT included
|
| +// A/B/ - NOT included
|
| +// A/B/C/files
|
| +// A/D/ - NOT included
|
| +// A/D/E/files
|
| +// A/D/F/files
|
| +// A/D/G/files
|
| +// A/D/H/
|
| +// A/H/ - included in results
|
| +// A/H/I/files
|
| +// A/H/J/files
|
| +TEST_F(MediaScanManagerTest, MergeRedundant) {
|
| + base::FilePath path;
|
| + MediaFolderFinder::MediaFolderFinderResults found_folders;
|
| + std::vector<base::FilePath> sensitive_locations;
|
| + std::vector<base::FilePath> expected_folders;
|
| + MediaGalleryScanResult file_counts;
|
| + file_counts.audio_count = 1;
|
| + file_counts.image_count = 2;
|
| + file_counts.video_count = 3;
|
| + MakeTestFolder("A", &path);
|
| + MakeTestFolder("A/B", &path);
|
| + MakeTestFolder("A/B/C", &path);
|
| + found_folders[path] = file_counts;
|
| + // Not dense enough.
|
| + MakeTestFolder("A/D", &path);
|
| + MakeTestFolder("A/D/E", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/F", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/G", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/H", &path);
|
| + // Dense enough to be reported.
|
| + MakeTestFolder("A/H", &path);
|
| + expected_folders.push_back(path);
|
| + MakeTestFolder("A/H/I", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/H/J", &path);
|
| + found_folders[path] = file_counts;
|
| + MediaFolderFinder::MediaFolderFinderResults results =
|
| + FindContainerScanResults(found_folders, sensitive_locations);
|
| + EXPECT_EQ(expected_folders.size(), results.size());
|
| + for (std::vector<base::FilePath>::const_iterator it =
|
| + expected_folders.begin();
|
| + it != expected_folders.end();
|
| + ++it) {
|
| + EXPECT_TRUE(results.find(*it) != results.end());
|
| + }
|
| +}
|
| +
|
| +// Make sure intermediates are not included.
|
| +//
|
| +// A/ - included in results
|
| +// A/B1/ - NOT included
|
| +// A/B1/B2/files
|
| +// A/C1/ - NOT included
|
| +// A/C1/C2/files
|
| +TEST_F(MediaScanManagerTest, MergeRedundantNoIntermediates) {
|
| + base::FilePath path;
|
| + MediaFolderFinder::MediaFolderFinderResults found_folders;
|
| + std::vector<base::FilePath> sensitive_locations;
|
| + std::vector<base::FilePath> expected_folders;
|
| + MediaGalleryScanResult file_counts;
|
| + file_counts.audio_count = 1;
|
| + file_counts.image_count = 2;
|
| + file_counts.video_count = 3;
|
| + MakeTestFolder("A", &path);
|
| + expected_folders.push_back(path);
|
| + MakeTestFolder("A/B1", &path);
|
| + MakeTestFolder("A/B1/B2", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/C1", &path);
|
| + MakeTestFolder("A/C1/C2", &path);
|
| + found_folders[path] = file_counts;
|
| + // Make "home dir" not dense enough.
|
| + MakeTestFolder("D", &path);
|
| + MediaFolderFinder::MediaFolderFinderResults results =
|
| + FindContainerScanResults(found_folders, sensitive_locations);
|
| + EXPECT_EQ(expected_folders.size(), results.size());
|
| + for (std::vector<base::FilePath>::const_iterator it =
|
| + expected_folders.begin();
|
| + it != expected_folders.end();
|
| + ++it) {
|
| + EXPECT_TRUE(results.find(*it) != results.end());
|
| + }
|
| +}
|
| +
|
| +// Make sure "A/" only gets a count of 1, from "A/D/",
|
| +// not 2 from "A/D/H/" and "A/D/I/".
|
| +//
|
| +// A/ - NOT included
|
| +// A/D/ - included in results
|
| +// A/D/E/files
|
| +// A/D/F/files
|
| +// A/D/G/files
|
| +// A/D/H/files
|
| +// A/D/I/ - NOT included
|
| +// A/D/I/J/files
|
| +TEST_F(MediaScanManagerTest, MergeRedundantVerifyNoOvercount) {
|
| + base::FilePath path;
|
| + MediaFolderFinder::MediaFolderFinderResults found_folders;
|
| + std::vector<base::FilePath> sensitive_locations;
|
| + std::vector<base::FilePath> expected_folders;
|
| + MediaGalleryScanResult file_counts;
|
| + file_counts.audio_count = 1;
|
| + file_counts.image_count = 2;
|
| + file_counts.video_count = 3;
|
| + MakeTestFolder("A", &path);
|
| + MakeTestFolder("A/D", &path);
|
| + expected_folders.push_back(path);
|
| + MakeTestFolder("A/D/E", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/F", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/G", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/H", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/I", &path);
|
| + MakeTestFolder("A/D/I/J", &path);
|
| + found_folders[path] = file_counts;
|
| + MediaFolderFinder::MediaFolderFinderResults results =
|
| + FindContainerScanResults(found_folders, sensitive_locations);
|
| + EXPECT_EQ(expected_folders.size(), results.size());
|
| + for (std::vector<base::FilePath>::const_iterator it =
|
| + expected_folders.begin();
|
| + it != expected_folders.end();
|
| + ++it) {
|
| + EXPECT_TRUE(results.find(*it) != results.end());
|
| + }
|
| +}
|
| +
|
| +// Make sure that sensistive directories are pruned.
|
| +//
|
| +// A/ - NOT included
|
| +// A/B/ - sensitive
|
| +// A/C/ - included in results
|
| +// A/C/G/files
|
| +// A/C/H/files
|
| +// A/D/ - included in results
|
| +// A/D/I/files
|
| +// A/D/J/files
|
| +// A/E/ - included in results
|
| +// A/E/K/files
|
| +// A/E/L/files
|
| +// A/F/ - included in results
|
| +// A/F/M/files
|
| +// A/F/N/files
|
| +TEST_F(MediaScanManagerTest, MergeRedundantWithSensitive) {
|
| + base::FilePath path;
|
| + MediaFolderFinder::MediaFolderFinderResults found_folders;
|
| + std::vector<base::FilePath> sensitive_locations;
|
| + std::vector<base::FilePath> expected_folders;
|
| + MediaGalleryScanResult file_counts;
|
| + file_counts.audio_count = 1;
|
| + file_counts.image_count = 2;
|
| + file_counts.video_count = 3;
|
| + MakeTestFolder("A", &path);
|
| + MakeTestFolder("A/B", &path);
|
| + sensitive_locations.push_back(path);
|
| + MakeTestFolder("A/C", &path);
|
| + expected_folders.push_back(path);
|
| + MakeTestFolder("A/C/G", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/C/H", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D", &path);
|
| + expected_folders.push_back(path);
|
| + MakeTestFolder("A/D/I", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/D/J", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/E", &path);
|
| + expected_folders.push_back(path);
|
| + MakeTestFolder("A/E/K", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/E/L", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/F", &path);
|
| + expected_folders.push_back(path);
|
| + MakeTestFolder("A/F/M", &path);
|
| + found_folders[path] = file_counts;
|
| + MakeTestFolder("A/F/N", &path);
|
| + found_folders[path] = file_counts;
|
| + MediaFolderFinder::MediaFolderFinderResults results =
|
| + FindContainerScanResults(found_folders, sensitive_locations);
|
| + EXPECT_EQ(expected_folders.size(), results.size());
|
| + for (std::vector<base::FilePath>::const_iterator it =
|
| + expected_folders.begin();
|
| + it != expected_folders.end();
|
| + ++it) {
|
| + EXPECT_TRUE(results.find(*it) != results.end());
|
| + }
|
| +}
|
| +
|
| TEST_F(MediaScanManagerTest, Containers) {
|
| MediaGalleryScanResult file_counts;
|
| file_counts.audio_count = 1;
|
| @@ -422,6 +630,8 @@ TEST_F(MediaScanManagerTest, UpdateExistingScanResults) {
|
| MakeTestFolder("gscan/dir1", &path);
|
| found_folders[path] = file_counts;
|
|
|
| + MakeTestFolder("junk", &path);
|
| +
|
| SetFindFoldersResults(true, found_folders);
|
| file_counts.video_count = 7;
|
| SetExpectedScanResults(1 /*gallery_count*/, file_counts);
|
| @@ -462,6 +672,8 @@ TEST_F(MediaScanManagerTest, UpdateExistingCounts) {
|
| MakeTestFolder("scan", &path);
|
| found_folders[path] = file_counts;
|
|
|
| + MakeTestFolder("junk", &path);
|
| +
|
| file_counts.audio_count = 5;
|
| MakeTestFolder("user/dir2", &path);
|
| found_folders[path] = file_counts;
|
|
|