media_galleries_preferences_unittest.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// MediaGalleriesPreferences unit tests. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/media_galleries/media_galleries_preferences.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/run_loop.h" 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/test_extension_system.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/media_galleries/media_file_system_registry.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/media_galleries/media_galleries_test_util.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/storage_monitor/media_storage_util.h" 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/storage_monitor/storage_monitor.h" 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/storage_monitor/test_storage_monitor.h" 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "content/public/test/test_browser_thread_bundle.h" 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_system.h" 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h" 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/manifest_handlers/background_info.h" 26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/media_galleries_permission.h" 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "grit/generated_resources.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/api/string_ordinal.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/base/l10n/l10n_util.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_CHROMEOS) 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/user_manager.h" 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h" 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_service.h" 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::ASCIIToUTF16; 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)using storage_monitor::MediaStorageUtil; 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)using storage_monitor::StorageInfo; 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)using storage_monitor::TestStorageMonitor; 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MockGalleryChangeObserver 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public MediaGalleriesPreferences::GalleryChangeObserver { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit MockGalleryChangeObserver(MediaGalleriesPreferences* pref) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : pref_(pref), 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) notifications_(0) {} 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~MockGalleryChangeObserver() {} 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int notifications() const { return notifications_;} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // MediaGalleriesPreferences::GalleryChangeObserver implementation. 57d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void OnPermissionAdded(MediaGalleriesPreferences* pref, 58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const std::string& extension_id, 59d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) MediaGalleryPrefId pref_id) OVERRIDE { 60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(pref_, pref); 61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ++notifications_; 62d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 63d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 64d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void OnPermissionRemoved(MediaGalleriesPreferences* pref, 65d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const std::string& extension_id, 66d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) MediaGalleryPrefId pref_id) OVERRIDE { 67d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(pref_, pref); 68d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ++notifications_; 69d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 70d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 71d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void OnGalleryAdded(MediaGalleriesPreferences* pref, 72d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) MediaGalleryPrefId pref_id) OVERRIDE { 73d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(pref_, pref); 74d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ++notifications_; 75d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 76d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 77d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void OnGalleryRemoved(MediaGalleriesPreferences* pref, 78d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) MediaGalleryPrefId pref_id) OVERRIDE { 79d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(pref_, pref); 80d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ++notifications_; 81d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 82d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 83d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void OnGalleryInfoUpdated(MediaGalleriesPreferences* pref, 84d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) MediaGalleryPrefId pref_id) OVERRIDE { 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(pref_, pref); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ++notifications_; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleriesPreferences* pref_; 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int notifications_; 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MockGalleryChangeObserver); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MediaGalleriesPreferencesTest : public testing::Test { 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<std::string /*device id*/, MediaGalleryPrefIdSet> 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DeviceIdPrefIdsMap; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleriesPreferencesTest() 103ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch : profile_(new TestingProfile()), 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_galleries_count_(0) { 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MediaGalleriesPreferencesTest() { 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() OVERRIDE { 111d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ASSERT_TRUE(TestStorageMonitor::CreateAndInstall()); 112558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions::TestExtensionSystem* extension_system( 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<extensions::TestExtensionSystem*>( 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions::ExtensionSystem::Get(profile_.get()))); 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extension_system->CreateExtensionService( 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine::ForCurrentProcess(), base::FilePath(), false); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs_.reset(new MediaGalleriesPreferences(profile_.get())); 1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::RunLoop loop; 1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) gallery_prefs_->EnsureInitialized(loop.QuitClosure()); 1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) loop.Run(); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the default galleries into the expectations. 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const MediaGalleriesPrefInfoMap& known_galleries = 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs_->known_galleries(); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (known_galleries.size()) { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(3U, known_galleries.size()); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_galleries_count_ = 3; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleriesPrefInfoMap::const_iterator it; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (it = known_galleries.begin(); it != known_galleries.end(); ++it) { 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[it->first] = it->second; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it->second.type == MediaGalleryPrefInfo::kAutoDetected) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.insert(it->first); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> all_permissions; 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) all_permissions.push_back( 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extensions::MediaGalleriesPermission::kReadPermission); 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) all_permissions.push_back( 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extensions::MediaGalleriesPermission::kAllAutoDetectedPermission); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> read_permissions; 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) read_permissions.push_back( 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extensions::MediaGalleriesPermission::kReadPermission); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) all_permission_extension = 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddMediaGalleriesApp("all", all_permissions, profile_.get()); 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) regular_permission_extension = 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddMediaGalleriesApp("regular", read_permissions, profile_.get()); 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) no_permissions_extension = 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddMediaGalleriesApp("no", read_permissions, profile_.get()); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TearDown() OVERRIDE { 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TestStorageMonitor::Destroy(); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Verify() { 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const MediaGalleriesPrefInfoMap& known_galleries = 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs_->known_galleries(); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_galleries_.size(), known_galleries.size()); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (MediaGalleriesPrefInfoMap::const_iterator it = known_galleries.begin(); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != known_galleries.end(); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++it) { 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VerifyGalleryInfo(it->second, it->first); 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (it->second.type != MediaGalleryPrefInfo::kAutoDetected && 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) it->second.type != MediaGalleryPrefInfo::kBlackListed) { 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!ContainsKey(expected_galleries_for_all, it->first) && 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) !ContainsKey(expected_galleries_for_regular, it->first)) { 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(gallery_prefs_->NonAutoGalleryHasPermission(it->first)); 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else { 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs_->NonAutoGalleryHasPermission(it->first)); 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (DeviceIdPrefIdsMap::const_iterator it = expected_device_map.begin(); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != expected_device_map.end(); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++it) { 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefIdSet actual_id_set = 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs_->LookUpGalleriesByDeviceId(it->first); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(it->second, actual_id_set); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<MediaGalleryPrefId> galleries_for_all = 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs_->GalleriesForExtension(*all_permission_extension.get()); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_galleries_for_all, galleries_for_all); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<MediaGalleryPrefId> galleries_for_regular = 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs_->GalleriesForExtension( 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *regular_permission_extension.get()); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_galleries_for_regular, galleries_for_regular); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<MediaGalleryPrefId> galleries_for_no = 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs_->GalleriesForExtension(*no_permissions_extension.get()); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0U, galleries_for_no.size()); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void VerifyGalleryInfo(const MediaGalleryPrefInfo& actual, 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefId expected_id) const { 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleriesPrefInfoMap::const_iterator in_expectation = 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_.find(expected_id); 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(in_expectation == expected_galleries_.end()) << expected_id; 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(in_expectation->second.pref_id, actual.pref_id); 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(in_expectation->second.display_name, actual.display_name); 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(in_expectation->second.device_id, actual.device_id); 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(in_expectation->second.path.value(), actual.path.value()); 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(in_expectation->second.type, actual.type); 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(in_expectation->second.audio_count, actual.audio_count); 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(in_expectation->second.image_count, actual.image_count); 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(in_expectation->second.video_count, actual.video_count); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleriesPreferences* gallery_prefs() { 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return gallery_prefs_.get(); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 default_galleries_count() { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return default_galleries_count_; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void AddGalleryExpectation(MediaGalleryPrefId id, base::string16 display_name, 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string device_id, 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path, 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::Type type) { 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[id].pref_id = id; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[id].display_name = display_name; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[id].device_id = device_id; 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[id].path = relative_path.NormalizePathSeparators(); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[id].type = type; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (type == MediaGalleryPrefInfo::kAutoDetected) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.insert(id); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_device_map[device_id].insert(id); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void AddScanResultExpectation(MediaGalleryPrefId id, 2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 display_name, 2425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string device_id, 2435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath relative_path, 2445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int audio_count, 2455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int image_count, 2465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int video_count) { 2475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddGalleryExpectation(id, display_name, device_id, relative_path, 2485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[id].audio_count = audio_count; 2505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[id].image_count = image_count; 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[id].video_count = video_count; 2525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefId AddGalleryWithNameV0(const std::string& device_id, 255a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& display_name, 256868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const base::FilePath& relative_path, 257868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool user_added) { 2585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::Type type = 2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) user_added ? MediaGalleryPrefInfo::kUserAdded 2605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : MediaGalleryPrefInfo::kAutoDetected; 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return gallery_prefs()->AddGalleryInternal( 2625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id, display_name, relative_path, type, 263a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16(), base::string16(), base::string16(), 0, base::Time(), 2645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) false, 0, 0, 0, 0); 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId AddGalleryWithNameV1(const std::string& device_id, 268a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& display_name, 2697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const base::FilePath& relative_path, 2707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool user_added) { 2715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::Type type = 2725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) user_added ? MediaGalleryPrefInfo::kUserAdded 2735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : MediaGalleryPrefInfo::kAutoDetected; 2747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return gallery_prefs()->AddGalleryInternal( 2755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id, display_name, relative_path, type, 276a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16(), base::string16(), base::string16(), 0, base::Time(), 2775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) false, 0, 0, 0, 1); 2787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 2797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 2807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId AddGalleryWithNameV2(const std::string& device_id, 281a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& display_name, 2827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const base::FilePath& relative_path, 2835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::Type type) { 2847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return gallery_prefs()->AddGalleryInternal( 2855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id, display_name, relative_path, type, 286a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16(), base::string16(), base::string16(), 0, base::Time(), 2875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) false, 0, 0, 0, 2); 2885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId AddFixedGalleryWithExepectation( 2915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& path_name, const std::string& name, 2925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::Type type) { 2935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath path = MakeMediaGalleriesTestingPath(path_name); 2945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StorageInfo info; 2955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath relative_path; 2965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 297a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16(name); 298a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefId id = AddGalleryWithNameV2(info.device_id(), gallery_name, 2995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) relative_path, type); 300a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 3015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) type); 3025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 3035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return id; 3047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 3057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 3067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool UpdateDeviceIDForSingletonType(const std::string& device_id) { 3077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return gallery_prefs()->UpdateDeviceIDForSingletonType(device_id); 3087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 3097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<extensions::Extension> all_permission_extension; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<extensions::Extension> regular_permission_extension; 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<extensions::Extension> no_permissions_extension; 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<MediaGalleryPrefId> expected_galleries_for_all; 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<MediaGalleryPrefId> expected_galleries_for_regular; 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DeviceIdPrefIdsMap expected_device_map; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleriesPrefInfoMap expected_galleries_; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Needed for extension service & friends to work. 323ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch content::TestBrowserThreadBundle thread_bundle_; 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EnsureMediaDirectoriesExists mock_gallery_locations_; 3261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chromeos::ScopedTestCrosSettings test_cros_settings_; 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chromeos::ScopedTestUserManager test_user_manager_; 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 333d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) TestStorageMonitor monitor_; 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestingProfile> profile_; 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<MediaGalleriesPreferences> gallery_prefs_; 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 default_galleries_count_; 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MediaGalleriesPreferencesTest); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, GalleryManagement) { 3435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId auto_id, user_added_id, scan_id, id; 3442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a new auto detected gallery. 3495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto"); 3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 352a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 353a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 354a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_id = id; 357a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add it as other types, nothing should happen. 362a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 363a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(auto_id, id); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 366a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 367a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 3685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(auto_id, id); 3695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 370a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 371a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 3725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(auto_id, id); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a new user added gallery. 3755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_user"); 3762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 377a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("NewUserGallery"); 378a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 379a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 2UL, id); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_added_id = id; 3825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string user_added_device_id = info.device_id(); 383a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add it as other types, nothing should happen. 388a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 389a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 3905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(user_added_id, id); 3915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 392a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 393a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 3945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(user_added_id, id); 3955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 396a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 397a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 3985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(user_added_id, id); 3995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 4005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add a new scan result gallery. 4025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_scan"); 4035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 404a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("NewScanGallery"); 405a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 406a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 4075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 3UL, id); 4085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scan_id = id; 409a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 4105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 4115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 4125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add it as other types, nothing should happen. 414a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 415a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 4165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(scan_id, id); 4175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 418a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 419a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 4205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(scan_id, id); 4215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 422a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 423a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 4245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(scan_id, id); 4255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 4265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Lookup some galleries. 4285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath( 4295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_auto"), NULL)); 4305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath( 4315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_user"), NULL)); 4325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath( 4335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_scan"), NULL)); 4345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(gallery_prefs()->LookUpGalleryByPath( 4355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("other"), NULL)); 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that we always get the gallery info. 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo gallery_info; 4395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath( 4405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_auto"), &gallery_info)); 4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VerifyGalleryInfo(gallery_info, auto_id); 4422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(gallery_info.volume_metadata_valid); 4435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath( 4445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_user"), &gallery_info)); 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VerifyGalleryInfo(gallery_info, user_added_id); 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(gallery_info.volume_metadata_valid); 4475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath( 4485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_scan"), &gallery_info)); 4495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VerifyGalleryInfo(gallery_info, scan_id); 4505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(gallery_info.volume_metadata_valid); 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("other"); 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(gallery_prefs()->LookUpGalleryByPath(path, &gallery_info)); 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(kInvalidMediaGalleryPrefId, gallery_info.pref_id); 4557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo other_info; 45790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &other_info, &relative_path); 45890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(other_info.device_id(), gallery_info.device_id); 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(relative_path.value(), gallery_info.path.value()); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove an auto added gallery (i.e. make it blacklisted). 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(auto_id); 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[auto_id].type = MediaGalleryPrefInfo::kBlackListed; 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.erase(auto_id); 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Remove a scan result (i.e. make it blacklisted). 4685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(scan_id); 4695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[scan_id].type = MediaGalleryPrefInfo::kRemovedScan; 4705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 4715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove a user added gallery and it should go away. 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(user_added_id); 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_.erase(user_added_id); 4755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_device_map[user_added_device_id].erase(user_added_id); 4765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 4775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 4785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, ForgetAndErase) { 4805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId user_erase = 4815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddFixedGalleryWithExepectation("user_erase", "UserErase", 4825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 4835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, user_erase); 4845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId user_forget = 4855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddFixedGalleryWithExepectation("user_forget", "UserForget", 4865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 4875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 2UL, user_forget); 4885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId auto_erase = 4905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddFixedGalleryWithExepectation("auto_erase", "AutoErase", 4915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 4925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 3UL, auto_erase); 4935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId auto_forget = 4945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddFixedGalleryWithExepectation("auto_forget", "AutoForget", 4955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 4965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 4UL, auto_forget); 4975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId scan_erase = 4995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddFixedGalleryWithExepectation("scan_erase", "ScanErase", 5005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 5015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 5UL, scan_erase); 5025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId scan_forget = 5035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddFixedGalleryWithExepectation("scan_forget", "ScanForget", 5045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 5055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 6UL, scan_forget); 5065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string device_id; 5095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(user_forget); 5115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id = expected_galleries_[user_forget].device_id; 5125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_.erase(user_forget); 5135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_device_map[device_id].erase(user_forget); 5145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(auto_forget); 5175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[auto_forget].type = MediaGalleryPrefInfo::kBlackListed; 5185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.erase(auto_forget); 5195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(scan_forget); 5225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[scan_forget].type = MediaGalleryPrefInfo::kRemovedScan; 5235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->EraseGalleryById(user_erase); 5265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id = expected_galleries_[user_erase].device_id; 5275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_.erase(user_erase); 5285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_device_map[device_id].erase(user_erase); 5295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->EraseGalleryById(auto_erase); 5325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id = expected_galleries_[auto_erase].device_id; 5335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_.erase(auto_erase); 5345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_device_map[device_id].erase(auto_erase); 5355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.erase(auto_erase); 5365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->EraseGalleryById(scan_erase); 5395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id = expected_galleries_[scan_erase].device_id; 5405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_.erase(scan_erase); 5415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_device_map[device_id].erase(scan_erase); 5425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Also erase the previously forgetten ones to check erasing blacklisted ones. 5455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->EraseGalleryById(auto_forget); 5465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id = expected_galleries_[auto_forget].device_id; 5475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_.erase(auto_forget); 5485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_device_map[device_id].erase(auto_forget); 5495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 5505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->EraseGalleryById(scan_forget); 5525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) device_id = expected_galleries_[scan_forget].device_id; 5535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_.erase(scan_forget); 5545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_device_map[device_id].erase(scan_forget); 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Verify(); 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, AddGalleryWithVolumeMetadata) { 5592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefId id; 5602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 5612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 5622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 5632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Time now = base::Time::Now(); 5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Verify(); 5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add a new auto detected gallery. 5675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto"); 56890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 56990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) id = gallery_prefs()->AddGallery(info.device_id(), relative_path, 5705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected, 5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("volume label"), 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("vendor name"), 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("model name"), 5745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1000000ULL, now, 0, 0, 0); 5752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 576a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AddGalleryExpectation(id, base::string16(), info.device_id(), relative_path, 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Verify(); 5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefInfo gallery_info; 5815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath( 5825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_auto"), &gallery_info)); 5832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(gallery_info.volume_metadata_valid); 5842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("volume label"), gallery_info.volume_label); 5852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("vendor name"), gallery_info.vendor_name); 5862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("model name"), gallery_info.model_name); 5872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1000000ULL, gallery_info.total_size_in_bytes); 5882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Note: we put the microseconds time into a double, so there'll 5892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // be some possible rounding errors. If it's less than 100, we don't 5902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // care. 591a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_LE(std::abs(now.ToInternalValue() - 592a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_info.last_attach_time.ToInternalValue()), 593a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 100); 5942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 5952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, ReplaceGalleryWithVolumeMetadata) { 5972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefId id, metadata_id; 5982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 5992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 6012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Time now = base::Time::Now(); 6022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Verify(); 6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add an auto detected gallery in the prefs version 0 format. 6055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto"); 60690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 607a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 608a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV0(info.device_id(), gallery_name, relative_path, 609a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false /*auto*/); 6102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 611a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 6132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Verify(); 6142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 61590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) metadata_id = gallery_prefs()->AddGallery(info.device_id(), 6162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path, 6175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected, 6182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("volume label"), 6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("vendor name"), 6202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("model name"), 6215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1000000ULL, now, 0, 0, 0); 6222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(id, metadata_id); 623a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AddGalleryExpectation(id, base::string16(), info.device_id(), relative_path, 6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 6252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Make sure the display_name is set to empty now, as the metadata 6272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // upgrade should set the manual override name empty. 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Whenever an "AutoDetected" gallery is removed, it is moved to a black listed 6325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// state. When the gallery is added again, the black listed state is updated 6335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// back to the "AutoDetected" type. 6345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, AutoAddedBlackListing) { 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefId auto_id, id; 6362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 6372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 6382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a new auto detect gallery to test with. 6425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto"); 64390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 644a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 645a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV1(info.device_id(), gallery_name, 6467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) relative_path, false /*auto*/); 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_id = id; 649a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove an auto added gallery (i.e. make it blacklisted). 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(auto_id); 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[auto_id].type = MediaGalleryPrefInfo::kBlackListed; 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.erase(auto_id); 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Try adding the gallery again automatically and it should be a no-op. 660a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV1(info.device_id(), gallery_name, relative_path, 661a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false /*auto*/); 6625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(auto_id, id); 6635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 6645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 6652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add the gallery again as a user action. 6665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) id = gallery_prefs()->AddGalleryByPath(path, 6675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(auto_id, id); 669a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 6725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 6732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Whenever a "ScanResult" gallery is removed, it is moved to a black listed 6755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// state. When the gallery is added again, the black listed state is updated 6765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// back to the "ScanResult" type. 6775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, ScanResultBlackListing) { 6785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId scan_id, id; 6795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath path; 6805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StorageInfo info; 6815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath relative_path; 6822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Verify(); 6832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add a new scan result gallery to test with. 6855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_scan"); 6865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 687a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewScanGallery"); 688a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 689a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 6905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 6915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scan_id = id; 692a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 6935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 6945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 6955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 6965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Remove a scan result gallery (i.e. make it blacklisted). 6975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(scan_id); 6985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[scan_id].type = MediaGalleryPrefInfo::kRemovedScan; 6995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.erase(scan_id); 7005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 7015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 7025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Try adding the gallery again as a scan result it should be a no-op. 703a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 704a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 7055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(scan_id, id); 7065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 7075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 7085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add the gallery again as a user action. 7095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) id = gallery_prefs()->AddGalleryByPath(path, 7105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 7115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(scan_id, id); 712a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 7135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 7142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Verify(); 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, UpdateGalleryNameV2) { 7187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Add a new auto detect gallery to test with. 7195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath path = MakeMediaGalleriesTestingPath("new_auto"); 7207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StorageInfo info; 7217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::FilePath relative_path; 7227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 723a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 7247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId id = 725a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 726a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 727a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 7287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 7297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Verify(); 7307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 7317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Won't override the name -- don't change any expectation. 732a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::string16(); 733a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 7345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 7357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Verify(); 7367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 737a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("NewName"); 738a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 739a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 7407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Note: will really just update the existing expectation. 741a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 7427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 7437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Verify(); 7447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 7457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, GalleryPermissions) { 7475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId auto_id, user_added_id, to_blacklist_id, scan_id, 7485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) to_scan_remove_id, id; 7492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 7502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 7512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add some galleries to test with. 7555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_user"); 75690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 757a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewUserGallery"); 758a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV1(info.device_id(), gallery_name, relative_path, 759a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) true /*user*/); 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_added_id = id; 762a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto"); 76790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 768a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 769a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV1(info.device_id(), gallery_name, relative_path, 770a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false /*auto*/); 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 2UL, id); 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_id = id; 773a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("to_blacklist"); 77890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 779a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("ToBlacklistGallery"); 780a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV1(info.device_id(), gallery_name, relative_path, 781a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false /*auto*/); 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 3UL, id); 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_blacklist_id = id; 784a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_scan"); 7895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 790a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("NewScanGallery"); 791a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 792a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 7935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 4UL, id); 7945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scan_id = id; 795a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 7965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 7975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 7985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 7995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("to_scan_remove"); 8005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 801a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("ToScanRemoveGallery"); 802a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV2(info.device_id(), gallery_name, relative_path, 803a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 8045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 5UL, id); 8055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) to_scan_remove_id = id; 806a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 8075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult); 8085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 8095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove permission for all galleries from the all-permission extension. 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *all_permission_extension.get(), auto_id, false); 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.erase(auto_id); 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *all_permission_extension.get(), user_added_id, false); 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.erase(user_added_id); 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *all_permission_extension.get(), to_blacklist_id, false); 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.erase(to_blacklist_id); 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *all_permission_extension.get(), scan_id, false); 8285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.erase(scan_id); 8295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 8305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *all_permission_extension.get(), to_scan_remove_id, false); 8335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.erase(to_scan_remove_id); 8345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 8355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add permission back for all galleries to the all-permission extension. 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *all_permission_extension.get(), auto_id, true); 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.insert(auto_id); 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *all_permission_extension.get(), user_added_id, true); 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.insert(user_added_id); 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *all_permission_extension.get(), to_blacklist_id, true); 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.insert(to_blacklist_id); 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *all_permission_extension.get(), scan_id, true); 8545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.insert(scan_id); 8555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 8565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *all_permission_extension.get(), to_scan_remove_id, true); 8595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.insert(to_scan_remove_id); 8605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 8615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add permission for all galleries to the regular permission extension. 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *regular_permission_extension.get(), auto_id, true); 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_regular.insert(auto_id); 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *regular_permission_extension.get(), user_added_id, true); 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_regular.insert(user_added_id); 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *regular_permission_extension.get(), to_blacklist_id, true); 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_regular.insert(to_blacklist_id); 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *regular_permission_extension.get(), scan_id, true); 8805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_regular.insert(scan_id); 8815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 8825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 8845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *regular_permission_extension.get(), to_scan_remove_id, true); 8855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_regular.insert(to_scan_remove_id); 8865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 8875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Blacklist the to be black listed gallery 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(to_blacklist_id); 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_[to_blacklist_id].type = 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kBlackListed; 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_all.erase(to_blacklist_id); 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_regular.erase(to_blacklist_id); 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(to_scan_remove_id); 8975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[to_scan_remove_id].type = 8985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kRemovedScan; 8995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_all.erase(to_scan_remove_id); 9005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_regular.erase(to_scan_remove_id); 9015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 9025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove permission for all galleries to the regular permission extension. 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *regular_permission_extension.get(), auto_id, false); 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_regular.erase(auto_id); 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *regular_permission_extension.get(), user_added_id, false); 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_galleries_for_regular.erase(user_added_id); 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 9155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *regular_permission_extension.get(), scan_id, false); 9165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_for_regular.erase(scan_id); 9175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 9185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add permission for an invalid gallery id. 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gallery_prefs()->SetGalleryPermissionForExtension( 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *regular_permission_extension.get(), 9999L, true); 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// What an existing gallery is added again, update the gallery information if 9265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// needed. 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, UpdateGalleryDetails) { 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefId auto_id, id; 9292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 9302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 9312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a new auto detect gallery to test with. 9355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto"); 93690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 937a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 938a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV1(info.device_id(), gallery_name, 9397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) relative_path, false /*auto*/); 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_id = id; 942a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Update the device name and add the gallery again. 947a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("AutoGallery2"); 948a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) id = AddGalleryWithNameV1(info.device_id(), gallery_name, relative_path, 949a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false /*auto*/); 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(auto_id, id); 951a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, info.device_id(), relative_path, 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, MultipleGalleriesPerDevices) { 9572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 9582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 9592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a regular gallery 9635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_user"); 96490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 965a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewUserGallery"); 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefId user_added_id = 967a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryWithNameV1(info.device_id(), gallery_name, relative_path, 968a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) true /*user*/); 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, user_added_id); 970a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(user_added_id, gallery_name, info.device_id(), 9712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path, MediaGalleryPrefInfo::kUserAdded); 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Find it by device id and fail to find something related. 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefIdSet pref_id_set; 97690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_id_set = gallery_prefs()->LookUpGalleriesByDeviceId(info.device_id()); 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1U, pref_id_set.size()); 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(pref_id_set.find(user_added_id) != pref_id_set.end()); 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath( 9815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MakeMediaGalleriesTestingPath("new_user/foo"), &info, &relative_path); 98290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_id_set = gallery_prefs()->LookUpGalleriesByDeviceId(info.device_id()); 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0U, pref_id_set.size()); 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add some galleries on the same device. 9862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path = base::FilePath(FILE_PATH_LITERAL("path1/on/device1")); 987a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("Device1Path1"); 988c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string device_id = "path:device1"; 9897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId dev1_path1_id = AddGalleryWithNameV1( 990a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) device_id, gallery_name, relative_path, true /*user*/); 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 2UL, dev1_path1_id); 992a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(dev1_path1_id, gallery_name, device_id, relative_path, 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path = base::FilePath(FILE_PATH_LITERAL("path2/on/device1")); 997a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("Device1Path2"); 9987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId dev1_path2_id = AddGalleryWithNameV1( 999a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) device_id, gallery_name, relative_path, true /*user*/); 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 3UL, dev1_path2_id); 1001a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(dev1_path2_id, gallery_name, device_id, relative_path, 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path = base::FilePath(FILE_PATH_LITERAL("path1/on/device2")); 1006a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("Device2Path1"); 1007c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) device_id = "path:device2"; 10087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId dev2_path1_id = AddGalleryWithNameV1( 1009a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) device_id, gallery_name, relative_path, true /*user*/); 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 4UL, dev2_path1_id); 1011a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(dev2_path1_id, gallery_name, device_id, relative_path, 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path = base::FilePath(FILE_PATH_LITERAL("path2/on/device2")); 1016a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("Device2Path2"); 10177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId dev2_path2_id = AddGalleryWithNameV1( 1018a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) device_id, gallery_name, relative_path, true /*user*/); 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 5UL, dev2_path2_id); 1020a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(dev2_path2_id, gallery_name, device_id, relative_path, 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that adding one of them again works as expected. 10257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId id = AddGalleryWithNameV1( 1026a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) device_id, gallery_name, relative_path, true /*user*/); 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dev2_path2_id, id); 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Verify(); 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, GalleryChangeObserver) { 10322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Start with one observer. 10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockGalleryChangeObserver observer1(gallery_prefs()); 10342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gallery_prefs()->AddGalleryChangeObserver(&observer1); 10352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add a new auto detected gallery. 10375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath path = MakeMediaGalleriesTestingPath("new_auto"); 10382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StorageInfo info; 10392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath relative_path; 104090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 1041a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 10427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId auto_id = AddGalleryWithNameV1( 1043a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) info.device_id(), gallery_name, relative_path, false /*auto*/); 10442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, auto_id); 1045a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(auto_id, gallery_name, info.device_id(), 10462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path, MediaGalleryPrefInfo::kAutoDetected); 10472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, observer1.notifications()); 10482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add a second observer. 10502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockGalleryChangeObserver observer2(gallery_prefs()); 10512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gallery_prefs()->AddGalleryChangeObserver(&observer2); 10522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add a new user added gallery. 10545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_user"); 105590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 1056a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gallery_name = base::ASCIIToUTF16("NewUserGallery"); 10572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleryPrefId user_added_id = 1058a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryWithNameV1(info.device_id(), gallery_name, relative_path, 1059a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) true /*user*/); 1060a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddGalleryExpectation(user_added_id, gallery_name, info.device_id(), 10612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) relative_path, MediaGalleryPrefInfo::kUserAdded); 10622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(default_galleries_count() + 2UL, user_added_id); 10632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, observer1.notifications()); 10642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, observer2.notifications()); 10652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Remove the first observer. 10672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gallery_prefs()->RemoveGalleryChangeObserver(&observer1); 10682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Remove an auto added gallery (i.e. make it blacklisted). 10702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gallery_prefs()->ForgetGalleryById(auto_id); 10712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected_galleries_[auto_id].type = MediaGalleryPrefInfo::kBlackListed; 10722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected_galleries_for_all.erase(auto_id); 10732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, observer1.notifications()); 10752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, observer2.notifications()); 10762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Remove a user added gallery and it should go away. 10782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gallery_prefs()->ForgetGalleryById(user_added_id); 10792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected_galleries_.erase(user_added_id); 108090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) expected_device_map[info.device_id()].erase(user_added_id); 10812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, observer1.notifications()); 10832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(3, observer2.notifications()); 10842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, UpdateSingletonDeviceIdType) { 10877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefId id; 10887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::FilePath path; 10897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Verify(); 10907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Add a new auto detect gallery to test with. 10925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto"); 1093a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 1094f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string device_id = StorageInfo::MakeDeviceId(StorageInfo::ITUNES, 1095f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) path.AsUTF8Unsafe()); 1096f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) id = AddGalleryWithNameV2(device_id, gallery_name, base::FilePath(), 10975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 10987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 1099f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, device_id, base::FilePath(), 11007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 11017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Verify(); 11027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Update the device id. 11047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MockGalleryChangeObserver observer(gallery_prefs()); 11057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) gallery_prefs()->AddGalleryChangeObserver(&observer); 11067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("updated_path"); 11087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) std::string updated_device_id = 11097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StorageInfo::MakeDeviceId(StorageInfo::ITUNES, path.AsUTF8Unsafe()); 11107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_TRUE(UpdateDeviceIDForSingletonType(updated_device_id)); 1111f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, updated_device_id, base::FilePath(), 11127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 1113f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) expected_device_map[device_id].erase(id); 11147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) expected_device_map[updated_device_id].insert(id); 11157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Verify(); 11167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(1, observer.notifications()); 11177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // No gallery for type. 11197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) std::string new_device_id = 11207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StorageInfo::MakeDeviceId(StorageInfo::PICASA, path.AsUTF8Unsafe()); 11217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_FALSE(UpdateDeviceIDForSingletonType(new_device_id)); 11227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 11237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 1124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, LookupImportedGalleryByPath) { 1125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MediaGalleryPrefId id; 1126f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::FilePath path; 1127f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Verify(); 1128f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1129f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // iTunes device path points to an XML file in the library directory. 1130f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_auto").AppendASCII("library.xml"); 1131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::string16 gallery_name = base::ASCIIToUTF16("NewAutoGallery"); 1132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string device_id = StorageInfo::MakeDeviceId(StorageInfo::ITUNES, 1133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) path.AsUTF8Unsafe()); 1134f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) id = AddGalleryWithNameV2(device_id, gallery_name, base::FilePath(), 1135f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 1136f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 1137f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AddGalleryExpectation(id, gallery_name, device_id, base::FilePath(), 1138f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MediaGalleryPrefInfo::kAutoDetected); 1139f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Verify(); 1140f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1141f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Verify we can look up the imported gallery by its path. 1142f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MediaGalleryPrefInfo gallery_info; 1143f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(gallery_prefs()->LookUpGalleryByPath(path.DirName(), 1144f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &gallery_info)); 1145f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(id, gallery_info.pref_id); 1146f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 1147f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 11485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(MediaGalleriesPreferencesTest, ScanResults) { 11495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefId id; 11505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath path; 11515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StorageInfo info; 11525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath relative_path; 11535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Time now = base::Time::Now(); 11545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 11555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add a new scan result gallery to test with. 11575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) path = MakeMediaGalleriesTestingPath("new_scan"); 11585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path); 11595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) id = gallery_prefs()->AddGallery(info.device_id(), relative_path, 11605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult, 11615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("volume label"), 11625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("vendor name"), 11635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("model name"), 11645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1000000ULL, now, 1, 2, 3); 11655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 11665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddScanResultExpectation(id, base::string16(), info.device_id(), 11675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) relative_path, 1, 2, 3); 11685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 11695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Update the found media count. 11715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) id = gallery_prefs()->AddGallery(info.device_id(), relative_path, 11725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult, 11735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("volume label"), 11745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("vendor name"), 11755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("model name"), 11765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1000000ULL, now, 4, 5, 6); 11775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 11785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddScanResultExpectation(id, base::string16(), info.device_id(), 11795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) relative_path, 4, 5, 6); 11805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 11815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Remove a scan result (i.e. make it blacklisted). 11835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gallery_prefs()->ForgetGalleryById(id); 11845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[id].type = MediaGalleryPrefInfo::kRemovedScan; 11855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[id].audio_count = 0; 11865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[id].image_count = 0; 11875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) expected_galleries_[id].video_count = 0; 11885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 11895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Try adding the gallery again as a scan result it should be a no-op. 11915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) id = gallery_prefs()->AddGallery(info.device_id(), relative_path, 11925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kScanResult, 11935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("volume label"), 11945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("vendor name"), 11955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASCIIToUTF16("model name"), 11965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1000000ULL, now, 7, 8, 9); 11975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 11985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 11995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 12005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Add the gallery again as a user action. 12015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) id = gallery_prefs()->AddGalleryByPath(path, 12025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 12035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(default_galleries_count() + 1UL, id); 12045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AddGalleryExpectation(id, base::string16(), info.device_id(), relative_path, 12055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MediaGalleryPrefInfo::kUserAdded); 12065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Verify(); 12075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 12085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 12095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(MediaGalleriesPrefInfoTest, NameGeneration) { 1210d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ASSERT_TRUE(TestStorageMonitor::CreateAndInstall()); 1211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1212eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MediaGalleryPrefInfo info; 1213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.pref_id = 1; 1214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.display_name = ASCIIToUTF16("override"); 1215eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.device_id = StorageInfo::MakeDeviceId( 1216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch StorageInfo::REMOVABLE_MASS_STORAGE_WITH_DCIM, "unique"); 1217eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1218eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("override"), info.GetGalleryDisplayName()); 1219eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1220eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.display_name = ASCIIToUTF16("o2"); 1221eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("o2"), info.GetGalleryDisplayName()); 1222eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1223eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(l10n_util::GetStringUTF16( 1224eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_MEDIA_GALLERIES_DIALOG_DEVICE_NOT_ATTACHED), 1225eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.GetGalleryAdditionalDetails()); 1226eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1227eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.last_attach_time = base::Time::Now(); 1228eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_NE(l10n_util::GetStringUTF16( 1229eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_MEDIA_GALLERIES_DIALOG_DEVICE_NOT_ATTACHED), 1230eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.GetGalleryAdditionalDetails()); 1231eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_NE(l10n_util::GetStringUTF16( 1232eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_MEDIA_GALLERIES_DIALOG_DEVICE_ATTACHED), 1233eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.GetGalleryAdditionalDetails()); 1234eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1235eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.volume_label = ASCIIToUTF16("vol"); 1236eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.vendor_name = ASCIIToUTF16("vendor"); 1237eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.model_name = ASCIIToUTF16("model"); 1238eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("o2"), info.GetGalleryDisplayName()); 1239eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1240a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) info.display_name = base::string16(); 1241eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("vol"), info.GetGalleryDisplayName()); 1242a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) info.volume_label = base::string16(); 1243eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("vendor, model"), info.GetGalleryDisplayName()); 1244eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1245eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch info.device_id = StorageInfo::MakeDeviceId( 1246eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch StorageInfo::FIXED_MASS_STORAGE, "unique"); 1247eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("unique")).AsUTF8Unsafe(), 12485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF16ToUTF8(info.GetGalleryTooltip())); 12493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 12505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TestStorageMonitor::Destroy(); 1251eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 1252