Index: chrome/browser/media_galleries/media_scan_manager_unittest.cc |
=================================================================== |
--- chrome/browser/media_galleries/media_scan_manager_unittest.cc (revision 253526) |
+++ chrome/browser/media_galleries/media_scan_manager_unittest.cc (working copy) |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/base_paths.h" |
#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/file_util.h" |
@@ -9,6 +10,7 @@ |
#include "base/files/scoped_temp_dir.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/run_loop.h" |
+#include "base/test/scoped_path_override.h" |
#include "chrome/browser/extensions/test_extension_system.h" |
#include "chrome/browser/media_galleries/media_folder_finder.h" |
#include "chrome/browser/media_galleries/media_galleries_preferences.h" |
@@ -143,26 +145,23 @@ |
} |
// Create a test folder in the test specific scoped temp dir and return the |
- // final path. |
- base::FilePath MakeTestFolder(const std::string& root_relative_path) { |
- DCHECK(test_results_dir_.IsValid()); |
- base::FilePath path = |
+ // final path in |full_path|. |
+ void MakeTestFolder(const std::string& root_relative_path, |
+ base::FilePath* full_path) { |
+ ASSERT_TRUE(test_results_dir_.IsValid()); |
+ *full_path = |
test_results_dir_.path().AppendASCII(root_relative_path); |
- if (!base::CreateDirectory(path)) { |
- return base::FilePath(); |
- } |
- return path; |
+ ASSERT_TRUE(base::CreateDirectory(*full_path)); |
} |
// Create the specified path, and add it to preferences as a gallery. |
- MediaGalleryPrefId AddGallery(const std::string& path, |
+ MediaGalleryPrefId AddGallery(const std::string& rel_path, |
MediaGalleryPrefInfo::Type type, |
int audio_count, |
int image_count, |
int video_count) { |
- base::FilePath full_path = MakeTestFolder(path); |
- if (full_path.empty()) |
- return kInvalidMediaGalleryPrefId; |
+ base::FilePath full_path; |
+ MakeTestFolder(rel_path, &full_path); |
MediaGalleryPrefInfo gallery_info; |
gallery_prefs_->LookUpGalleryByPath(full_path, &gallery_info); |
return gallery_prefs_->AddGallery(gallery_info.device_id, |
@@ -198,6 +197,14 @@ |
return gallery_prefs_; |
} |
+ const MediaGalleriesPrefInfoMap& known_galleries() const { |
+ return gallery_prefs_->known_galleries(); |
+ } |
+ |
+ size_t gallery_count() const { |
+ return known_galleries().size(); |
+ } |
+ |
extensions::Extension* extension() { |
return extension_.get(); |
} |
@@ -212,12 +219,12 @@ |
void CheckFileCounts(MediaGalleryPrefId pref_id, int audio_count, |
int image_count, int video_count) { |
- if (!ContainsKey(gallery_prefs_->known_galleries(), pref_id)) { |
+ if (!ContainsKey(known_galleries(), pref_id)) { |
EXPECT_TRUE(false); |
return; |
} |
MediaGalleriesPrefInfoMap::const_iterator pref_info = |
- gallery_prefs_->known_galleries().find(pref_id); |
+ known_galleries().find(pref_id); |
EXPECT_EQ(audio_count, pref_info->second.audio_count); |
EXPECT_EQ(image_count, pref_info->second.image_count); |
EXPECT_EQ(video_count, pref_info->second.video_count); |
@@ -279,12 +286,13 @@ |
}; |
TEST_F(MediaScanManagerTest, SingleResult) { |
- size_t galleries_before = gallery_prefs()->known_galleries().size(); |
+ size_t galleries_before = gallery_count(); |
MediaGalleryScanResult file_counts; |
file_counts.audio_count = 1; |
file_counts.image_count = 2; |
file_counts.video_count = 3; |
- base::FilePath path = MakeTestFolder("found_media_folder"); |
+ base::FilePath path; |
+ MakeTestFolder("found_media_folder", &path); |
MediaFolderFinder::MediaFolderFinderResults found_folders; |
found_folders[path] = file_counts; |
@@ -295,7 +303,7 @@ |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, FindFolderDestroyCount()); |
- EXPECT_EQ(galleries_before + 1, gallery_prefs()->known_galleries().size()); |
+ EXPECT_EQ(galleries_before + 1, gallery_count()); |
} |
TEST_F(MediaScanManagerTest, Containers) { |
@@ -305,45 +313,45 @@ |
std::set<base::FilePath> expected_galleries; |
std::set<base::FilePath> bad_galleries; |
MediaFolderFinder::MediaFolderFinderResults found_folders; |
- size_t galleries_before = gallery_prefs()->known_galleries().size(); |
+ size_t galleries_before = gallery_count(); |
// Should manifest as a gallery in result1. |
- path = MakeTestFolder("dir1/result1"); |
+ MakeTestFolder("dir1/result1", &path); |
expected_galleries.insert(path); |
found_folders[path] = file_counts; |
// Should manifest as a gallery in dir2. |
- path = MakeTestFolder("dir2/result2"); |
+ MakeTestFolder("dir2/result2", &path); |
bad_galleries.insert(path); |
found_folders[path] = file_counts; |
- path = MakeTestFolder("dir2/result3"); |
+ MakeTestFolder("dir2/result3", &path); |
bad_galleries.insert(path); |
found_folders[path] = file_counts; |
expected_galleries.insert(path.DirName()); |
// Should manifest as a two galleries: result4 and result5. |
- path = MakeTestFolder("dir3/other"); |
+ MakeTestFolder("dir3/other", &path); |
bad_galleries.insert(path); |
- path = MakeTestFolder("dir3/result4"); |
+ MakeTestFolder("dir3/result4", &path); |
expected_galleries.insert(path); |
found_folders[path] = file_counts; |
- path = MakeTestFolder("dir3/result5"); |
+ MakeTestFolder("dir3/result5", &path); |
expected_galleries.insert(path); |
found_folders[path] = file_counts; |
// Should manifest as a gallery in dir4. |
- path = MakeTestFolder("dir4/other"); |
+ MakeTestFolder("dir4/other", &path); |
bad_galleries.insert(path); |
- path = MakeTestFolder("dir4/result6"); |
+ MakeTestFolder("dir4/result6", &path); |
bad_galleries.insert(path); |
found_folders[path] = file_counts; |
- path = MakeTestFolder("dir4/result7"); |
+ MakeTestFolder("dir4/result7", &path); |
bad_galleries.insert(path); |
found_folders[path] = file_counts; |
- path = MakeTestFolder("dir4/result8"); |
+ MakeTestFolder("dir4/result8", &path); |
bad_galleries.insert(path); |
found_folders[path] = file_counts; |
- path = MakeTestFolder("dir4/result9"); |
+ MakeTestFolder("dir4/result9", &path); |
bad_galleries.insert(path); |
found_folders[path] = file_counts; |
expected_galleries.insert(path.DirName()); |
@@ -356,12 +364,11 @@ |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, FindFolderDestroyCount()); |
- EXPECT_EQ(galleries_before + 5, gallery_prefs()->known_galleries().size()); |
+ EXPECT_EQ(galleries_before + 5, gallery_count()); |
std::set<base::FilePath> found_galleries; |
- for (MediaGalleriesPrefInfoMap::const_iterator it = |
- gallery_prefs()->known_galleries().begin(); |
- it != gallery_prefs()->known_galleries().end(); |
+ for (MediaGalleriesPrefInfoMap::const_iterator it = known_galleries().begin(); |
+ it != known_galleries().end(); |
++it) { |
found_galleries.insert(it->second.AbsolutePath()); |
DCHECK(!ContainsKey(bad_galleries, it->second.AbsolutePath())); |
@@ -374,7 +381,7 @@ |
} |
TEST_F(MediaScanManagerTest, UpdateExistingScanResults) { |
- size_t galleries_before = gallery_prefs()->known_galleries().size(); |
+ size_t galleries_before = gallery_count(); |
MediaGalleryPrefId ungranted_scan = |
AddGallery("uscan", MediaGalleryPrefInfo::kScanResult, 1, 0, 0); |
@@ -382,7 +389,7 @@ |
AddGallery("gscan", MediaGalleryPrefInfo::kScanResult, 0, 2, 0); |
gallery_prefs()->SetGalleryPermissionForExtension(*extension(), granted_scan, |
true); |
- EXPECT_EQ(galleries_before + 2, gallery_prefs()->known_galleries().size()); |
+ EXPECT_EQ(galleries_before + 2, gallery_count()); |
// Run once with no scan results. "uscan" should go away and "gscan" should |
// have its scan counts updated. |
@@ -395,7 +402,7 @@ |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, FindFolderDestroyCount()); |
- EXPECT_EQ(galleries_before + 1, gallery_prefs()->known_galleries().size()); |
+ EXPECT_EQ(galleries_before + 1, gallery_count()); |
CheckFileCounts(granted_scan, 0, 0, 0); |
MediaGalleryPrefId id = |
@@ -407,11 +414,12 @@ |
file_counts.audio_count = 0; |
file_counts.image_count = 0; |
file_counts.video_count = 7; |
- base::FilePath path = MakeTestFolder("uscan"); |
+ base::FilePath path; |
+ MakeTestFolder("uscan", &path); |
found_folders[path] = file_counts; |
file_counts.video_count = 11; |
- path = MakeTestFolder("gscan/dir1"); |
+ MakeTestFolder("gscan/dir1", &path); |
found_folders[path] = file_counts; |
SetFindFoldersResults(true, found_folders); |
@@ -421,14 +429,14 @@ |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2, FindFolderDestroyCount()); |
- EXPECT_EQ(galleries_before + 2, gallery_prefs()->known_galleries().size()); |
+ EXPECT_EQ(galleries_before + 2, gallery_count()); |
CheckFileCounts(granted_scan, 0, 0, 11); |
// The new scan result should be one more than it's previous id. |
CheckFileCounts(ungranted_scan + 1, 0, 0, 7); |
} |
TEST_F(MediaScanManagerTest, UpdateExistingCounts) { |
- size_t galleries_before = gallery_prefs()->known_galleries().size(); |
+ size_t galleries_before = gallery_count(); |
MediaGalleryPrefId auto_id = |
AddGallery("auto", MediaGalleryPrefInfo::kAutoDetected, 1, 0, 0); |
@@ -446,15 +454,16 @@ |
MediaFolderFinder::MediaFolderFinderResults found_folders; |
MediaGalleryScanResult file_counts; |
file_counts.audio_count = 4; |
- base::FilePath path = MakeTestFolder("auto/dir1"); |
+ base::FilePath path; |
+ MakeTestFolder("auto/dir1", &path); |
found_folders[path] = file_counts; |
file_counts.audio_count = 6; |
- path = MakeTestFolder("scan"); |
+ MakeTestFolder("scan", &path); |
found_folders[path] = file_counts; |
file_counts.audio_count = 5; |
- path = MakeTestFolder("user/dir2"); |
+ MakeTestFolder("user/dir2", &path); |
found_folders[path] = file_counts; |
SetFindFoldersResults(true, found_folders); |
@@ -465,7 +474,7 @@ |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, FindFolderDestroyCount()); |
- EXPECT_EQ(galleries_before + 3, gallery_prefs()->known_galleries().size()); |
+ EXPECT_EQ(galleries_before + 3, gallery_count()); |
CheckFileCounts(auto_id, 4, 0, 0); |
CheckFileCounts(user_id, 5, 0, 0); |
CheckFileCounts(scan_id, 6, 0, 0); |
@@ -477,8 +486,39 @@ |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2, FindFolderDestroyCount()); |
- EXPECT_EQ(galleries_before + 3, gallery_prefs()->known_galleries().size()); |
+ EXPECT_EQ(galleries_before + 3, gallery_count()); |
CheckFileCounts(auto_id, 4, 0, 0); |
CheckFileCounts(user_id, 0, 0, 0); |
CheckFileCounts(scan_id, 6, 0, 0); |
} |
+ |
+TEST_F(MediaScanManagerTest, Graylist) { |
+ size_t galleries_before = gallery_count(); |
+ MediaGalleryScanResult file_counts; |
+ file_counts.audio_count = 1; |
+ file_counts.image_count = 2; |
+ file_counts.video_count = 3; |
+ base::FilePath path; |
+ MakeTestFolder("found_media_folder", &path); |
+ base::ScopedPathOverride scoped_fake_home_dir_override(base::DIR_HOME, path); |
+ |
+ const size_t kGalleriesAdded = 3; |
+ MediaFolderFinder::MediaFolderFinderResults found_folders; |
+ MakeTestFolder("found_media_folder/dir1", &path); |
+ found_folders[path] = file_counts; |
+ MakeTestFolder("found_media_folder/dir2", &path); |
+ found_folders[path] = file_counts; |
+ MakeTestFolder("found_media_folder/dir3", &path); |
+ found_folders[path] = file_counts; |
+ SetFindFoldersResults(true, found_folders); |
+ |
+ file_counts.audio_count *= kGalleriesAdded; |
+ file_counts.image_count *= kGalleriesAdded; |
+ file_counts.video_count *= kGalleriesAdded; |
+ SetExpectedScanResults(kGalleriesAdded, file_counts); |
+ StartScan(); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, FindFolderDestroyCount()); |
+ EXPECT_EQ(galleries_before + kGalleriesAdded, gallery_count()); |
+} |