OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/file_system_provider/service.h" | 5 #include "chrome/browser/chromeos/file_system_provider/service.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 extensions::Extension::NO_FLAGS, | 97 extensions::Extension::NO_FLAGS, |
98 extension_id, | 98 extension_id, |
99 &error); | 99 &error); |
100 } | 100 } |
101 | 101 |
102 // Stores a provided file system information in preferences. | 102 // Stores a provided file system information in preferences. |
103 void RememberFakeFileSystem(TestingProfile* profile, | 103 void RememberFakeFileSystem(TestingProfile* profile, |
104 const std::string& extension_id, | 104 const std::string& extension_id, |
105 const std::string& file_system_id, | 105 const std::string& file_system_id, |
106 const std::string& display_name, | 106 const std::string& display_name, |
107 bool writable) { | 107 bool writable, |
| 108 bool supports_notify_tag) { |
108 TestingPrefServiceSyncable* const pref_service = | 109 TestingPrefServiceSyncable* const pref_service = |
109 profile->GetTestingPrefService(); | 110 profile->GetTestingPrefService(); |
110 ASSERT_TRUE(pref_service); | 111 ASSERT_TRUE(pref_service); |
111 | 112 |
112 base::DictionaryValue extensions; | 113 base::DictionaryValue extensions; |
113 base::DictionaryValue* file_systems = new base::DictionaryValue(); | 114 base::DictionaryValue* file_systems = new base::DictionaryValue(); |
114 base::DictionaryValue* file_system = new base::DictionaryValue(); | 115 base::DictionaryValue* file_system = new base::DictionaryValue(); |
115 file_system->SetStringWithoutPathExpansion(kPrefKeyFileSystemId, | 116 file_system->SetStringWithoutPathExpansion(kPrefKeyFileSystemId, |
116 kFileSystemId); | 117 kFileSystemId); |
117 file_system->SetStringWithoutPathExpansion(kPrefKeyDisplayName, kDisplayName); | 118 file_system->SetStringWithoutPathExpansion(kPrefKeyDisplayName, kDisplayName); |
118 file_system->SetBooleanWithoutPathExpansion(kPrefKeyWritable, writable); | 119 file_system->SetBooleanWithoutPathExpansion(kPrefKeyWritable, writable); |
| 120 file_system->SetBooleanWithoutPathExpansion(kPrefKeySupportsNotifyTag, |
| 121 supports_notify_tag); |
119 file_systems->SetWithoutPathExpansion(kFileSystemId, file_system); | 122 file_systems->SetWithoutPathExpansion(kFileSystemId, file_system); |
120 extensions.SetWithoutPathExpansion(kExtensionId, file_systems); | 123 extensions.SetWithoutPathExpansion(kExtensionId, file_systems); |
121 | 124 |
122 pref_service->Set(prefs::kFileSystemProviderMounted, extensions); | 125 pref_service->Set(prefs::kFileSystemProviderMounted, extensions); |
123 } | 126 } |
124 | 127 |
125 } // namespace | 128 } // namespace |
126 | 129 |
127 class FileSystemProviderServiceTest : public testing::Test { | 130 class FileSystemProviderServiceTest : public testing::Test { |
128 protected: | 131 protected: |
(...skipping 23 matching lines...) Expand all Loading... |
152 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; | 155 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; |
153 scoped_ptr<extensions::ExtensionRegistry> extension_registry_; | 156 scoped_ptr<extensions::ExtensionRegistry> extension_registry_; |
154 scoped_ptr<Service> service_; | 157 scoped_ptr<Service> service_; |
155 scoped_refptr<extensions::Extension> extension_; | 158 scoped_refptr<extensions::Extension> extension_; |
156 }; | 159 }; |
157 | 160 |
158 TEST_F(FileSystemProviderServiceTest, MountFileSystem) { | 161 TEST_F(FileSystemProviderServiceTest, MountFileSystem) { |
159 LoggingObserver observer; | 162 LoggingObserver observer; |
160 service_->AddObserver(&observer); | 163 service_->AddObserver(&observer); |
161 | 164 |
162 EXPECT_TRUE(service_->MountFileSystem( | 165 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
163 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 166 kFileSystemId, |
| 167 kDisplayName, |
| 168 false /* writable */, |
| 169 false /* supports_notify_tag */)); |
164 | 170 |
165 ASSERT_EQ(1u, observer.mounts.size()); | 171 ASSERT_EQ(1u, observer.mounts.size()); |
166 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); | 172 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); |
167 EXPECT_EQ(kFileSystemId, | 173 EXPECT_EQ(kFileSystemId, |
168 observer.mounts[0].file_system_info().file_system_id()); | 174 observer.mounts[0].file_system_info().file_system_id()); |
169 base::FilePath expected_mount_path = | 175 base::FilePath expected_mount_path = |
170 util::GetMountPath(profile_, kExtensionId, kFileSystemId); | 176 util::GetMountPath(profile_, kExtensionId, kFileSystemId); |
171 EXPECT_EQ(expected_mount_path.AsUTF8Unsafe(), | 177 EXPECT_EQ(expected_mount_path.AsUTF8Unsafe(), |
172 observer.mounts[0].file_system_info().mount_path().AsUTF8Unsafe()); | 178 observer.mounts[0].file_system_info().mount_path().AsUTF8Unsafe()); |
173 EXPECT_EQ(kDisplayName, observer.mounts[0].file_system_info().display_name()); | 179 EXPECT_EQ(kDisplayName, observer.mounts[0].file_system_info().display_name()); |
174 EXPECT_FALSE(observer.mounts[0].file_system_info().writable()); | 180 EXPECT_FALSE(observer.mounts[0].file_system_info().writable()); |
| 181 EXPECT_FALSE(observer.mounts[0].file_system_info().supports_notify_tag()); |
175 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); | 182 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); |
176 ASSERT_EQ(0u, observer.unmounts.size()); | 183 ASSERT_EQ(0u, observer.unmounts.size()); |
177 | 184 |
178 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 185 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
179 service_->GetProvidedFileSystemInfoList(); | 186 service_->GetProvidedFileSystemInfoList(); |
180 ASSERT_EQ(1u, file_system_info_list.size()); | 187 ASSERT_EQ(1u, file_system_info_list.size()); |
181 | 188 |
182 service_->RemoveObserver(&observer); | 189 service_->RemoveObserver(&observer); |
183 } | 190 } |
184 | 191 |
185 TEST_F(FileSystemProviderServiceTest, MountFileSystem_Writable) { | 192 TEST_F(FileSystemProviderServiceTest, |
| 193 MountFileSystem_WritableAndSupportsNotifyTag) { |
186 LoggingObserver observer; | 194 LoggingObserver observer; |
187 service_->AddObserver(&observer); | 195 service_->AddObserver(&observer); |
188 | 196 |
189 EXPECT_TRUE(service_->MountFileSystem( | 197 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
190 kExtensionId, kFileSystemId, kDisplayName, true /* writable */)); | 198 kFileSystemId, |
| 199 kDisplayName, |
| 200 true /* writable */, |
| 201 true /* supports_notify_tag */)); |
191 | 202 |
192 ASSERT_EQ(1u, observer.mounts.size()); | 203 ASSERT_EQ(1u, observer.mounts.size()); |
193 EXPECT_TRUE(observer.mounts[0].file_system_info().writable()); | 204 EXPECT_TRUE(observer.mounts[0].file_system_info().writable()); |
| 205 EXPECT_TRUE(observer.mounts[0].file_system_info().supports_notify_tag()); |
194 ASSERT_EQ(0u, observer.unmounts.size()); | 206 ASSERT_EQ(0u, observer.unmounts.size()); |
195 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 207 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
196 service_->GetProvidedFileSystemInfoList(); | 208 service_->GetProvidedFileSystemInfoList(); |
197 ASSERT_EQ(1u, file_system_info_list.size()); | 209 ASSERT_EQ(1u, file_system_info_list.size()); |
198 | 210 |
199 service_->RemoveObserver(&observer); | 211 service_->RemoveObserver(&observer); |
200 } | 212 } |
201 | 213 |
202 TEST_F(FileSystemProviderServiceTest, MountFileSystem_UniqueIds) { | 214 TEST_F(FileSystemProviderServiceTest, MountFileSystem_UniqueIds) { |
203 LoggingObserver observer; | 215 LoggingObserver observer; |
204 service_->AddObserver(&observer); | 216 service_->AddObserver(&observer); |
205 | 217 |
206 EXPECT_TRUE(service_->MountFileSystem( | 218 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
207 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 219 kFileSystemId, |
208 EXPECT_FALSE(service_->MountFileSystem( | 220 kDisplayName, |
209 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 221 false /* writable */, |
| 222 false /* supports_notify_tag */)); |
| 223 EXPECT_FALSE(service_->MountFileSystem(kExtensionId, |
| 224 kFileSystemId, |
| 225 kDisplayName, |
| 226 false /* writable */, |
| 227 false /* supports_notify_tag */)); |
210 | 228 |
211 ASSERT_EQ(2u, observer.mounts.size()); | 229 ASSERT_EQ(2u, observer.mounts.size()); |
212 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); | 230 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); |
213 EXPECT_EQ(base::File::FILE_ERROR_EXISTS, observer.mounts[1].error()); | 231 EXPECT_EQ(base::File::FILE_ERROR_EXISTS, observer.mounts[1].error()); |
214 | 232 |
215 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 233 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
216 service_->GetProvidedFileSystemInfoList(); | 234 service_->GetProvidedFileSystemInfoList(); |
217 ASSERT_EQ(1u, file_system_info_list.size()); | 235 ASSERT_EQ(1u, file_system_info_list.size()); |
218 | 236 |
219 service_->RemoveObserver(&observer); | 237 service_->RemoveObserver(&observer); |
220 } | 238 } |
221 | 239 |
222 TEST_F(FileSystemProviderServiceTest, MountFileSystem_StressTest) { | 240 TEST_F(FileSystemProviderServiceTest, MountFileSystem_StressTest) { |
223 LoggingObserver observer; | 241 LoggingObserver observer; |
224 service_->AddObserver(&observer); | 242 service_->AddObserver(&observer); |
225 | 243 |
226 const size_t kMaxFileSystems = 16; | 244 const size_t kMaxFileSystems = 16; |
227 for (size_t i = 0; i < kMaxFileSystems; ++i) { | 245 for (size_t i = 0; i < kMaxFileSystems; ++i) { |
228 const std::string file_system_id = | 246 const std::string file_system_id = |
229 std::string("test-") + base::IntToString(i); | 247 std::string("test-") + base::IntToString(i); |
230 EXPECT_TRUE(service_->MountFileSystem( | 248 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
231 kExtensionId, file_system_id, kDisplayName, false /* writable */)); | 249 file_system_id, |
| 250 kDisplayName, |
| 251 false /* writable */, |
| 252 false /* supports_notify_tag */)); |
232 } | 253 } |
233 ASSERT_EQ(kMaxFileSystems, observer.mounts.size()); | 254 ASSERT_EQ(kMaxFileSystems, observer.mounts.size()); |
234 | 255 |
235 // The next file system is out of limit, and registering it should fail. | 256 // The next file system is out of limit, and registering it should fail. |
236 EXPECT_FALSE(service_->MountFileSystem( | 257 EXPECT_FALSE(service_->MountFileSystem(kExtensionId, |
237 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 258 kFileSystemId, |
| 259 kDisplayName, |
| 260 false /* writable */, |
| 261 false /* supports_notify_tag */)); |
238 | 262 |
239 ASSERT_EQ(kMaxFileSystems + 1, observer.mounts.size()); | 263 ASSERT_EQ(kMaxFileSystems + 1, observer.mounts.size()); |
240 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, | 264 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, |
241 observer.mounts[kMaxFileSystems].error()); | 265 observer.mounts[kMaxFileSystems].error()); |
242 | 266 |
243 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 267 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
244 service_->GetProvidedFileSystemInfoList(); | 268 service_->GetProvidedFileSystemInfoList(); |
245 ASSERT_EQ(kMaxFileSystems, file_system_info_list.size()); | 269 ASSERT_EQ(kMaxFileSystems, file_system_info_list.size()); |
246 | 270 |
247 service_->RemoveObserver(&observer); | 271 service_->RemoveObserver(&observer); |
248 } | 272 } |
249 | 273 |
250 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem) { | 274 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem) { |
251 LoggingObserver observer; | 275 LoggingObserver observer; |
252 service_->AddObserver(&observer); | 276 service_->AddObserver(&observer); |
253 | 277 |
254 EXPECT_TRUE(service_->MountFileSystem( | 278 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
255 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 279 kFileSystemId, |
| 280 kDisplayName, |
| 281 false /* writable */, |
| 282 false /* supports_notify_tag */)); |
256 ASSERT_EQ(1u, observer.mounts.size()); | 283 ASSERT_EQ(1u, observer.mounts.size()); |
257 | 284 |
258 EXPECT_TRUE(service_->UnmountFileSystem( | 285 EXPECT_TRUE(service_->UnmountFileSystem( |
259 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); | 286 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); |
260 ASSERT_EQ(1u, observer.unmounts.size()); | 287 ASSERT_EQ(1u, observer.unmounts.size()); |
261 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); | 288 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); |
262 | 289 |
263 EXPECT_EQ(kExtensionId, | 290 EXPECT_EQ(kExtensionId, |
264 observer.unmounts[0].file_system_info().extension_id()); | 291 observer.unmounts[0].file_system_info().extension_id()); |
265 EXPECT_EQ(kFileSystemId, | 292 EXPECT_EQ(kFileSystemId, |
266 observer.unmounts[0].file_system_info().file_system_id()); | 293 observer.unmounts[0].file_system_info().file_system_id()); |
267 | 294 |
268 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 295 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
269 service_->GetProvidedFileSystemInfoList(); | 296 service_->GetProvidedFileSystemInfoList(); |
270 ASSERT_EQ(0u, file_system_info_list.size()); | 297 ASSERT_EQ(0u, file_system_info_list.size()); |
271 | 298 |
272 service_->RemoveObserver(&observer); | 299 service_->RemoveObserver(&observer); |
273 } | 300 } |
274 | 301 |
275 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_OnExtensionUnload) { | 302 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_OnExtensionUnload) { |
276 LoggingObserver observer; | 303 LoggingObserver observer; |
277 service_->AddObserver(&observer); | 304 service_->AddObserver(&observer); |
278 | 305 |
279 EXPECT_TRUE(service_->MountFileSystem( | 306 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
280 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 307 kFileSystemId, |
| 308 kDisplayName, |
| 309 false /* writable */, |
| 310 false /* supports_notify_tag */)); |
281 ASSERT_EQ(1u, observer.mounts.size()); | 311 ASSERT_EQ(1u, observer.mounts.size()); |
282 | 312 |
283 // Directly call the observer's method. | 313 // Directly call the observer's method. |
284 service_->OnExtensionUnloaded( | 314 service_->OnExtensionUnloaded( |
285 profile_, | 315 profile_, |
286 extension_.get(), | 316 extension_.get(), |
287 extensions::UnloadedExtensionInfo::REASON_DISABLE); | 317 extensions::UnloadedExtensionInfo::REASON_DISABLE); |
288 | 318 |
289 ASSERT_EQ(1u, observer.unmounts.size()); | 319 ASSERT_EQ(1u, observer.unmounts.size()); |
290 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); | 320 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); |
291 | 321 |
292 EXPECT_EQ(kExtensionId, | 322 EXPECT_EQ(kExtensionId, |
293 observer.unmounts[0].file_system_info().extension_id()); | 323 observer.unmounts[0].file_system_info().extension_id()); |
294 EXPECT_EQ(kFileSystemId, | 324 EXPECT_EQ(kFileSystemId, |
295 observer.unmounts[0].file_system_info().file_system_id()); | 325 observer.unmounts[0].file_system_info().file_system_id()); |
296 | 326 |
297 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 327 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
298 service_->GetProvidedFileSystemInfoList(); | 328 service_->GetProvidedFileSystemInfoList(); |
299 ASSERT_EQ(0u, file_system_info_list.size()); | 329 ASSERT_EQ(0u, file_system_info_list.size()); |
300 | 330 |
301 service_->RemoveObserver(&observer); | 331 service_->RemoveObserver(&observer); |
302 } | 332 } |
303 | 333 |
304 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_WrongExtensionId) { | 334 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_WrongExtensionId) { |
305 LoggingObserver observer; | 335 LoggingObserver observer; |
306 service_->AddObserver(&observer); | 336 service_->AddObserver(&observer); |
307 | 337 |
308 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe"; | 338 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe"; |
309 | 339 |
310 EXPECT_TRUE(service_->MountFileSystem( | 340 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
311 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 341 kFileSystemId, |
| 342 kDisplayName, |
| 343 false /* writable */, |
| 344 false /* supports_notify_tag */)); |
312 ASSERT_EQ(1u, observer.mounts.size()); | 345 ASSERT_EQ(1u, observer.mounts.size()); |
313 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); | 346 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); |
314 | 347 |
315 EXPECT_FALSE(service_->UnmountFileSystem( | 348 EXPECT_FALSE(service_->UnmountFileSystem( |
316 kWrongExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); | 349 kWrongExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); |
317 ASSERT_EQ(1u, observer.unmounts.size()); | 350 ASSERT_EQ(1u, observer.unmounts.size()); |
318 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, observer.unmounts[0].error()); | 351 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, observer.unmounts[0].error()); |
319 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); | 352 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); |
320 | 353 |
321 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 354 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
322 service_->GetProvidedFileSystemInfoList(); | 355 service_->GetProvidedFileSystemInfoList(); |
323 ASSERT_EQ(1u, file_system_info_list.size()); | 356 ASSERT_EQ(1u, file_system_info_list.size()); |
324 | 357 |
325 service_->RemoveObserver(&observer); | 358 service_->RemoveObserver(&observer); |
326 } | 359 } |
327 | 360 |
328 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { | 361 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { |
329 // Create a fake entry in the preferences. | 362 // Create a fake entry in the preferences. |
330 RememberFakeFileSystem( | 363 RememberFakeFileSystem(profile_, |
331 profile_, kExtensionId, kFileSystemId, kDisplayName, true /* writable */); | 364 kExtensionId, |
| 365 kFileSystemId, |
| 366 kDisplayName, |
| 367 true /* writable */, |
| 368 true /* supports_notify_tag */); |
332 | 369 |
333 // Create a new service instance in order to load remembered file systems | 370 // Create a new service instance in order to load remembered file systems |
334 // from preferences. | 371 // from preferences. |
335 scoped_ptr<Service> new_service( | 372 scoped_ptr<Service> new_service( |
336 new Service(profile_, extension_registry_.get())); | 373 new Service(profile_, extension_registry_.get())); |
337 LoggingObserver observer; | 374 LoggingObserver observer; |
338 new_service->AddObserver(&observer); | 375 new_service->AddObserver(&observer); |
339 | 376 |
340 new_service->SetFileSystemFactoryForTesting( | 377 new_service->SetFileSystemFactoryForTesting( |
341 base::Bind(&FakeProvidedFileSystem::Create)); | 378 base::Bind(&FakeProvidedFileSystem::Create)); |
342 | 379 |
343 EXPECT_EQ(0u, observer.mounts.size()); | 380 EXPECT_EQ(0u, observer.mounts.size()); |
344 | 381 |
345 // Directly call the observer's method. | 382 // Directly call the observer's method. |
346 new_service->OnExtensionLoaded(profile_, extension_.get()); | 383 new_service->OnExtensionLoaded(profile_, extension_.get()); |
347 | 384 |
348 ASSERT_EQ(1u, observer.mounts.size()); | 385 ASSERT_EQ(1u, observer.mounts.size()); |
349 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); | 386 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); |
350 | 387 |
351 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); | 388 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); |
352 EXPECT_EQ(kFileSystemId, | 389 EXPECT_EQ(kFileSystemId, |
353 observer.mounts[0].file_system_info().file_system_id()); | 390 observer.mounts[0].file_system_info().file_system_id()); |
354 EXPECT_TRUE(observer.mounts[0].file_system_info().writable()); | 391 EXPECT_TRUE(observer.mounts[0].file_system_info().writable()); |
| 392 EXPECT_TRUE(observer.mounts[0].file_system_info().supports_notify_tag()); |
355 | 393 |
356 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 394 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
357 new_service->GetProvidedFileSystemInfoList(); | 395 new_service->GetProvidedFileSystemInfoList(); |
358 ASSERT_EQ(1u, file_system_info_list.size()); | 396 ASSERT_EQ(1u, file_system_info_list.size()); |
359 | 397 |
360 new_service->RemoveObserver(&observer); | 398 new_service->RemoveObserver(&observer); |
361 } | 399 } |
362 | 400 |
363 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { | 401 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { |
364 LoggingObserver observer; | 402 LoggingObserver observer; |
365 service_->AddObserver(&observer); | 403 service_->AddObserver(&observer); |
366 | 404 |
367 EXPECT_TRUE(service_->MountFileSystem( | 405 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
368 kExtensionId, kFileSystemId, kDisplayName, true /* writable */)); | 406 kFileSystemId, |
| 407 kDisplayName, |
| 408 true /* writable */, |
| 409 true /* supports_notify_tag */)); |
369 ASSERT_EQ(1u, observer.mounts.size()); | 410 ASSERT_EQ(1u, observer.mounts.size()); |
370 | 411 |
371 TestingPrefServiceSyncable* const pref_service = | 412 TestingPrefServiceSyncable* const pref_service = |
372 profile_->GetTestingPrefService(); | 413 profile_->GetTestingPrefService(); |
373 ASSERT_TRUE(pref_service); | 414 ASSERT_TRUE(pref_service); |
374 | 415 |
375 const base::DictionaryValue* const extensions = | 416 const base::DictionaryValue* const extensions = |
376 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); | 417 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); |
377 ASSERT_TRUE(extensions); | 418 ASSERT_TRUE(extensions); |
378 | 419 |
(...skipping 16 matching lines...) Expand all Loading... |
395 std::string display_name; | 436 std::string display_name; |
396 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyDisplayName, | 437 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyDisplayName, |
397 &display_name)); | 438 &display_name)); |
398 EXPECT_EQ(kDisplayName, display_name); | 439 EXPECT_EQ(kDisplayName, display_name); |
399 | 440 |
400 bool writable = false; | 441 bool writable = false; |
401 EXPECT_TRUE( | 442 EXPECT_TRUE( |
402 file_system->GetBooleanWithoutPathExpansion(kPrefKeyWritable, &writable)); | 443 file_system->GetBooleanWithoutPathExpansion(kPrefKeyWritable, &writable)); |
403 EXPECT_TRUE(writable); | 444 EXPECT_TRUE(writable); |
404 | 445 |
| 446 bool supports_notify_tag = false; |
| 447 EXPECT_TRUE(file_system->GetBooleanWithoutPathExpansion( |
| 448 kPrefKeySupportsNotifyTag, &supports_notify_tag)); |
| 449 EXPECT_TRUE(supports_notify_tag); |
| 450 |
405 service_->RemoveObserver(&observer); | 451 service_->RemoveObserver(&observer); |
406 } | 452 } |
407 | 453 |
408 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) { | 454 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) { |
409 LoggingObserver observer; | 455 LoggingObserver observer; |
410 service_->AddObserver(&observer); | 456 service_->AddObserver(&observer); |
411 | 457 |
412 TestingPrefServiceSyncable* const pref_service = | 458 TestingPrefServiceSyncable* const pref_service = |
413 profile_->GetTestingPrefService(); | 459 profile_->GetTestingPrefService(); |
414 ASSERT_TRUE(pref_service); | 460 ASSERT_TRUE(pref_service); |
415 | 461 |
416 { | 462 { |
417 EXPECT_TRUE(service_->MountFileSystem( | 463 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
418 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 464 kFileSystemId, |
| 465 kDisplayName, |
| 466 false /* writable */, |
| 467 false /* supports_notify_tag */)); |
419 ASSERT_EQ(1u, observer.mounts.size()); | 468 ASSERT_EQ(1u, observer.mounts.size()); |
420 | 469 |
421 const base::DictionaryValue* extensions = | 470 const base::DictionaryValue* extensions = |
422 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); | 471 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); |
423 ASSERT_TRUE(extensions); | 472 ASSERT_TRUE(extensions); |
424 | 473 |
425 const base::DictionaryValue* file_systems = NULL; | 474 const base::DictionaryValue* file_systems = NULL; |
426 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, | 475 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, |
427 &file_systems)); | 476 &file_systems)); |
428 EXPECT_EQ(1u, file_systems->size()); | 477 EXPECT_EQ(1u, file_systems->size()); |
(...skipping 18 matching lines...) Expand all Loading... |
447 | 496 |
448 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) { | 497 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) { |
449 LoggingObserver observer; | 498 LoggingObserver observer; |
450 service_->AddObserver(&observer); | 499 service_->AddObserver(&observer); |
451 | 500 |
452 TestingPrefServiceSyncable* const pref_service = | 501 TestingPrefServiceSyncable* const pref_service = |
453 profile_->GetTestingPrefService(); | 502 profile_->GetTestingPrefService(); |
454 ASSERT_TRUE(pref_service); | 503 ASSERT_TRUE(pref_service); |
455 | 504 |
456 { | 505 { |
457 EXPECT_TRUE(service_->MountFileSystem( | 506 EXPECT_TRUE(service_->MountFileSystem(kExtensionId, |
458 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); | 507 kFileSystemId, |
| 508 kDisplayName, |
| 509 false /* writable */, |
| 510 false /* supports_notify_tag */)); |
459 ASSERT_EQ(1u, observer.mounts.size()); | 511 ASSERT_EQ(1u, observer.mounts.size()); |
460 | 512 |
461 const base::DictionaryValue* extensions = | 513 const base::DictionaryValue* extensions = |
462 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); | 514 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); |
463 ASSERT_TRUE(extensions); | 515 ASSERT_TRUE(extensions); |
464 | 516 |
465 const base::DictionaryValue* file_systems = NULL; | 517 const base::DictionaryValue* file_systems = NULL; |
466 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, | 518 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, |
467 &file_systems)); | 519 &file_systems)); |
468 EXPECT_EQ(1u, file_systems->size()); | 520 EXPECT_EQ(1u, file_systems->size()); |
(...skipping 10 matching lines...) Expand all Loading... |
479 const base::DictionaryValue* file_systems = NULL; | 531 const base::DictionaryValue* file_systems = NULL; |
480 EXPECT_FALSE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, | 532 EXPECT_FALSE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, |
481 &file_systems)); | 533 &file_systems)); |
482 } | 534 } |
483 | 535 |
484 service_->RemoveObserver(&observer); | 536 service_->RemoveObserver(&observer); |
485 } | 537 } |
486 | 538 |
487 } // namespace file_system_provider | 539 } // namespace file_system_provider |
488 } // namespace chromeos | 540 } // namespace chromeos |
OLD | NEW |