Chromium Code Reviews| Index: chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc |
| diff --git a/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc b/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc |
| index bfbdb81d02d6ea97b28b300917effd8fed071dee..41065aa09b10c7b44d6bcfeca863d683283f2809 100644 |
| --- a/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc |
| +++ b/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc |
| @@ -3,6 +3,7 @@ |
| // found in the LICENSE file. |
| #include "base/auto_reset.h" |
| +#include "base/callback.h" |
| #include "base/file_util.h" |
| #include "base/files/scoped_temp_dir.h" |
| #include "base/json/json_writer.h" |
| @@ -13,16 +14,20 @@ |
| #include "base/values.h" |
| #include "chrome/browser/apps/app_browsertest_util.h" |
| #include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/extensions/api/media_galleries/media_galleries_api.h" |
| #include "chrome/browser/media_galleries/media_file_system_registry.h" |
| #include "chrome/browser/media_galleries/media_folder_finder.h" |
| #include "chrome/browser/media_galleries/media_galleries_preferences.h" |
| +#include "chrome/browser/media_galleries/media_galleries_scan_result_dialog_controller.h" |
| #include "chrome/browser/media_galleries/media_galleries_test_util.h" |
| #include "chrome/browser/media_galleries/media_scan_manager.h" |
| #include "chrome/common/chrome_paths.h" |
| #include "components/storage_monitor/storage_info.h" |
| #include "components/storage_monitor/storage_monitor.h" |
| +#include "content/public/browser/web_contents.h" |
| #include "content/public/test/test_utils.h" |
| #include "extensions/browser/extension_system.h" |
| +#include "extensions/common/extension.h" |
| #if defined(OS_WIN) || defined(OS_MACOSX) |
| #include "chrome/browser/media_galleries/fileapi/picasa_finder.h" |
| @@ -50,11 +55,6 @@ base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("C:\\qux"); |
| base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("/qux"); |
| #endif |
| -void DoNothingMediaFolderFinderResultCallback( |
| - bool /*success*/, |
| - const MediaFolderFinder::MediaFolderFinderResults& /*results*/) { |
| -} |
| - |
| class DoNothingMediaFolderFinder : public MediaFolderFinder { |
| public: |
| explicit DoNothingMediaFolderFinder( |
| @@ -65,8 +65,7 @@ class DoNothingMediaFolderFinder : public MediaFolderFinder { |
| static MediaFolderFinder* CreateDoNothingMediaFolderFinder( |
| const MediaFolderFinderResultsCallback& callback) { |
| - return new DoNothingMediaFolderFinder( |
| - base::Bind(&DoNothingMediaFolderFinderResultCallback)); |
| + return new DoNothingMediaFolderFinder(callback); |
| } |
| virtual void StartScan() OVERRIDE {} |
| @@ -76,6 +75,29 @@ class DoNothingMediaFolderFinder : public MediaFolderFinder { |
| } // namespace |
| +class TestMediaGalleriesAddScanResultsFunction |
| + : public extensions::MediaGalleriesAddScanResultsFunction { |
| + public: |
| + static ExtensionFunction* Factory() { |
| + return new TestMediaGalleriesAddScanResultsFunction; |
| + } |
| + |
| + protected: |
| + virtual ~TestMediaGalleriesAddScanResultsFunction() {} |
| + |
| + // Accepts the dialog as soon as it is created. |
| + virtual MediaGalleriesScanResultDialogController* MakeDialog( |
| + content::WebContents* web_contents, |
| + const extensions::Extension& extension, |
| + const base::Closure& on_finish) OVERRIDE { |
| + MediaGalleriesScanResultDialogController* controller = |
| + extensions::MediaGalleriesAddScanResultsFunction::MakeDialog( |
| + web_contents, extension, on_finish); |
| + controller->dialog_->AcceptDialogForTesting(); |
| + 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.
|
| + } |
| +}; |
| + |
| class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { |
| protected: |
| MediaGalleriesPlatformAppBrowserTest() : test_jpg_size_(0) {} |
| @@ -358,7 +380,23 @@ class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { |
| &DoNothingMediaFolderFinder::CreateDoNothingMediaFolderFinder)); |
| } |
| + void SetRootsForFolderFinder(const std::vector<base::FilePath>& roots) { |
| + MediaScanManager* scan_manager = |
| + g_browser_process->media_file_system_registry()->media_scan_manager(); |
| + scan_manager->SetMediaFolderFinderFactory(base::Bind( |
| + &MediaGalleriesPlatformAppBrowserTest::CreateMediaFolderFinderWithRoots, |
| + roots)); |
| + } |
| + |
| private: |
| + static MediaFolderFinder* CreateMediaFolderFinderWithRoots( |
| + const std::vector<base::FilePath>& roots, |
| + const MediaFolderFinder::MediaFolderFinderResultsCallback& callback) { |
| + MediaFolderFinder* finder = new MediaFolderFinder(callback); |
| + finder->SetRootsForTesting(roots); |
| + return finder; |
| + } |
| + |
| MediaGalleriesPreferences* GetAndInitializePreferences() { |
| MediaGalleriesPreferences* preferences = |
| g_browser_process->media_file_system_registry()->GetPreferences( |
| @@ -480,7 +518,38 @@ IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, |
| } |
| #endif // defined(OS_MACOSX) |
| -IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, Scan) { |
| +IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, CancelScan) { |
| InstallDoNothingFolderFinder(); |
| + ASSERT_TRUE(RunMediaGalleriesTest("cancel_scan")) << message_; |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, Scan) { |
| + base::ScopedTempDir scan_root; |
| + ASSERT_TRUE(scan_root.CreateUniqueTempDir()); |
| + std::vector<base::FilePath> roots; |
| + roots.push_back(scan_root.path()); |
| + SetRootsForFolderFinder(roots); |
| + |
| + // Override addScanResults so that the dialog is accepted as soon as it is |
| + // created. |
| + ASSERT_TRUE(ExtensionFunctionDispatcher::OverrideFunction( |
| + "mediaGalleries.addScanResults", |
| + &TestMediaGalleriesAddScanResultsFunction::Factory)); |
| + |
| + // Add some files and directories to the scan root for testing. Only the |
| + // "f" directory should be found. |
| + std::string dummy_data; |
| + dummy_data.resize(1); |
| + 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.
|
| + 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.
|
| + dummy_data.c_str(), dummy_data.size()); |
| + base::CreateDirectory(scan_root.path().AppendASCII("a/d")); |
| + dummy_data.resize(201 * 1024); // 200k is the min size for the folder finder. |
| + file_util::WriteFile(scan_root.path().AppendASCII("a/d/e.txt"), |
| + dummy_data.c_str(), dummy_data.size()); |
| + base::CreateDirectory(scan_root.path().AppendASCII("f")); |
| + file_util::WriteFile(scan_root.path().AppendASCII("f/g.jpg"), |
| + dummy_data.c_str(), dummy_data.size()); |
| + |
| ASSERT_TRUE(RunMediaGalleriesTest("scan")) << message_; |
| } |