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

Unified 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 side-by-side diff with in-line comments
Download patch
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_;
}

Powered by Google App Engine
This is Rietveld 408576698