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..5b2f98a3c094dab89cfd38cf015350664f4eaccd 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,30 @@ 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(); |
| + // The dialog is closing or closed so don't return it. |
| + return NULL; |
| + } |
| +}; |
| + |
| class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { |
| protected: |
| MediaGalleriesPlatformAppBrowserTest() : test_jpg_size_(0) {} |
| @@ -358,7 +381,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 +519,48 @@ 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_; |
| +} |
| + |
| +// The scan result dialog is not implemented on GTK. |
|
Lei Zhang
2014/02/20 23:51:34
Isn't it clearer to write:
#if defined(TOOLKIT_GT
vandebo (ex-Chrome)
2014/02/20 23:59:44
I actually think it's clearer to have the positive
vandebo (ex-Chrome)
2014/02/21 00:09:13
Done.
|
| +#if defined (USE_AURA) || defined(OS_MACOSX) |
| +#define MAYBE_Scan Scan |
| +#else |
| +#define MAYBE_Scan DISABLED_Scan |
| +#endif // defined (USE_AURA) || defined(OS_MACOSX) |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, MAYBE_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); |
| + ASSERT_TRUE(base::CreateDirectory(scan_root.path().AppendASCII("a/b"))); |
| + ASSERT_EQ(static_cast<int>(dummy_data.size()), |
| + file_util::WriteFile(scan_root.path().AppendASCII("a/b/c.jpg"), |
| + dummy_data.c_str(), dummy_data.size())); |
| + ASSERT_TRUE(base::CreateDirectory(scan_root.path().AppendASCII("a/d"))); |
| + dummy_data.resize(201 * 1024); // 200k is the min size for the folder finder. |
| + ASSERT_EQ(static_cast<int>(dummy_data.size()), |
| + file_util::WriteFile(scan_root.path().AppendASCII("a/d/e.txt"), |
| + dummy_data.c_str(), dummy_data.size())); |
| + ASSERT_TRUE(base::CreateDirectory(scan_root.path().AppendASCII("f"))); |
| + ASSERT_EQ(static_cast<int>(dummy_data.size()), |
| + file_util::WriteFile(scan_root.path().AppendASCII("f/g.jpg"), |
| + dummy_data.c_str(), dummy_data.size())); |
| + |
| ASSERT_TRUE(RunMediaGalleriesTest("scan")) << message_; |
| } |