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) |