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 8d8b3413fba9a265e8a31279b0a0d74c2a48a640..f70e08f8e44e529404893be06ece1a23f805c958 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,8 +45,6 @@ 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) { |
| @@ -64,6 +69,8 @@ void MakeFakeMediaGalleryForTest(Profile* profile, const base::FilePath& path) { |
| content::RunAllPendingInMessageLoop(); |
| } |
| +} // namespace |
| + |
| class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { |
| protected: |
| // Since ExtensionTestMessageListener does not work with RunPlatformAppTest(), |
| @@ -95,6 +102,33 @@ class MediaGalleriesPlatformAppBrowserTest : public PlatformAppBrowserTest { |
| content::RunAllPendingInMessageLoop(); |
| } |
| +#if defined(OS_WIN) || defined(OS_MACOSX) |
| + // This initializes the storage monitor, MediaGalleriesPreferences, and |
| + // removes all non-Picasa media galleries for a test. |
| + void SetMediaGalleriesPreferencesForPicasaTest(Profile* profile) { |
|
vandebo (ex-Chrome)
2013/09/17 21:18:06
I think the js equivalent (picking out the picasa
tommycli
2013/09/18 15:25:37
Done.
|
| + base::RunLoop runloop; |
| + StorageMonitor::GetInstance()->EnsureInitialized(runloop.QuitClosure()); |
| + runloop.Run(); |
| + |
| + MediaGalleriesPreferences* preferences = |
| + g_browser_process->media_file_system_registry()->GetPreferences( |
| + profile); |
| + |
| + content::RunAllPendingInMessageLoop(); |
| + |
| + // Remove all non-Picasa galleries for ease of testing. |
| + MediaGalleriesPrefInfoMap known_galleries = preferences->known_galleries(); |
| + for (MediaGalleriesPrefInfoMap::const_iterator it = known_galleries.begin(); |
| + it != known_galleries.end(); |
| + ++it) { |
| + if (!StorageInfo::IsPicasaDevice(it->second.device_id)) |
| + preferences->ForgetGalleryById(it->first); |
| + } |
| + |
| + content::RunAllPendingInMessageLoop(); |
| + } |
| +#endif |
| + |
| private: |
| std::string device_id_; |
| }; |
| @@ -173,3 +207,38 @@ 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::FilePath picasa_database_path = |
| + picasa::PicasaFinder::GetPicasaDatabasePath(); |
|
vandebo (ex-Chrome)
2013/09/17 21:18:06
Would it make sense to just call the regular Picas
tommycli
2013/09/18 15:25:37
Changed some stuff here.
|
| + base::FilePath picasa_temp_dir_path = |
| + picasa_database_path.DirName().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); |
| + picasa::WriteJPEGHeader(fake_folder_1.AppendASCII("InBoth.jpg")); |
| + picasa::WriteJPEGHeader(fake_folder_1.AppendASCII("InSecondAlbumOnly.jpg")); |
| + picasa::WriteJPEGHeader(fake_folder_2.AppendASCII("InFirstAlbumOnly.jpg")); |
| + |
| + SetMediaGalleriesPreferencesForPicasaTest(browser()->profile()); |
| + |
| + ASSERT_TRUE(RunPlatformAppTest("api_test/media_galleries/picasa")) |
| + << message_; |
| +} |
| +#endif // defined(OS_WIN) || defined(OS_MACOSX) |