| 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 9eb5929c8fb265b1a6d69c744cc930ec5f206e3b..262d07f963852ec69c29246c0cc388a67b6c5790 100644
|
| --- a/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc
|
| +++ b/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc
|
| @@ -23,6 +23,13 @@
|
| #include "content/public/test/test_utils.h"
|
| #include "extensions/common/switches.h"
|
|
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| +#include "chrome/browser/media_galleries/fileapi/picasa_finder.h"
|
| +#include "chrome/common/media_galleries/picasa_test_util.h"
|
| +#include "chrome/common/media_galleries/picasa_types.h"
|
| +#include "chrome/common/media_galleries/pmp_test_util.h"
|
| +#endif
|
| +
|
| using extensions::PlatformAppBrowserTest;
|
|
|
| namespace {
|
| @@ -38,14 +45,12 @@ base::FilePath::CharType kDevicePath[] = FILE_PATH_LITERAL("/qux");
|
|
|
| const char kTestGalleries[] = "testGalleries(%d)";
|
|
|
| -} // namespace
|
| -
|
| // This function is to ensure at least one (fake) media gallery exists for
|
| // testing platforms with no default media galleries, such as CHROMEOS.
|
| void MakeFakeMediaGalleryForTest(Profile* profile, const base::FilePath& path) {
|
| - base::RunLoop runloop;
|
| MediaGalleriesPreferences* preferences =
|
| g_browser_process->media_file_system_registry()->GetPreferences(profile);
|
| + base::RunLoop runloop;
|
| preferences->EnsureInitialized(runloop.QuitClosure());
|
| runloop.Run();
|
|
|
| @@ -63,6 +68,8 @@ void MakeFakeMediaGalleryForTest(Profile* profile, const base::FilePath& path) {
|
| content::RunAllPendingInMessageLoop();
|
| }
|
|
|
| +} // namespace
|
| +
|
| class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest {
|
| protected:
|
| // Since ExtensionTestMessageListener does not work with RunPlatformAppTest(),
|
| @@ -94,6 +101,24 @@ class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest {
|
| content::RunAllPendingInMessageLoop();
|
| }
|
|
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| + // This initializes the storage monitor, MediaGalleriesPreferences, and
|
| + // injects a custom Picasa database location.
|
| + void SetMediaGalleriesPreferencesForPicasaTest(
|
| + Profile* profile,
|
| + const base::FilePath& database_path) {
|
| + MediaGalleriesPreferences* preferences =
|
| + g_browser_process->media_file_system_registry()->GetPreferences(
|
| + profile);
|
| + base::RunLoop runloop;
|
| + preferences->EnsureInitialized(runloop.QuitClosure());
|
| + runloop.Run();
|
| +
|
| + preferences->OnFinderDeviceID(StorageInfo::MakeDeviceId(
|
| + StorageInfo::PICASA, database_path.AsUTF8Unsafe()));
|
| + }
|
| +#endif
|
| +
|
| private:
|
| std::string device_id_;
|
| };
|
| @@ -172,3 +197,41 @@ IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest,
|
| ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/metadata"))
|
| << message_;
|
| }
|
| +
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| +IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowserTest, Picasa) {
|
| + EnsureMediaDirectoriesExists media_directories;
|
| +
|
| + // Create Picasa metadata database directories.
|
| + base::ScopedTempDir metadata_root;
|
| + ASSERT_TRUE(metadata_root.CreateUniqueTempDir());
|
| + base::FilePath picasa_database_path =
|
| + metadata_root.path().AppendASCII(picasa::kPicasaDatabaseDirName);
|
| + base::FilePath picasa_temp_dir_path =
|
| + metadata_root.path().AppendASCII(picasa::kPicasaTempDirName);
|
| + ASSERT_TRUE(file_util::CreateDirectory(picasa_database_path));
|
| + ASSERT_TRUE(file_util::CreateDirectory(picasa_temp_dir_path));
|
| +
|
| + // Create fake folder directories.
|
| + base::ScopedTempDir folders_root;
|
| + ASSERT_TRUE(folders_root.CreateUniqueTempDir());
|
| + base::FilePath fake_folder_1 = folders_root.path().AppendASCII("folder1");
|
| + base::FilePath fake_folder_2 = folders_root.path().AppendASCII("folder2");
|
| + ASSERT_TRUE(file_util::CreateDirectory(fake_folder_1));
|
| + ASSERT_TRUE(file_util::CreateDirectory(fake_folder_2));
|
| +
|
| + // Write folder and album contents.
|
| + picasa::WriteTestAlbumTable(
|
| + picasa_database_path, fake_folder_1, fake_folder_2);
|
| + picasa::WriteTestAlbumsImagesIndex(fake_folder_1, fake_folder_2);
|
| + WriteJPEGHeader(fake_folder_1.AppendASCII("InBoth.jpg"));
|
| + WriteJPEGHeader(fake_folder_1.AppendASCII("InSecondAlbumOnly.jpg"));
|
| + WriteJPEGHeader(fake_folder_2.AppendASCII("InFirstAlbumOnly.jpg"));
|
| +
|
| + SetMediaGalleriesPreferencesForPicasaTest(browser()->profile(),
|
| + picasa_database_path);
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/picasa"))
|
| + << message_;
|
| +}
|
| +#endif // defined(OS_WIN) || defined(OS_MACOSX)
|
|
|