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_; |
} |