| 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..dacbccd5201924f5b4b3d029441aa96284c0e221 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,49 @@ 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 because it is going away
|
| +// soon.
|
| +#if defined (TOOLKIT_GTK)
|
| +#define MAYBE_Scan DISABLED_Scan
|
| +#else
|
| +#define MAYBE_Scan 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_;
|
| }
|
|
|