Index: chrome/browser/media_gallery/media_galleries_preferences_unittest.cc |
diff --git a/chrome/browser/media_gallery/media_galleries_preferences_unittest.cc b/chrome/browser/media_gallery/media_galleries_preferences_unittest.cc |
index 4ce58f967f534bef8208e7802f933dddcf20b696..4a622fa3baac9921385a99cc06a80f4f27ffa153 100644 |
--- a/chrome/browser/media_gallery/media_galleries_preferences_unittest.cc |
+++ b/chrome/browser/media_gallery/media_galleries_preferences_unittest.cc |
@@ -37,6 +37,9 @@ class TestMediaGalleriesPreferences : public MediaGalleriesPreferences { |
class MediaGalleriesPreferencesTest : public testing::Test { |
public: |
+ typedef std::map<std::string /*device id*/, MediaGalleryPrefIdSet> |
+ DeviceIdPrefIdsMap; |
+ |
MediaGalleriesPreferencesTest() |
: ui_thread_(content::BrowserThread::UI, &loop_), |
file_thread_(content::BrowserThread::FILE, &loop_), |
@@ -104,6 +107,14 @@ class MediaGalleriesPreferencesTest : public testing::Test { |
VerifyGalleryInfo(&it->second, it->first); |
} |
+ for (DeviceIdPrefIdsMap::const_iterator it = expected_device_map.begin(); |
+ it != expected_device_map.end(); |
+ ++it) { |
+ MediaGalleryPrefIdSet actual_id_set = |
+ gallery_prefs_->LookUpGalleriesByDeviceId(it->first); |
+ EXPECT_EQ(it->second, actual_id_set); |
+ } |
+ |
std::set<MediaGalleryPrefId> galleries_for_all = |
gallery_prefs_->GalleriesForExtension(*all_permission_extension.get()); |
EXPECT_EQ(expected_galleries_for_all, galleries_for_all); |
@@ -144,11 +155,13 @@ class MediaGalleriesPreferencesTest : public testing::Test { |
expected_galleries_[id].pref_id = id; |
expected_galleries_[id].display_name = ASCIIToUTF16(display_name); |
expected_galleries_[id].device_id = device_id; |
- expected_galleries_[id].path = FilePath(path); |
+ expected_galleries_[id].path = FilePath(path).NormalizePathSeparators(); |
expected_galleries_[id].type = type; |
if (type == MediaGalleryPrefInfo::kAutoDetected) |
expected_galleries_for_all.insert(id); |
+ |
+ expected_device_map[device_id].insert(id); |
} |
scoped_refptr<extensions::Extension> all_permission_extension; |
@@ -158,6 +171,8 @@ class MediaGalleriesPreferencesTest : public testing::Test { |
std::set<MediaGalleryPrefId> expected_galleries_for_all; |
std::set<MediaGalleryPrefId> expected_galleries_for_regular; |
+ DeviceIdPrefIdsMap expected_device_map; |
+ |
MediaGalleriesPrefInfoMap expected_galleries_; |
private: |
@@ -293,6 +308,7 @@ TEST_F(MediaGalleriesPreferencesTest, GalleryManagement) { |
// Remove a user added gallery and it should go away. |
gallery_prefs()->ForgetGalleryById(user_added_id); |
expected_galleries_.erase(user_added_id); |
+ expected_device_map[device_id].erase(user_added_id); |
Verify(); |
} |
@@ -403,6 +419,84 @@ TEST_F(MediaGalleriesPreferencesTest, GalleryPermissions) { |
*regular_permission_extension.get(), user_added_id, false); |
expected_galleries_for_regular.erase(user_added_id); |
Verify(); |
+ |
+ // Add permission for an invalid gallery id. |
+ gallery_prefs()->SetGalleryPermissionForExtension( |
+ *regular_permission_extension.get(), 9999L, true); |
+ Verify(); |
+} |
+ |
+TEST_F(MediaGalleriesPreferencesTest, MultipleGalleriesPerDevices) { |
+ FilePath path; |
+ std::string device_id; |
+ Verify(); |
+ |
+ // Add a regular gallery |
+ path = MakePath("new_user"); |
+ device_id = MediaFileSystemRegistry::GetInstance()->GetDeviceIdFromPath(path); |
+ MediaGalleryPrefId user_added_id = gallery_prefs()->AddGallery( |
+ device_id, ASCIIToUTF16("NewUserGallery"), path, true /*user*/); |
+ EXPECT_EQ(default_galleries_count() + 1UL, user_added_id); |
+ AddGalleryExpectation(user_added_id, "NewUserGallery", device_id, |
+ FILE_PATH_LITERAL("new_user"), |
+ MediaGalleryPrefInfo::kUserAdded); |
+ Verify(); |
+ |
+ // Find it by device id and fail to find something related. |
+ MediaGalleryPrefIdSet pref_id_set; |
+ pref_id_set = gallery_prefs()->LookUpGalleriesByDeviceId(device_id); |
+ EXPECT_EQ(1U, pref_id_set.size()); |
+ EXPECT_TRUE(pref_id_set.find(user_added_id) != pref_id_set.end()); |
+ |
+ device_id = MediaFileSystemRegistry::GetInstance()->GetDeviceIdFromPath( |
+ MakePath("new_user/foo")); |
+ pref_id_set = gallery_prefs()->LookUpGalleriesByDeviceId(device_id); |
+ EXPECT_EQ(0U, pref_id_set.size()); |
+ |
+ // Add some galleries on the same device. |
+ path = MakePath("path1/on/device1"); |
+ device_id = "device1"; |
+ MediaGalleryPrefId dev1_path1_id = gallery_prefs()->AddGallery( |
+ device_id, ASCIIToUTF16("Device1Path1"), path, true /*user*/); |
+ EXPECT_EQ(default_galleries_count() + 2UL, dev1_path1_id); |
+ AddGalleryExpectation(dev1_path1_id, "Device1Path1", device_id, |
+ FILE_PATH_LITERAL("path1/on/device1"), |
+ MediaGalleryPrefInfo::kUserAdded); |
+ Verify(); |
+ |
+ path = MakePath("path2/on/device1"); |
+ MediaGalleryPrefId dev1_path2_id = gallery_prefs()->AddGallery( |
+ device_id, ASCIIToUTF16("Device1Path2"), path, true /*user*/); |
+ EXPECT_EQ(default_galleries_count() + 3UL, dev1_path2_id); |
+ AddGalleryExpectation(dev1_path2_id, "Device1Path2", device_id, |
+ FILE_PATH_LITERAL("path2/on/device1"), |
+ MediaGalleryPrefInfo::kUserAdded); |
+ Verify(); |
+ |
+ path = MakePath("path1/on/device2"); |
+ device_id = "device2"; |
+ MediaGalleryPrefId dev2_path1_id = gallery_prefs()->AddGallery( |
+ device_id, ASCIIToUTF16("Device2Path1"), path, true /*user*/); |
+ EXPECT_EQ(default_galleries_count() + 4UL, dev2_path1_id); |
+ AddGalleryExpectation(dev2_path1_id, "Device2Path1", device_id, |
+ FILE_PATH_LITERAL("path1/on/device2"), |
+ MediaGalleryPrefInfo::kUserAdded); |
+ Verify(); |
+ |
+ path = MakePath("path2/on/device2"); |
+ MediaGalleryPrefId dev2_path2_id = gallery_prefs()->AddGallery( |
+ device_id, ASCIIToUTF16("Device2Path2"), path, true /*user*/); |
+ EXPECT_EQ(default_galleries_count() + 5UL, dev2_path2_id); |
+ AddGalleryExpectation(dev2_path2_id, "Device2Path2", device_id, |
+ FILE_PATH_LITERAL("path2/on/device2"), |
+ MediaGalleryPrefInfo::kUserAdded); |
+ Verify(); |
+ |
+ // Check that adding one of them again works as expected. |
+ MediaGalleryPrefId id = gallery_prefs()->AddGallery( |
+ device_id, ASCIIToUTF16("Device2Path2"), path, true /*user*/); |
+ EXPECT_EQ(dev2_path2_id, id); |
+ Verify(); |
} |
} // namespace |