Index: chrome/browser/chromeos/file_system_provider/service_unittest.cc |
diff --git a/chrome/browser/chromeos/file_system_provider/service_unittest.cc b/chrome/browser/chromeos/file_system_provider/service_unittest.cc |
index 91643d3d6adbbaca673b8a1d0d16731ab2d60d0a..4160b45880b7855cfad1dc32592c8598beba4829 100644 |
--- a/chrome/browser/chromeos/file_system_provider/service_unittest.cc |
+++ b/chrome/browser/chromeos/file_system_provider/service_unittest.cc |
@@ -83,7 +83,7 @@ class LoggingObserver : public Observer { |
}; |
// Creates a fake extension with the specified |extension_id|. |
-scoped_refptr<extensions::Extension> createFakeExtension( |
+scoped_refptr<extensions::Extension> CreateFakeExtension( |
const std::string& extension_id) { |
base::DictionaryValue manifest; |
std::string error; |
@@ -99,13 +99,15 @@ scoped_refptr<extensions::Extension> createFakeExtension( |
&error); |
} |
-// Stores a provided file system information in preferences. |
+// Stores a provided file system information in preferences together with a |
+// fake observed entry. |
void RememberFakeFileSystem(TestingProfile* profile, |
const std::string& extension_id, |
const std::string& file_system_id, |
const std::string& display_name, |
bool writable, |
- bool supports_notify_tag) { |
+ bool supports_notify_tag, |
+ const ObservedEntry& observed_entry) { |
TestingPrefServiceSyncable* const pref_service = |
profile->GetTestingPrefService(); |
ASSERT_TRUE(pref_service); |
@@ -122,6 +124,21 @@ void RememberFakeFileSystem(TestingProfile* profile, |
file_systems->SetWithoutPathExpansion(kFileSystemId, file_system); |
extensions.SetWithoutPathExpansion(kExtensionId, file_systems); |
+ // Remember observed entries. |
+ base::DictionaryValue* const observed_entries = new base::DictionaryValue(); |
+ file_system->SetWithoutPathExpansion(kPrefKeyObservedEntries, |
+ observed_entries); |
+ base::DictionaryValue* const observed_entry_value = |
+ new base::DictionaryValue(); |
+ observed_entries->SetWithoutPathExpansion(observed_entry.entry_path.value(), |
+ observed_entry_value); |
+ observed_entry_value->SetStringWithoutPathExpansion( |
+ kPrefKeyObservedEntryEntryPath, observed_entry.entry_path.value()); |
+ observed_entry_value->SetBooleanWithoutPathExpansion( |
+ kPrefKeyObservedEntryRecursive, observed_entry.recursive); |
+ observed_entry_value->SetStringWithoutPathExpansion( |
+ kPrefKeyObservedEntryLastTag, observed_entry.last_tag); |
+ |
pref_service->Set(prefs::kFileSystemProviderMounted, extensions); |
} |
@@ -145,7 +162,11 @@ class FileSystemProviderServiceTest : public testing::Test { |
service_.reset(new Service(profile_, extension_registry_.get())); |
service_->SetFileSystemFactoryForTesting( |
base::Bind(&FakeProvidedFileSystem::Create)); |
- extension_ = createFakeExtension(kExtensionId); |
+ extension_ = CreateFakeExtension(kExtensionId); |
+ fake_observed_entry_.entry_path = |
+ base::FilePath(FILE_PATH_LITERAL("/a/b/c")); |
+ fake_observed_entry_.recursive = true; |
+ fake_observed_entry_.last_tag = "hello-world"; |
} |
content::TestBrowserThreadBundle thread_bundle_; |
@@ -156,6 +177,7 @@ class FileSystemProviderServiceTest : public testing::Test { |
scoped_ptr<extensions::ExtensionRegistry> extension_registry_; |
scoped_ptr<Service> service_; |
scoped_refptr<extensions::Extension> extension_; |
+ ObservedEntry fake_observed_entry_; |
}; |
TEST_F(FileSystemProviderServiceTest, MountFileSystem) { |
@@ -340,7 +362,8 @@ TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { |
kFileSystemId, |
kDisplayName, |
true /* writable */, |
- true /* supports_notify_tag */); |
+ true /* supports_notify_tag */, |
+ fake_observed_entry_); |
// Create a new service instance in order to load remembered file systems |
// from preferences. |
@@ -370,18 +393,41 @@ TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { |
new_service->GetProvidedFileSystemInfoList(); |
ASSERT_EQ(1u, file_system_info_list.size()); |
+ ProvidedFileSystemInterface* const file_system = |
+ new_service->GetProvidedFileSystem(kExtensionId, kFileSystemId); |
+ ASSERT_TRUE(file_system); |
+ |
+ const ObservedEntries* const observed_entries = |
+ file_system->GetObservedEntries(); |
+ ASSERT_TRUE(observed_entries); |
+ ASSERT_EQ(1u, observed_entries->size()); |
+ |
+ const ObservedEntries::const_iterator restored_observed_entry_it = |
+ observed_entries->find(fake_observed_entry_.entry_path); |
+ ASSERT_NE(observed_entries->end(), restored_observed_entry_it); |
+ |
+ EXPECT_EQ(fake_observed_entry_.entry_path, |
+ restored_observed_entry_it->second.entry_path); |
+ EXPECT_EQ(fake_observed_entry_.recursive, |
+ restored_observed_entry_it->second.recursive); |
+ EXPECT_EQ(fake_observed_entry_.last_tag, |
+ restored_observed_entry_it->second.last_tag); |
+ |
new_service->RemoveObserver(&observer); |
} |
-TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { |
- LoggingObserver observer; |
- service_->AddObserver(&observer); |
- |
+TEST_F(FileSystemProviderServiceTest, RememberFileSystem) { |
MountOptions options(kFileSystemId, kDisplayName); |
options.writable = true; |
options.supports_notify_tag = true; |
- EXPECT_TRUE(service_->MountFileSystem(kExtensionId, options)); |
- ASSERT_EQ(1u, observer.mounts.size()); |
+ |
+ ProvidedFileSystemInfo file_system_info( |
+ kExtensionId, options, base::FilePath(FILE_PATH_LITERAL("/a/b/c"))); |
+ |
+ ObservedEntries observed_entries; |
+ observed_entries[fake_observed_entry_.entry_path] = fake_observed_entry_; |
+ |
+ service_->RememberFileSystem(file_system_info, observed_entries); |
TestingPrefServiceSyncable* const pref_service = |
profile_->GetTestingPrefService(); |
@@ -422,6 +468,51 @@ TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { |
kPrefKeySupportsNotifyTag, &supports_notify_tag)); |
EXPECT_TRUE(supports_notify_tag); |
+ const base::DictionaryValue* observed_entries_value = NULL; |
+ ASSERT_TRUE(file_system->GetDictionaryWithoutPathExpansion( |
+ kPrefKeyObservedEntries, &observed_entries_value)); |
+ |
+ const base::DictionaryValue* observed_entry = NULL; |
+ ASSERT_TRUE(observed_entries_value->GetDictionaryWithoutPathExpansion( |
+ fake_observed_entry_.entry_path.value(), &observed_entry)); |
+ |
+ std::string entry_path; |
+ EXPECT_TRUE(observed_entry->GetStringWithoutPathExpansion( |
+ kPrefKeyObservedEntryEntryPath, &entry_path)); |
+ EXPECT_EQ(fake_observed_entry_.entry_path.value(), entry_path); |
+ |
+ bool recursive = false; |
+ EXPECT_TRUE(observed_entry->GetBooleanWithoutPathExpansion( |
+ kPrefKeyObservedEntryRecursive, &recursive)); |
+ EXPECT_EQ(fake_observed_entry_.recursive, recursive); |
+ |
+ std::string last_tag; |
+ EXPECT_TRUE(observed_entry->GetStringWithoutPathExpansion( |
+ kPrefKeyObservedEntryLastTag, &last_tag)); |
+ EXPECT_EQ(fake_observed_entry_.last_tag, last_tag); |
+} |
+ |
+TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { |
+ LoggingObserver observer; |
+ service_->AddObserver(&observer); |
+ |
+ TestingPrefServiceSyncable* const pref_service = |
+ profile_->GetTestingPrefService(); |
+ ASSERT_TRUE(pref_service); |
+ |
+ EXPECT_TRUE(service_->MountFileSystem( |
+ kExtensionId, MountOptions(kFileSystemId, kDisplayName))); |
+ ASSERT_EQ(1u, observer.mounts.size()); |
+ |
+ const base::DictionaryValue* extensions = |
+ pref_service->GetDictionary(prefs::kFileSystemProviderMounted); |
+ ASSERT_TRUE(extensions); |
+ |
+ const base::DictionaryValue* file_systems = NULL; |
+ ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, |
+ &file_systems)); |
+ EXPECT_EQ(1u, file_systems->size()); |
+ |
service_->RemoveObserver(&observer); |
} |