| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // MediaGalleriesPreferences unit tests. | 5 // MediaGalleriesPreferences unit tests. |
| 6 | 6 |
| 7 #include "chrome/browser/media_gallery/media_galleries_preferences.h" | 7 #include "chrome/browser/media_gallery/media_galleries_preferences.h" |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 | 30 |
| 31 class TestMediaGalleriesPreferences : public MediaGalleriesPreferences { | 31 class TestMediaGalleriesPreferences : public MediaGalleriesPreferences { |
| 32 public: | 32 public: |
| 33 static string16 GetDisplayNameForPath(const FilePath& path) { | 33 static string16 GetDisplayNameForPath(const FilePath& path) { |
| 34 return MediaGalleriesPreferences::ComputeDisplayName(path); | 34 return MediaGalleriesPreferences::ComputeDisplayName(path); |
| 35 } | 35 } |
| 36 }; | 36 }; |
| 37 | 37 |
| 38 class MediaGalleriesPreferencesTest : public testing::Test { | 38 class MediaGalleriesPreferencesTest : public testing::Test { |
| 39 public: | 39 public: |
| 40 typedef std::map<std::string /*device id*/, MediaGalleryPrefIdSet> |
| 41 DeviceIdPrefIdsMap; |
| 42 |
| 40 MediaGalleriesPreferencesTest() | 43 MediaGalleriesPreferencesTest() |
| 41 : ui_thread_(content::BrowserThread::UI, &loop_), | 44 : ui_thread_(content::BrowserThread::UI, &loop_), |
| 42 file_thread_(content::BrowserThread::FILE, &loop_), | 45 file_thread_(content::BrowserThread::FILE, &loop_), |
| 43 profile_(new TestingProfile()), | 46 profile_(new TestingProfile()), |
| 44 extension_service_(NULL), | 47 extension_service_(NULL), |
| 45 default_galleries_count_(0) { | 48 default_galleries_count_(0) { |
| 46 } | 49 } |
| 47 | 50 |
| 48 virtual ~MediaGalleriesPreferencesTest() { | 51 virtual ~MediaGalleriesPreferencesTest() { |
| 49 // TestExtensionSystem uses DeleteSoon, so we need to delete the profile | 52 // TestExtensionSystem uses DeleteSoon, so we need to delete the profile |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 void Verify() { | 100 void Verify() { |
| 98 const MediaGalleriesPrefInfoMap& known_galleries = | 101 const MediaGalleriesPrefInfoMap& known_galleries = |
| 99 gallery_prefs_->known_galleries(); | 102 gallery_prefs_->known_galleries(); |
| 100 EXPECT_EQ(expected_galleries_.size(), known_galleries.size()); | 103 EXPECT_EQ(expected_galleries_.size(), known_galleries.size()); |
| 101 for (MediaGalleriesPrefInfoMap::const_iterator it = known_galleries.begin(); | 104 for (MediaGalleriesPrefInfoMap::const_iterator it = known_galleries.begin(); |
| 102 it != known_galleries.end(); | 105 it != known_galleries.end(); |
| 103 ++it) { | 106 ++it) { |
| 104 VerifyGalleryInfo(&it->second, it->first); | 107 VerifyGalleryInfo(&it->second, it->first); |
| 105 } | 108 } |
| 106 | 109 |
| 110 for (DeviceIdPrefIdsMap::const_iterator it = expected_device_map.begin(); |
| 111 it != expected_device_map.end(); |
| 112 ++it) { |
| 113 MediaGalleryPrefIdSet actual_id_set = |
| 114 gallery_prefs_->LookUpGalleriesByDeviceId(it->first); |
| 115 EXPECT_EQ(it->second, actual_id_set); |
| 116 } |
| 117 |
| 107 std::set<MediaGalleryPrefId> galleries_for_all = | 118 std::set<MediaGalleryPrefId> galleries_for_all = |
| 108 gallery_prefs_->GalleriesForExtension(*all_permission_extension.get()); | 119 gallery_prefs_->GalleriesForExtension(*all_permission_extension.get()); |
| 109 EXPECT_EQ(expected_galleries_for_all, galleries_for_all); | 120 EXPECT_EQ(expected_galleries_for_all, galleries_for_all); |
| 110 | 121 |
| 111 std::set<MediaGalleryPrefId> galleries_for_regular = | 122 std::set<MediaGalleryPrefId> galleries_for_regular = |
| 112 gallery_prefs_->GalleriesForExtension( | 123 gallery_prefs_->GalleriesForExtension( |
| 113 *regular_permission_extension.get()); | 124 *regular_permission_extension.get()); |
| 114 EXPECT_EQ(expected_galleries_for_regular, galleries_for_regular); | 125 EXPECT_EQ(expected_galleries_for_regular, galleries_for_regular); |
| 115 | 126 |
| 116 std::set<MediaGalleryPrefId> galleries_for_no = | 127 std::set<MediaGalleryPrefId> galleries_for_no = |
| (...skipping 25 matching lines...) Expand all Loading... |
| 142 std::string device_id, FilePath::StringType path, | 153 std::string device_id, FilePath::StringType path, |
| 143 MediaGalleryPrefInfo::Type type) { | 154 MediaGalleryPrefInfo::Type type) { |
| 144 expected_galleries_[id].pref_id = id; | 155 expected_galleries_[id].pref_id = id; |
| 145 expected_galleries_[id].display_name = ASCIIToUTF16(display_name); | 156 expected_galleries_[id].display_name = ASCIIToUTF16(display_name); |
| 146 expected_galleries_[id].device_id = device_id; | 157 expected_galleries_[id].device_id = device_id; |
| 147 expected_galleries_[id].path = FilePath(path); | 158 expected_galleries_[id].path = FilePath(path); |
| 148 expected_galleries_[id].type = type; | 159 expected_galleries_[id].type = type; |
| 149 | 160 |
| 150 if (type == MediaGalleryPrefInfo::kAutoDetected) | 161 if (type == MediaGalleryPrefInfo::kAutoDetected) |
| 151 expected_galleries_for_all.insert(id); | 162 expected_galleries_for_all.insert(id); |
| 163 |
| 164 expected_device_map[device_id].insert(id); |
| 152 } | 165 } |
| 153 | 166 |
| 154 scoped_refptr<extensions::Extension> all_permission_extension; | 167 scoped_refptr<extensions::Extension> all_permission_extension; |
| 155 scoped_refptr<extensions::Extension> regular_permission_extension; | 168 scoped_refptr<extensions::Extension> regular_permission_extension; |
| 156 scoped_refptr<extensions::Extension> no_permissions_extension; | 169 scoped_refptr<extensions::Extension> no_permissions_extension; |
| 157 | 170 |
| 158 std::set<MediaGalleryPrefId> expected_galleries_for_all; | 171 std::set<MediaGalleryPrefId> expected_galleries_for_all; |
| 159 std::set<MediaGalleryPrefId> expected_galleries_for_regular; | 172 std::set<MediaGalleryPrefId> expected_galleries_for_regular; |
| 160 | 173 |
| 174 DeviceIdPrefIdsMap expected_device_map; |
| 175 |
| 161 MediaGalleriesPrefInfoMap expected_galleries_; | 176 MediaGalleriesPrefInfoMap expected_galleries_; |
| 162 | 177 |
| 163 private: | 178 private: |
| 164 scoped_refptr<extensions::Extension> AddApp( | 179 scoped_refptr<extensions::Extension> AddApp( |
| 165 std::string name, | 180 std::string name, |
| 166 std::vector<std::string> permissions) { | 181 std::vector<std::string> permissions) { |
| 167 scoped_ptr<DictionaryValue> manifest(new DictionaryValue); | 182 scoped_ptr<DictionaryValue> manifest(new DictionaryValue); |
| 168 manifest->SetString(extension_manifest_keys::kName, name); | 183 manifest->SetString(extension_manifest_keys::kName, name); |
| 169 manifest->SetString(extension_manifest_keys::kVersion, "0.1"); | 184 manifest->SetString(extension_manifest_keys::kVersion, "0.1"); |
| 170 manifest->SetInteger(extension_manifest_keys::kManifestVersion, 2); | 185 manifest->SetInteger(extension_manifest_keys::kManifestVersion, 2); |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 | 301 |
| 287 // Remove an auto added gallery (i.e. make it blacklisted). | 302 // Remove an auto added gallery (i.e. make it blacklisted). |
| 288 gallery_prefs()->ForgetGalleryById(auto_id); | 303 gallery_prefs()->ForgetGalleryById(auto_id); |
| 289 expected_galleries_[auto_id].type = MediaGalleryPrefInfo::kBlackListed; | 304 expected_galleries_[auto_id].type = MediaGalleryPrefInfo::kBlackListed; |
| 290 expected_galleries_for_all.erase(auto_id); | 305 expected_galleries_for_all.erase(auto_id); |
| 291 Verify(); | 306 Verify(); |
| 292 | 307 |
| 293 // Remove a user added gallery and it should go away. | 308 // Remove a user added gallery and it should go away. |
| 294 gallery_prefs()->ForgetGalleryById(user_added_id); | 309 gallery_prefs()->ForgetGalleryById(user_added_id); |
| 295 expected_galleries_.erase(user_added_id); | 310 expected_galleries_.erase(user_added_id); |
| 311 expected_device_map[device_id].erase(user_added_id); |
| 296 Verify(); | 312 Verify(); |
| 297 } | 313 } |
| 298 | 314 |
| 299 TEST_F(MediaGalleriesPreferencesTest, GalleryPermissions) { | 315 TEST_F(MediaGalleriesPreferencesTest, GalleryPermissions) { |
| 300 MediaGalleryPrefId auto_id, user_added_id, to_blacklist_id, id; | 316 MediaGalleryPrefId auto_id, user_added_id, to_blacklist_id, id; |
| 301 FilePath path; | 317 FilePath path; |
| 302 std::string device_id; | 318 std::string device_id; |
| 303 Verify(); | 319 Verify(); |
| 304 | 320 |
| 305 // Add some galleries to test with. | 321 // Add some galleries to test with. |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 396 // Remove permission for all galleries to the regular permission extension. | 412 // Remove permission for all galleries to the regular permission extension. |
| 397 gallery_prefs()->SetGalleryPermissionForExtension( | 413 gallery_prefs()->SetGalleryPermissionForExtension( |
| 398 *regular_permission_extension.get(), auto_id, false); | 414 *regular_permission_extension.get(), auto_id, false); |
| 399 expected_galleries_for_regular.erase(auto_id); | 415 expected_galleries_for_regular.erase(auto_id); |
| 400 Verify(); | 416 Verify(); |
| 401 | 417 |
| 402 gallery_prefs()->SetGalleryPermissionForExtension( | 418 gallery_prefs()->SetGalleryPermissionForExtension( |
| 403 *regular_permission_extension.get(), user_added_id, false); | 419 *regular_permission_extension.get(), user_added_id, false); |
| 404 expected_galleries_for_regular.erase(user_added_id); | 420 expected_galleries_for_regular.erase(user_added_id); |
| 405 Verify(); | 421 Verify(); |
| 422 |
| 423 // Add permission for an invalid gallery id. |
| 424 gallery_prefs()->SetGalleryPermissionForExtension( |
| 425 *regular_permission_extension.get(), 9999L, true); |
| 426 Verify(); |
| 427 } |
| 428 |
| 429 TEST_F(MediaGalleriesPreferencesTest, MultipleGalleriesPerDevices) { |
| 430 FilePath path; |
| 431 std::string device_id; |
| 432 Verify(); |
| 433 |
| 434 // Add a regular gallery |
| 435 path = MakePath("new_user"); |
| 436 device_id = MediaFileSystemRegistry::GetInstance()->GetDeviceIdFromPath(path); |
| 437 MediaGalleryPrefId user_added_id = gallery_prefs()->AddGallery( |
| 438 device_id, ASCIIToUTF16("NewUserGallery"), path, true /*user*/); |
| 439 EXPECT_EQ(default_galleries_count() + 1UL, user_added_id); |
| 440 AddGalleryExpectation(user_added_id, "NewUserGallery", device_id, |
| 441 FILE_PATH_LITERAL("new_user"), |
| 442 MediaGalleryPrefInfo::kUserAdded); |
| 443 Verify(); |
| 444 |
| 445 // Find it by device id and fail to find something related. |
| 446 MediaGalleryPrefIdSet pref_id_set; |
| 447 pref_id_set = gallery_prefs()->LookUpGalleriesByDeviceId(device_id); |
| 448 EXPECT_EQ(1U, pref_id_set.size()); |
| 449 EXPECT_TRUE(pref_id_set.find(user_added_id) != pref_id_set.end()); |
| 450 |
| 451 device_id = MediaFileSystemRegistry::GetInstance()->GetDeviceIdFromPath( |
| 452 MakePath("new_user/foo")); |
| 453 pref_id_set = gallery_prefs()->LookUpGalleriesByDeviceId(device_id); |
| 454 EXPECT_EQ(0U, pref_id_set.size()); |
| 455 |
| 456 // Add some galleries on the same device. |
| 457 path = MakePath("path1/on/device1"); |
| 458 device_id = "device1"; |
| 459 MediaGalleryPrefId dev1_path1_id = gallery_prefs()->AddGallery( |
| 460 device_id, ASCIIToUTF16("Device1Path1"), path, true /*user*/); |
| 461 EXPECT_EQ(default_galleries_count() + 2UL, dev1_path1_id); |
| 462 AddGalleryExpectation(dev1_path1_id, "Device1Path1", device_id, |
| 463 FILE_PATH_LITERAL("path1/on/device1"), |
| 464 MediaGalleryPrefInfo::kUserAdded); |
| 465 Verify(); |
| 466 |
| 467 path = MakePath("path2/on/device1"); |
| 468 MediaGalleryPrefId dev1_path2_id = gallery_prefs()->AddGallery( |
| 469 device_id, ASCIIToUTF16("Device1Path2"), path, true /*user*/); |
| 470 EXPECT_EQ(default_galleries_count() + 3UL, dev1_path2_id); |
| 471 AddGalleryExpectation(dev1_path2_id, "Device1Path2", device_id, |
| 472 FILE_PATH_LITERAL("path2/on/device1"), |
| 473 MediaGalleryPrefInfo::kUserAdded); |
| 474 Verify(); |
| 475 |
| 476 path = MakePath("path1/on/device2"); |
| 477 device_id = "device2"; |
| 478 MediaGalleryPrefId dev2_path1_id = gallery_prefs()->AddGallery( |
| 479 device_id, ASCIIToUTF16("Device2Path1"), path, true /*user*/); |
| 480 EXPECT_EQ(default_galleries_count() + 4UL, dev2_path1_id); |
| 481 AddGalleryExpectation(dev2_path1_id, "Device2Path1", device_id, |
| 482 FILE_PATH_LITERAL("path1/on/device2"), |
| 483 MediaGalleryPrefInfo::kUserAdded); |
| 484 Verify(); |
| 485 |
| 486 path = MakePath("path2/on/device2"); |
| 487 MediaGalleryPrefId dev2_path2_id = gallery_prefs()->AddGallery( |
| 488 device_id, ASCIIToUTF16("Device2Path2"), path, true /*user*/); |
| 489 EXPECT_EQ(default_galleries_count() + 5UL, dev2_path2_id); |
| 490 AddGalleryExpectation(dev2_path2_id, "Device2Path2", device_id, |
| 491 FILE_PATH_LITERAL("path2/on/device2"), |
| 492 MediaGalleryPrefInfo::kUserAdded); |
| 493 Verify(); |
| 494 |
| 495 // Check that adding one of them again works as expected. |
| 496 MediaGalleryPrefId id = gallery_prefs()->AddGallery( |
| 497 device_id, ASCIIToUTF16("Device2Path2"), path, true /*user*/); |
| 498 EXPECT_EQ(dev2_path2_id, id); |
| 499 Verify(); |
| 406 } | 500 } |
| 407 | 501 |
| 408 } // namespace | 502 } // namespace |
| 409 | 503 |
| 410 } // namespace chrome | 504 } // namespace chrome |
| OLD | NEW |