| Index: chrome/browser/media_galleries/media_folder_finder_unittest.cc
|
| diff --git a/chrome/browser/media_galleries/media_folder_finder_unittest.cc b/chrome/browser/media_galleries/media_folder_finder_unittest.cc
|
| deleted file mode 100644
|
| index b114be6a27dd68f0fb75916487f1ecd4554c4881..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/media_galleries/media_folder_finder_unittest.cc
|
| +++ /dev/null
|
| @@ -1,405 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/media_galleries/media_folder_finder.h"
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include <set>
|
| -#include <string>
|
| -
|
| -#include "base/base_paths.h"
|
| -#include "base/bind.h"
|
| -#include "base/files/file_util.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/macros.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "base/test/scoped_path_override.h"
|
| -#include "base/threading/sequenced_worker_pool.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/media_galleries/media_scan_types.h"
|
| -#include "chrome/common/chrome_paths.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/test/test_browser_thread_bundle.h"
|
| -#include "content/public/test/test_utils.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -class MediaFolderFinderTest : public testing::Test {
|
| - public:
|
| - MediaFolderFinderTest() {
|
| - }
|
| -
|
| - ~MediaFolderFinderTest() override {}
|
| -
|
| - void SetUp() override { ASSERT_TRUE(fake_dir_.CreateUniqueTempDir()); }
|
| -
|
| - void TearDown() override { ASSERT_EQ(NULL, media_folder_finder_.get()); }
|
| -
|
| - protected:
|
| - void CreateMediaFolderFinder(
|
| - const std::vector<base::FilePath> roots,
|
| - bool expected_success,
|
| - const MediaFolderFinder::MediaFolderFinderResults& expected_results) {
|
| - EXPECT_EQ(NULL, media_folder_finder_.get());
|
| - received_results_ = false;
|
| - expected_success_ = expected_success;
|
| - expected_results_ = expected_results;
|
| - media_folder_finder_.reset(
|
| - new MediaFolderFinder(base::Bind(&MediaFolderFinderTest::OnGotResults,
|
| - base::Unretained(this))));
|
| - media_folder_finder_->SetRootsForTesting(roots);
|
| - }
|
| -
|
| - void StartScan() {
|
| - media_folder_finder_->StartScan();
|
| - }
|
| -
|
| - void DeleteMediaFolderFinder() {
|
| - EXPECT_TRUE(media_folder_finder_.get() != NULL);
|
| - media_folder_finder_.reset();
|
| - }
|
| -
|
| - bool received_results() const {
|
| - return received_results_;
|
| - }
|
| -
|
| - const base::FilePath& fake_dir() const {
|
| - return fake_dir_.path();
|
| - }
|
| -
|
| - void CreateTestDir(const base::FilePath& parent_dir) {
|
| - if (parent_dir == fake_dir())
|
| - return;
|
| -
|
| - ASSERT_TRUE(fake_dir().IsParent(parent_dir));
|
| - ASSERT_TRUE(base::CreateDirectory(parent_dir));
|
| - }
|
| -
|
| - void CreateTestFile(const base::FilePath& parent_dir,
|
| - MediaGalleryScanFileType type,
|
| - size_t count,
|
| - bool big,
|
| - MediaFolderFinder::MediaFolderFinderResults* results) {
|
| - CreateTestDir(parent_dir);
|
| -
|
| - std::string extension;
|
| - size_t filesize;
|
| - MediaGalleryScanResult& result = (*results)[parent_dir];
|
| - switch (type) {
|
| - case MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE:
|
| - extension = "jpg";
|
| - filesize = 10;
|
| - result.image_count += count;
|
| - break;
|
| - case MEDIA_GALLERY_SCAN_FILE_TYPE_AUDIO:
|
| - extension = "wav";
|
| - filesize = 20;
|
| - result.audio_count += count;
|
| - break;
|
| - case MEDIA_GALLERY_SCAN_FILE_TYPE_VIDEO:
|
| - extension = "avi";
|
| - filesize = 30;
|
| - result.video_count += count;
|
| - break;
|
| - case MEDIA_GALLERY_SCAN_FILE_TYPE_UNKNOWN:
|
| - extension = "txt";
|
| - filesize = 10;
|
| - if (IsEmptyScanResult(result))
|
| - results->erase(parent_dir);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| - if (big)
|
| - filesize *= 100000;
|
| -
|
| - for (size_t i = 0; i < count; ++i) {
|
| - base::FilePath test_file(parent_dir.AppendASCII("dummy." + extension));
|
| - int uniquifier =
|
| - base::GetUniquePathNumber(test_file, base::FilePath::StringType());
|
| - if (uniquifier > 0) {
|
| - test_file = test_file.InsertBeforeExtensionASCII(
|
| - base::StringPrintf(" (%d)", uniquifier));
|
| - filesize += uniquifier;
|
| - }
|
| -
|
| - std::string dummy_data;
|
| - dummy_data.resize(filesize);
|
| -
|
| - int bytes_written =
|
| - base::WriteFile(test_file, dummy_data.c_str(), filesize);
|
| - ASSERT_GE(bytes_written, 0);
|
| - ASSERT_EQ(filesize, static_cast<size_t>(bytes_written));
|
| - }
|
| - }
|
| -
|
| - void RunLoopUntilReceivedCallback() {
|
| - while (!received_results())
|
| - content::RunAllBlockingPoolTasksUntilIdle();
|
| - }
|
| -
|
| - private:
|
| - void OnGotResults(
|
| - bool success,
|
| - const MediaFolderFinder::MediaFolderFinderResults& results) {
|
| - received_results_ = true;
|
| - EXPECT_EQ(expected_success_, success);
|
| - std::set<base::FilePath> expected_keys =
|
| - GetKeysFromResults(expected_results_);
|
| - ASSERT_EQ(expected_keys, GetKeysFromResults(results));
|
| - for (MediaFolderFinder::MediaFolderFinderResults::const_iterator it =
|
| - results.begin();
|
| - it != results.end(); ++it) {
|
| - const base::FilePath& folder = it->first;
|
| - const MediaGalleryScanResult& expected = it->second;
|
| - const MediaGalleryScanResult& actual = results.find(folder)->second;
|
| - EXPECT_EQ(expected.image_count, actual.image_count)
|
| - << " Image count for " << folder.value();
|
| - EXPECT_EQ(expected.audio_count, actual.audio_count)
|
| - << " Audio count for " << folder.value();
|
| - EXPECT_EQ(expected.video_count, actual.video_count)
|
| - << " Video count for " << folder.value();
|
| - }
|
| - }
|
| -
|
| - std::set<base::FilePath> GetKeysFromResults(
|
| - const MediaFolderFinder::MediaFolderFinderResults& results) {
|
| - std::set<base::FilePath> keys;
|
| - for (MediaFolderFinder::MediaFolderFinderResults::const_iterator it =
|
| - results.begin();
|
| - it != results.end(); ++it) {
|
| - keys.insert(it->first);
|
| - }
|
| - return keys;
|
| - }
|
| -
|
| - content::TestBrowserThreadBundle thread_bundle_;
|
| -
|
| - base::ScopedTempDir fake_dir_;
|
| -
|
| - scoped_ptr<MediaFolderFinder> media_folder_finder_;
|
| -
|
| - bool expected_success_;
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results_;
|
| - bool received_results_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MediaFolderFinderTest);
|
| -};
|
| -
|
| -TEST_F(MediaFolderFinderTest, NoScan) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| - CreateMediaFolderFinder(folders, false, expected_results);
|
| - DeleteMediaFolderFinder();
|
| - EXPECT_TRUE(received_results());
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, ScanAndCancel) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| - CreateMediaFolderFinder(folders, false, expected_results);
|
| - StartScan();
|
| - DeleteMediaFolderFinder();
|
| - content::RunAllBlockingPoolTasksUntilIdle();
|
| - EXPECT_TRUE(received_results());
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, ScanNothing) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, EmptyScan) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, ScanMediaFiles) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| -
|
| - base::FilePath dir1 = fake_dir().AppendASCII("dir1");
|
| - base::FilePath dir2 = fake_dir().AppendASCII("dir2");
|
| - base::FilePath dir2_3 = dir2.AppendASCII("dir2_3");
|
| - base::FilePath dir2_4 = dir2.AppendASCII("dir2_4");
|
| - base::FilePath dir2_4_5 = dir2_4.AppendASCII("dir2_4_5");
|
| - base::FilePath dir2_4_empty = dir2_4.AppendASCII("dir2_4_empty");
|
| - base::FilePath dir_empty = fake_dir().AppendASCII("dir_empty");
|
| -
|
| - CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 2, true,
|
| - &expected_results);
|
| - CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, false,
|
| - &expected_results);
|
| - CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_UNKNOWN, 1, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2_3, MEDIA_GALLERY_SCAN_FILE_TYPE_AUDIO, 4, true,
|
| - &expected_results);
|
| - CreateTestFile(dir2_3, MEDIA_GALLERY_SCAN_FILE_TYPE_AUDIO, 3, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2_4, MEDIA_GALLERY_SCAN_FILE_TYPE_UNKNOWN, 5, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2_4_5, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 2, true,
|
| - &expected_results);
|
| - CreateTestFile(dir2_4_5, MEDIA_GALLERY_SCAN_FILE_TYPE_AUDIO, 4, true,
|
| - &expected_results);
|
| - CreateTestFile(dir2_4_5, MEDIA_GALLERY_SCAN_FILE_TYPE_VIDEO, 1, true,
|
| - &expected_results);
|
| - CreateTestFile(dir2_4_5, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 5, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2_4_5, MEDIA_GALLERY_SCAN_FILE_TYPE_VIDEO, 3, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2_4_5, MEDIA_GALLERY_SCAN_FILE_TYPE_UNKNOWN, 3, true,
|
| - &expected_results);
|
| - CreateTestDir(dir2_4_empty);
|
| - CreateTestDir(dir_empty);
|
| -
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, SkipHiddenFiles) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| -
|
| - base::FilePath hidden_dir = fake_dir().AppendASCII(".hidden");
|
| -
|
| - CreateTestFile(hidden_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 2, true,
|
| - &expected_results);
|
| - expected_results.erase(hidden_dir);
|
| -
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, ScanIgnoresSmallMediaFiles) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| -
|
| - base::FilePath dir1 = fake_dir().AppendASCII("dir1");
|
| - base::FilePath dir2 = fake_dir().AppendASCII("dir2");
|
| - base::FilePath dir_empty = fake_dir().AppendASCII("dir_empty");
|
| -
|
| - CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 2, true,
|
| - &expected_results);
|
| - CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_VIDEO, 1, false,
|
| - &expected_results);
|
| - CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_UNKNOWN, 1, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2, MEDIA_GALLERY_SCAN_FILE_TYPE_AUDIO, 3, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2, MEDIA_GALLERY_SCAN_FILE_TYPE_VIDEO, 5, false,
|
| - &expected_results);
|
| - CreateTestFile(dir2, MEDIA_GALLERY_SCAN_FILE_TYPE_UNKNOWN, 1, true,
|
| - &expected_results);
|
| - CreateTestDir(dir_empty);
|
| - ASSERT_EQ(1U, expected_results.erase(dir2));
|
| -
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, Overlap) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| - folders.push_back(fake_dir());
|
| -
|
| - base::FilePath dir1 = fake_dir().AppendASCII("dir1");
|
| - folders.push_back(dir1);
|
| - folders.push_back(dir1);
|
| -
|
| - CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true,
|
| - &expected_results);
|
| -
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, Prune) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| -
|
| -#if defined(OS_WIN)
|
| - int pruned_dir_key = base::DIR_IE_INTERNET_CACHE;
|
| -#elif defined(OS_MACOSX)
|
| - int pruned_dir_key = chrome::DIR_USER_LIBRARY;
|
| -#else
|
| - int pruned_dir_key = base::DIR_CACHE;
|
| -#endif
|
| -
|
| - base::FilePath fake_pruned_dir = fake_dir().AppendASCII("dir1");
|
| - base::ScopedPathOverride scoped_fake_pruned_dir_override(pruned_dir_key,
|
| - fake_pruned_dir);
|
| -
|
| - CreateTestFile(fake_dir(), MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true,
|
| - &expected_results);
|
| - CreateTestFile(fake_pruned_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true,
|
| - &expected_results);
|
| -
|
| - base::FilePath test_dir = fake_pruned_dir.AppendASCII("dir2");
|
| - CreateTestFile(test_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true,
|
| - &expected_results);
|
| -
|
| - // |fake_pruned_dir| and |test_dir| are pruned.
|
| - expected_results.erase(fake_pruned_dir);
|
| - expected_results.erase(test_dir);
|
| -
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
| -
|
| -TEST_F(MediaFolderFinderTest, Graylist) {
|
| - MediaFolderFinder::MediaFolderFinderResults expected_results;
|
| - std::vector<base::FilePath> folders;
|
| - folders.push_back(fake_dir());
|
| -
|
| - base::FilePath fake_home_dir = fake_dir().AppendASCII("dir1");
|
| - base::FilePath test_dir = fake_home_dir.AppendASCII("dir2");
|
| - base::ScopedPathOverride scoped_fake_home_dir_override(base::DIR_HOME,
|
| - fake_home_dir);
|
| -
|
| - CreateTestFile(fake_dir(), MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true,
|
| - &expected_results);
|
| - CreateTestFile(fake_home_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true,
|
| - &expected_results);
|
| - CreateTestFile(test_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true,
|
| - &expected_results);
|
| -
|
| - // |fake_home_dir| and its ancestors do not show up in results.
|
| - expected_results.erase(fake_dir());
|
| - expected_results.erase(fake_home_dir);
|
| -
|
| - CreateMediaFolderFinder(folders, true, expected_results);
|
| - StartScan();
|
| - RunLoopUntilReceivedCallback();
|
| - DeleteMediaFolderFinder();
|
| -}
|
|
|