Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(264)

Side by Side Diff: chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc

Issue 174013009: Add end to end test for Media galleries scan API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/auto_reset.h" 5 #include "base/auto_reset.h"
6 #include "base/callback.h"
6 #include "base/file_util.h" 7 #include "base/file_util.h"
7 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
8 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
9 #include "base/numerics/safe_conversions.h" 10 #include "base/numerics/safe_conversions.h"
10 #include "base/path_service.h" 11 #include "base/path_service.h"
11 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
12 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
13 #include "base/values.h" 14 #include "base/values.h"
14 #include "chrome/browser/apps/app_browsertest_util.h" 15 #include "chrome/browser/apps/app_browsertest_util.h"
15 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/extensions/api/media_galleries/media_galleries_api.h"
16 #include "chrome/browser/media_galleries/media_file_system_registry.h" 18 #include "chrome/browser/media_galleries/media_file_system_registry.h"
17 #include "chrome/browser/media_galleries/media_folder_finder.h" 19 #include "chrome/browser/media_galleries/media_folder_finder.h"
18 #include "chrome/browser/media_galleries/media_galleries_preferences.h" 20 #include "chrome/browser/media_galleries/media_galleries_preferences.h"
21 #include "chrome/browser/media_galleries/media_galleries_scan_result_dialog_cont roller.h"
19 #include "chrome/browser/media_galleries/media_galleries_test_util.h" 22 #include "chrome/browser/media_galleries/media_galleries_test_util.h"
20 #include "chrome/browser/media_galleries/media_scan_manager.h" 23 #include "chrome/browser/media_galleries/media_scan_manager.h"
21 #include "chrome/common/chrome_paths.h" 24 #include "chrome/common/chrome_paths.h"
22 #include "components/storage_monitor/storage_info.h" 25 #include "components/storage_monitor/storage_info.h"
23 #include "components/storage_monitor/storage_monitor.h" 26 #include "components/storage_monitor/storage_monitor.h"
27 #include "content/public/browser/web_contents.h"
24 #include "content/public/test/test_utils.h" 28 #include "content/public/test/test_utils.h"
25 #include "extensions/browser/extension_system.h" 29 #include "extensions/browser/extension_system.h"
30 #include "extensions/common/extension.h"
26 31
27 #if defined(OS_WIN) || defined(OS_MACOSX) 32 #if defined(OS_WIN) || defined(OS_MACOSX)
28 #include "chrome/browser/media_galleries/fileapi/picasa_finder.h" 33 #include "chrome/browser/media_galleries/fileapi/picasa_finder.h"
29 #include "chrome/common/media_galleries/picasa_test_util.h" 34 #include "chrome/common/media_galleries/picasa_test_util.h"
30 #include "chrome/common/media_galleries/picasa_types.h" 35 #include "chrome/common/media_galleries/picasa_types.h"
31 #include "chrome/common/media_galleries/pmp_test_util.h" 36 #include "chrome/common/media_galleries/pmp_test_util.h"
32 #endif 37 #endif
33 38
34 #if defined(OS_MACOSX) 39 #if defined(OS_MACOSX)
35 #include "base/mac/foundation_util.h" 40 #include "base/mac/foundation_util.h"
36 #include "base/strings/sys_string_conversions.h" 41 #include "base/strings/sys_string_conversions.h"
37 #include "chrome/browser/media_galleries/fileapi/iapps_finder_impl.h" 42 #include "chrome/browser/media_galleries/fileapi/iapps_finder_impl.h"
38 #endif // OS_MACOSX 43 #endif // OS_MACOSX
39 44
40 using extensions::PlatformAppBrowserTest; 45 using extensions::PlatformAppBrowserTest;
41 46
42 namespace { 47 namespace {
43 48
44 // Dummy device properties. 49 // Dummy device properties.
45 const char kDeviceId[] = "testDeviceId"; 50 const char kDeviceId[] = "testDeviceId";
46 const char kDeviceName[] = "foobar"; 51 const char kDeviceName[] = "foobar";
47 #if defined(FILE_PATH_USES_DRIVE_LETTERS) 52 #if defined(FILE_PATH_USES_DRIVE_LETTERS)
48 base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("C:\\qux"); 53 base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("C:\\qux");
49 #else 54 #else
50 base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("/qux"); 55 base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("/qux");
51 #endif 56 #endif
52 57
53 void DoNothingMediaFolderFinderResultCallback(
54 bool /*success*/,
55 const MediaFolderFinder::MediaFolderFinderResults& /*results*/) {
56 }
57
58 class DoNothingMediaFolderFinder : public MediaFolderFinder { 58 class DoNothingMediaFolderFinder : public MediaFolderFinder {
59 public: 59 public:
60 explicit DoNothingMediaFolderFinder( 60 explicit DoNothingMediaFolderFinder(
61 const MediaFolderFinderResultsCallback& callback) 61 const MediaFolderFinderResultsCallback& callback)
62 : MediaFolderFinder(callback) { 62 : MediaFolderFinder(callback) {
63 } 63 }
64 virtual ~DoNothingMediaFolderFinder() {} 64 virtual ~DoNothingMediaFolderFinder() {}
65 65
66 static MediaFolderFinder* CreateDoNothingMediaFolderFinder( 66 static MediaFolderFinder* CreateDoNothingMediaFolderFinder(
67 const MediaFolderFinderResultsCallback& callback) { 67 const MediaFolderFinderResultsCallback& callback) {
68 return new DoNothingMediaFolderFinder( 68 return new DoNothingMediaFolderFinder(callback);
69 base::Bind(&DoNothingMediaFolderFinderResultCallback));
70 } 69 }
71 70
72 virtual void StartScan() OVERRIDE {} 71 virtual void StartScan() OVERRIDE {}
73 72
74 private: 73 private:
75 }; 74 };
76 75
77 } // namespace 76 } // namespace
78 77
78 class TestMediaGalleriesAddScanResultsFunction
79 : public extensions::MediaGalleriesAddScanResultsFunction {
80 public:
81 static ExtensionFunction* Factory() {
82 return new TestMediaGalleriesAddScanResultsFunction;
83 }
84
85 protected:
86 virtual ~TestMediaGalleriesAddScanResultsFunction() {}
87
88 // Accepts the dialog as soon as it is created.
89 virtual MediaGalleriesScanResultDialogController* MakeDialog(
90 content::WebContents* web_contents,
91 const extensions::Extension& extension,
92 const base::Closure& on_finish) OVERRIDE {
93 MediaGalleriesScanResultDialogController* controller =
94 extensions::MediaGalleriesAddScanResultsFunction::MakeDialog(
95 web_contents, extension, on_finish);
96 controller->dialog_->AcceptDialogForTesting();
97 return NULL;
Lei Zhang 2014/02/20 23:25:20 Return |controller| or add a comment to explain wh
vandebo (ex-Chrome) 2014/02/20 23:41:38 Done.
98 }
99 };
100
79 class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { 101 class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest {
80 protected: 102 protected:
81 MediaGalleriesPlatformAppBrowserTest() : test_jpg_size_(0) {} 103 MediaGalleriesPlatformAppBrowserTest() : test_jpg_size_(0) {}
82 virtual ~MediaGalleriesPlatformAppBrowserTest() {} 104 virtual ~MediaGalleriesPlatformAppBrowserTest() {}
83 105
84 virtual void SetUpOnMainThread() OVERRIDE { 106 virtual void SetUpOnMainThread() OVERRIDE {
85 PlatformAppBrowserTest::SetUpOnMainThread(); 107 PlatformAppBrowserTest::SetUpOnMainThread();
86 ensure_media_directories_exists_.reset(new EnsureMediaDirectoriesExists); 108 ensure_media_directories_exists_.reset(new EnsureMediaDirectoriesExists);
87 109
88 int64 file_size; 110 int64 file_size;
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 return ensure_media_directories_exists_.get(); 373 return ensure_media_directories_exists_.get();
352 } 374 }
353 375
354 void InstallDoNothingFolderFinder() { 376 void InstallDoNothingFolderFinder() {
355 MediaScanManager * scan_manager = 377 MediaScanManager * scan_manager =
356 g_browser_process->media_file_system_registry()->media_scan_manager(); 378 g_browser_process->media_file_system_registry()->media_scan_manager();
357 scan_manager->SetMediaFolderFinderFactory(base::Bind( 379 scan_manager->SetMediaFolderFinderFactory(base::Bind(
358 &DoNothingMediaFolderFinder::CreateDoNothingMediaFolderFinder)); 380 &DoNothingMediaFolderFinder::CreateDoNothingMediaFolderFinder));
359 } 381 }
360 382
383 void SetRootsForFolderFinder(const std::vector<base::FilePath>& roots) {
384 MediaScanManager* scan_manager =
385 g_browser_process->media_file_system_registry()->media_scan_manager();
386 scan_manager->SetMediaFolderFinderFactory(base::Bind(
387 &MediaGalleriesPlatformAppBrowserTest::CreateMediaFolderFinderWithRoots,
388 roots));
389 }
390
361 private: 391 private:
392 static MediaFolderFinder* CreateMediaFolderFinderWithRoots(
393 const std::vector<base::FilePath>& roots,
394 const MediaFolderFinder::MediaFolderFinderResultsCallback& callback) {
395 MediaFolderFinder* finder = new MediaFolderFinder(callback);
396 finder->SetRootsForTesting(roots);
397 return finder;
398 }
399
362 MediaGalleriesPreferences* GetAndInitializePreferences() { 400 MediaGalleriesPreferences* GetAndInitializePreferences() {
363 MediaGalleriesPreferences* preferences = 401 MediaGalleriesPreferences* preferences =
364 g_browser_process->media_file_system_registry()->GetPreferences( 402 g_browser_process->media_file_system_registry()->GetPreferences(
365 browser()->profile()); 403 browser()->profile());
366 base::RunLoop runloop; 404 base::RunLoop runloop;
367 preferences->EnsureInitialized(runloop.QuitClosure()); 405 preferences->EnsureInitialized(runloop.QuitClosure());
368 runloop.Run(); 406 runloop.Run();
369 return preferences; 407 return preferences;
370 } 408 }
371 409
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 ensure_media_directories_exists()->GetFakeIPhotoRootPath()); 511 ensure_media_directories_exists()->GetFakeIPhotoRootPath());
474 512
475 base::ListValue custom_args; 513 base::ListValue custom_args;
476 custom_args.AppendInteger(test_jpg_size()); 514 custom_args.AppendInteger(test_jpg_size());
477 ASSERT_TRUE(RunMediaGalleriesTestWithArg("iphoto", custom_args)) << message_; 515 ASSERT_TRUE(RunMediaGalleriesTestWithArg("iphoto", custom_args)) << message_;
478 516
479 iapps::SetMacPreferencesForTesting(NULL); 517 iapps::SetMacPreferencesForTesting(NULL);
480 } 518 }
481 #endif // defined(OS_MACOSX) 519 #endif // defined(OS_MACOSX)
482 520
521 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, CancelScan) {
522 InstallDoNothingFolderFinder();
523 ASSERT_TRUE(RunMediaGalleriesTest("cancel_scan")) << message_;
524 }
525
483 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, Scan) { 526 IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, Scan) {
484 InstallDoNothingFolderFinder(); 527 base::ScopedTempDir scan_root;
528 ASSERT_TRUE(scan_root.CreateUniqueTempDir());
529 std::vector<base::FilePath> roots;
530 roots.push_back(scan_root.path());
531 SetRootsForFolderFinder(roots);
532
533 // Override addScanResults so that the dialog is accepted as soon as it is
534 // created.
535 ASSERT_TRUE(ExtensionFunctionDispatcher::OverrideFunction(
536 "mediaGalleries.addScanResults",
537 &TestMediaGalleriesAddScanResultsFunction::Factory));
538
539 // Add some files and directories to the scan root for testing. Only the
540 // "f" directory should be found.
541 std::string dummy_data;
542 dummy_data.resize(1);
543 base::CreateDirectory(scan_root.path().AppendASCII("a/b"));
Lei Zhang 2014/02/20 23:25:20 Make sure these succeed.
vandebo (ex-Chrome) 2014/02/20 23:41:38 Done.
544 file_util::WriteFile(scan_root.path().AppendASCII("a/b/c.jpg"),
Lei Zhang 2014/02/20 23:25:20 Check the return results.
vandebo (ex-Chrome) 2014/02/20 23:41:38 Done.
545 dummy_data.c_str(), dummy_data.size());
546 base::CreateDirectory(scan_root.path().AppendASCII("a/d"));
547 dummy_data.resize(201 * 1024); // 200k is the min size for the folder finder.
548 file_util::WriteFile(scan_root.path().AppendASCII("a/d/e.txt"),
549 dummy_data.c_str(), dummy_data.size());
550 base::CreateDirectory(scan_root.path().AppendASCII("f"));
551 file_util::WriteFile(scan_root.path().AppendASCII("f/g.jpg"),
552 dummy_data.c_str(), dummy_data.size());
553
485 ASSERT_TRUE(RunMediaGalleriesTest("scan")) << message_; 554 ASSERT_TRUE(RunMediaGalleriesTest("scan")) << message_;
486 } 555 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698