OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/media_galleries/media_folder_finder.h" | 5 #include "chrome/browser/media_galleries/media_folder_finder.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 | 9 |
| 10 #include "base/base_paths.h" |
10 #include "base/bind.h" | 11 #include "base/bind.h" |
11 #include "base/file_util.h" | 12 #include "base/file_util.h" |
12 #include "base/files/scoped_temp_dir.h" | 13 #include "base/files/scoped_temp_dir.h" |
13 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 16 #include "base/test/scoped_path_override.h" |
15 #include "base/threading/sequenced_worker_pool.h" | 17 #include "base/threading/sequenced_worker_pool.h" |
16 #include "chrome/browser/media_galleries/media_scan_types.h" | 18 #include "chrome/browser/media_galleries/media_scan_types.h" |
| 19 #include "chrome/common/chrome_paths.h" |
17 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" |
18 #include "content/public/test/test_browser_thread_bundle.h" | 21 #include "content/public/test/test_browser_thread_bundle.h" |
19 | 22 |
20 | 23 |
21 class MediaFolderFinderTest : public testing::Test { | 24 class MediaFolderFinderTest : public testing::Test { |
22 public: | 25 public: |
23 MediaFolderFinderTest() { | 26 MediaFolderFinderTest() { |
24 } | 27 } |
25 | 28 |
26 virtual ~MediaFolderFinderTest() { | 29 virtual ~MediaFolderFinderTest() { |
(...skipping 28 matching lines...) Expand all Loading... |
55 | 58 |
56 void DeleteMediaFolderFinder() { | 59 void DeleteMediaFolderFinder() { |
57 EXPECT_TRUE(media_folder_finder_.get() != NULL); | 60 EXPECT_TRUE(media_folder_finder_.get() != NULL); |
58 media_folder_finder_.reset(); | 61 media_folder_finder_.reset(); |
59 } | 62 } |
60 | 63 |
61 bool received_results() const { | 64 bool received_results() const { |
62 return received_results_; | 65 return received_results_; |
63 } | 66 } |
64 | 67 |
65 const base::FilePath& fake_dir() { | 68 const base::FilePath& fake_dir() const { |
66 return fake_dir_.path(); | 69 return fake_dir_.path(); |
67 } | 70 } |
68 | 71 |
69 void CreateTestDir(const base::FilePath& parent_dir) { | 72 void CreateTestDir(const base::FilePath& parent_dir) { |
| 73 if (parent_dir == fake_dir()) |
| 74 return; |
| 75 |
70 ASSERT_TRUE(fake_dir().IsParent(parent_dir)); | 76 ASSERT_TRUE(fake_dir().IsParent(parent_dir)); |
71 ASSERT_TRUE(base::CreateDirectory(parent_dir)); | 77 ASSERT_TRUE(base::CreateDirectory(parent_dir)); |
72 } | 78 } |
73 | 79 |
74 void CreateTestFile(const base::FilePath& parent_dir, | 80 void CreateTestFile(const base::FilePath& parent_dir, |
75 MediaGalleryScanFileType type, | 81 MediaGalleryScanFileType type, |
76 size_t count, | 82 size_t count, |
77 bool big, | 83 bool big, |
78 MediaFolderFinder::MediaFolderFinderResults* results) { | 84 MediaFolderFinder::MediaFolderFinderResults* results) { |
79 CreateTestDir(parent_dir); | 85 CreateTestDir(parent_dir); |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 folders.push_back(dir1); | 340 folders.push_back(dir1); |
335 | 341 |
336 CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, | 342 CreateTestFile(dir1, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, |
337 &expected_results); | 343 &expected_results); |
338 | 344 |
339 CreateMediaFolderFinder(folders, true, expected_results); | 345 CreateMediaFolderFinder(folders, true, expected_results); |
340 StartScan(); | 346 StartScan(); |
341 RunLoopUntilReceivedCallback(); | 347 RunLoopUntilReceivedCallback(); |
342 DeleteMediaFolderFinder(); | 348 DeleteMediaFolderFinder(); |
343 } | 349 } |
| 350 |
| 351 TEST_F(MediaFolderFinderTest, Prune) { |
| 352 MediaFolderFinder::MediaFolderFinderResults expected_results; |
| 353 std::vector<base::FilePath> folders; |
| 354 folders.push_back(fake_dir()); |
| 355 |
| 356 #if defined(OS_WIN) |
| 357 int pruned_dir_key = base::DIR_IE_INTERNET_CACHE; |
| 358 #elif defined(OS_MACOSX) |
| 359 int pruned_dir_key = chrome::DIR_USER_LIBRARY; |
| 360 #else |
| 361 int pruned_dir_key = base::DIR_CACHE; |
| 362 #endif |
| 363 |
| 364 base::FilePath fake_pruned_dir = fake_dir().AppendASCII("dir1"); |
| 365 base::ScopedPathOverride scoped_fake_pruned_dir_override(pruned_dir_key, |
| 366 fake_pruned_dir); |
| 367 |
| 368 CreateTestFile(fake_dir(), MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, |
| 369 &expected_results); |
| 370 CreateTestFile(fake_pruned_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, |
| 371 &expected_results); |
| 372 |
| 373 base::FilePath test_dir = fake_pruned_dir.AppendASCII("dir2"); |
| 374 CreateTestFile(test_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, |
| 375 &expected_results); |
| 376 |
| 377 // |fake_pruned_dir| and |test_dir| are pruned. |
| 378 expected_results.erase(fake_pruned_dir); |
| 379 expected_results.erase(test_dir); |
| 380 |
| 381 CreateMediaFolderFinder(folders, true, expected_results); |
| 382 StartScan(); |
| 383 RunLoopUntilReceivedCallback(); |
| 384 DeleteMediaFolderFinder(); |
| 385 } |
| 386 |
| 387 TEST_F(MediaFolderFinderTest, Graylist) { |
| 388 MediaFolderFinder::MediaFolderFinderResults expected_results; |
| 389 std::vector<base::FilePath> folders; |
| 390 folders.push_back(fake_dir()); |
| 391 |
| 392 base::FilePath fake_home_dir = fake_dir().AppendASCII("dir1"); |
| 393 base::FilePath test_dir = fake_home_dir.AppendASCII("dir2"); |
| 394 base::ScopedPathOverride scoped_fake_home_dir_override(base::DIR_HOME, |
| 395 fake_home_dir); |
| 396 |
| 397 CreateTestFile(fake_dir(), MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, |
| 398 &expected_results); |
| 399 CreateTestFile(fake_home_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, |
| 400 &expected_results); |
| 401 CreateTestFile(test_dir, MEDIA_GALLERY_SCAN_FILE_TYPE_IMAGE, 1, true, |
| 402 &expected_results); |
| 403 |
| 404 // |fake_home_dir| and its ancestors do not show up in results. |
| 405 expected_results.erase(fake_dir()); |
| 406 expected_results.erase(fake_home_dir); |
| 407 |
| 408 CreateMediaFolderFinder(folders, true, expected_results); |
| 409 StartScan(); |
| 410 RunLoopUntilReceivedCallback(); |
| 411 DeleteMediaFolderFinder(); |
| 412 } |
OLD | NEW |