Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: chrome/browser/chromeos/file_system_provider/service_unittest.cc

Issue 674413002: [fsp] Rename ObserveEntry with AddWatcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // Fake implementation of the registry, since it's already tested separately. 85 // Fake implementation of the registry, since it's already tested separately.
86 // For simplicity it can remember at most only one file system. 86 // For simplicity it can remember at most only one file system.
87 class FakeRegistry : public RegistryInterface { 87 class FakeRegistry : public RegistryInterface {
88 public: 88 public:
89 FakeRegistry() {} 89 FakeRegistry() {}
90 virtual ~FakeRegistry() {} 90 virtual ~FakeRegistry() {}
91 91
92 // RegistryInterface overrides. 92 // RegistryInterface overrides.
93 virtual void RememberFileSystem( 93 virtual void RememberFileSystem(
94 const ProvidedFileSystemInfo& file_system_info, 94 const ProvidedFileSystemInfo& file_system_info,
95 const ObservedEntries& observed_entries) override { 95 const Watchers& watchers) override {
96 file_system_info_.reset(new ProvidedFileSystemInfo(file_system_info)); 96 file_system_info_.reset(new ProvidedFileSystemInfo(file_system_info));
97 observed_entries_.reset(new ObservedEntries(observed_entries)); 97 watchers_.reset(new Watchers(watchers));
98 } 98 }
99 99
100 virtual void ForgetFileSystem(const std::string& extension_id, 100 virtual void ForgetFileSystem(const std::string& extension_id,
101 const std::string& file_system_id) override { 101 const std::string& file_system_id) override {
102 if (!file_system_info_.get() || !observed_entries_.get()) 102 if (!file_system_info_.get() || !watchers_.get())
103 return; 103 return;
104 if (file_system_info_->extension_id() == extension_id && 104 if (file_system_info_->extension_id() == extension_id &&
105 file_system_info_->file_system_id() == file_system_id) { 105 file_system_info_->file_system_id() == file_system_id) {
106 file_system_info_.reset(); 106 file_system_info_.reset();
107 observed_entries_.reset(); 107 watchers_.reset();
108 } 108 }
109 } 109 }
110 110
111 virtual scoped_ptr<RestoredFileSystems> RestoreFileSystems( 111 virtual scoped_ptr<RestoredFileSystems> RestoreFileSystems(
112 const std::string& extension_id) override { 112 const std::string& extension_id) override {
113 scoped_ptr<RestoredFileSystems> result(new RestoredFileSystems); 113 scoped_ptr<RestoredFileSystems> result(new RestoredFileSystems);
114 114
115 if (file_system_info_.get() && observed_entries_.get()) { 115 if (file_system_info_.get() && watchers_.get()) {
116 RestoredFileSystem restored_file_system; 116 RestoredFileSystem restored_file_system;
117 restored_file_system.extension_id = file_system_info_->extension_id(); 117 restored_file_system.extension_id = file_system_info_->extension_id();
118 118
119 MountOptions options; 119 MountOptions options;
120 options.file_system_id = file_system_info_->file_system_id(); 120 options.file_system_id = file_system_info_->file_system_id();
121 options.display_name = file_system_info_->display_name(); 121 options.display_name = file_system_info_->display_name();
122 options.writable = file_system_info_->writable(); 122 options.writable = file_system_info_->writable();
123 options.supports_notify_tag = file_system_info_->supports_notify_tag(); 123 options.supports_notify_tag = file_system_info_->supports_notify_tag();
124 restored_file_system.options = options; 124 restored_file_system.options = options;
125 restored_file_system.observed_entries = *observed_entries_.get(); 125 restored_file_system.watchers = *watchers_.get();
126 126
127 result->push_back(restored_file_system); 127 result->push_back(restored_file_system);
128 } 128 }
129 129
130 return result; 130 return result;
131 } 131 }
132 132
133 virtual void UpdateObservedEntryTag( 133 virtual void UpdateWatcherTag(const ProvidedFileSystemInfo& file_system_info,
134 const ProvidedFileSystemInfo& file_system_info, 134 const Watcher& watcher) override {
135 const ObservedEntry& observed_entry) override { 135 ASSERT_TRUE(watchers_.get());
136 ASSERT_TRUE(observed_entries_.get()); 136 const Watchers::iterator it =
137 const ObservedEntries::iterator it = observed_entries_->find( 137 watchers_->find(WatcherKey(watcher.entry_path, watcher.recursive));
138 ObservedEntryKey(observed_entry.entry_path, observed_entry.recursive)); 138 ASSERT_NE(watchers_->end(), it);
139 ASSERT_NE(observed_entries_->end(), it); 139 it->second.last_tag = watcher.last_tag;
140 it->second.last_tag = observed_entry.last_tag;
141 } 140 }
142 141
143 ProvidedFileSystemInfo* const file_system_info() const { 142 ProvidedFileSystemInfo* const file_system_info() const {
144 return file_system_info_.get(); 143 return file_system_info_.get();
145 } 144 }
146 ObservedEntries* const observed_entries() const { 145 Watchers* const watchers() const { return watchers_.get(); }
147 return observed_entries_.get();
148 }
149 146
150 private: 147 private:
151 scoped_ptr<ProvidedFileSystemInfo> file_system_info_; 148 scoped_ptr<ProvidedFileSystemInfo> file_system_info_;
152 scoped_ptr<ObservedEntries> observed_entries_; 149 scoped_ptr<Watchers> watchers_;
153 150
154 DISALLOW_COPY_AND_ASSIGN(FakeRegistry); 151 DISALLOW_COPY_AND_ASSIGN(FakeRegistry);
155 }; 152 };
156 153
157 // Creates a fake extension with the specified |extension_id|. 154 // Creates a fake extension with the specified |extension_id|.
158 scoped_refptr<extensions::Extension> CreateFakeExtension( 155 scoped_refptr<extensions::Extension> CreateFakeExtension(
159 const std::string& extension_id) { 156 const std::string& extension_id) {
160 base::DictionaryValue manifest; 157 base::DictionaryValue manifest;
161 std::string error; 158 std::string error;
162 manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kVersion, 159 manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kVersion,
(...skipping 28 matching lines...) Expand all
191 188
192 service_.reset(new Service(profile_, extension_registry_.get())); 189 service_.reset(new Service(profile_, extension_registry_.get()));
193 service_->SetFileSystemFactoryForTesting( 190 service_->SetFileSystemFactoryForTesting(
194 base::Bind(&FakeProvidedFileSystem::Create)); 191 base::Bind(&FakeProvidedFileSystem::Create));
195 extension_ = CreateFakeExtension(kExtensionId); 192 extension_ = CreateFakeExtension(kExtensionId);
196 193
197 registry_ = new FakeRegistry; 194 registry_ = new FakeRegistry;
198 // Passes ownership to the service instance. 195 // Passes ownership to the service instance.
199 service_->SetRegistryForTesting(make_scoped_ptr(registry_)); 196 service_->SetRegistryForTesting(make_scoped_ptr(registry_));
200 197
201 fake_observed_entry_.entry_path = 198 fake_watcher_.entry_path = base::FilePath(FILE_PATH_LITERAL("/a/b/c"));
202 base::FilePath(FILE_PATH_LITERAL("/a/b/c")); 199 fake_watcher_.recursive = true;
203 fake_observed_entry_.recursive = true; 200 fake_watcher_.last_tag = "hello-world";
204 fake_observed_entry_.last_tag = "hello-world";
205 } 201 }
206 202
207 content::TestBrowserThreadBundle thread_bundle_; 203 content::TestBrowserThreadBundle thread_bundle_;
208 scoped_ptr<TestingProfileManager> profile_manager_; 204 scoped_ptr<TestingProfileManager> profile_manager_;
209 TestingProfile* profile_; 205 TestingProfile* profile_;
210 FakeUserManager* user_manager_; 206 FakeUserManager* user_manager_;
211 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; 207 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_;
212 scoped_ptr<extensions::ExtensionRegistry> extension_registry_; 208 scoped_ptr<extensions::ExtensionRegistry> extension_registry_;
213 scoped_ptr<Service> service_; 209 scoped_ptr<Service> service_;
214 scoped_refptr<extensions::Extension> extension_; 210 scoped_refptr<extensions::Extension> extension_;
215 FakeRegistry* registry_; // Owned by Service. 211 FakeRegistry* registry_; // Owned by Service.
216 ObservedEntry fake_observed_entry_; 212 Watcher fake_watcher_;
217 }; 213 };
218 214
219 TEST_F(FileSystemProviderServiceTest, MountFileSystem) { 215 TEST_F(FileSystemProviderServiceTest, MountFileSystem) {
220 LoggingObserver observer; 216 LoggingObserver observer;
221 service_->AddObserver(&observer); 217 service_->AddObserver(&observer);
222 218
223 EXPECT_TRUE(service_->MountFileSystem( 219 EXPECT_TRUE(service_->MountFileSystem(
224 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 220 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
225 221
226 ASSERT_EQ(1u, observer.mounts.size()); 222 ASSERT_EQ(1u, observer.mounts.size());
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 389
394 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { 390 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) {
395 LoggingObserver observer; 391 LoggingObserver observer;
396 service_->AddObserver(&observer); 392 service_->AddObserver(&observer);
397 393
398 // Remember a fake file system first in order to be able to restore it. 394 // Remember a fake file system first in order to be able to restore it.
399 MountOptions options(kFileSystemId, kDisplayName); 395 MountOptions options(kFileSystemId, kDisplayName);
400 options.supports_notify_tag = true; 396 options.supports_notify_tag = true;
401 ProvidedFileSystemInfo file_system_info( 397 ProvidedFileSystemInfo file_system_info(
402 kExtensionId, options, base::FilePath(FILE_PATH_LITERAL("/a/b/c"))); 398 kExtensionId, options, base::FilePath(FILE_PATH_LITERAL("/a/b/c")));
403 ObservedEntries fake_observed_entries; 399 Watchers fake_watchers;
404 fake_observed_entries[ObservedEntryKey(fake_observed_entry_.entry_path, 400 fake_watchers[WatcherKey(fake_watcher_.entry_path, fake_watcher_.recursive)] =
405 fake_observed_entry_.recursive)] = 401 fake_watcher_;
406 fake_observed_entry_; 402 registry_->RememberFileSystem(file_system_info, fake_watchers);
407 registry_->RememberFileSystem(file_system_info, fake_observed_entries);
408 403
409 EXPECT_EQ(0u, observer.mounts.size()); 404 EXPECT_EQ(0u, observer.mounts.size());
410 405
411 // Directly call the observer's method. 406 // Directly call the observer's method.
412 service_->OnExtensionLoaded(profile_, extension_.get()); 407 service_->OnExtensionLoaded(profile_, extension_.get());
413 408
414 ASSERT_EQ(1u, observer.mounts.size()); 409 ASSERT_EQ(1u, observer.mounts.size());
415 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); 410 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
416 411
417 EXPECT_EQ(file_system_info.extension_id(), 412 EXPECT_EQ(file_system_info.extension_id(),
418 observer.mounts[0].file_system_info().extension_id()); 413 observer.mounts[0].file_system_info().extension_id());
419 EXPECT_EQ(file_system_info.file_system_id(), 414 EXPECT_EQ(file_system_info.file_system_id(),
420 observer.mounts[0].file_system_info().file_system_id()); 415 observer.mounts[0].file_system_info().file_system_id());
421 EXPECT_EQ(file_system_info.writable(), 416 EXPECT_EQ(file_system_info.writable(),
422 observer.mounts[0].file_system_info().writable()); 417 observer.mounts[0].file_system_info().writable());
423 EXPECT_EQ(file_system_info.supports_notify_tag(), 418 EXPECT_EQ(file_system_info.supports_notify_tag(),
424 observer.mounts[0].file_system_info().supports_notify_tag()); 419 observer.mounts[0].file_system_info().supports_notify_tag());
425 420
426 std::vector<ProvidedFileSystemInfo> file_system_info_list = 421 std::vector<ProvidedFileSystemInfo> file_system_info_list =
427 service_->GetProvidedFileSystemInfoList(); 422 service_->GetProvidedFileSystemInfoList();
428 ASSERT_EQ(1u, file_system_info_list.size()); 423 ASSERT_EQ(1u, file_system_info_list.size());
429 424
430 ProvidedFileSystemInterface* const file_system = 425 ProvidedFileSystemInterface* const file_system =
431 service_->GetProvidedFileSystem(kExtensionId, kFileSystemId); 426 service_->GetProvidedFileSystem(kExtensionId, kFileSystemId);
432 ASSERT_TRUE(file_system); 427 ASSERT_TRUE(file_system);
433 428
434 const ObservedEntries* const observed_entries = 429 const Watchers* const watchers = file_system->GetWatchers();
435 file_system->GetObservedEntries(); 430 ASSERT_TRUE(watchers);
436 ASSERT_TRUE(observed_entries); 431 ASSERT_EQ(1u, watchers->size());
437 ASSERT_EQ(1u, observed_entries->size());
438 432
439 const ObservedEntries::const_iterator restored_observed_entry_it = 433 const Watchers::const_iterator restored_watcher_it = watchers->find(
440 observed_entries->find(ObservedEntryKey(fake_observed_entry_.entry_path, 434 WatcherKey(fake_watcher_.entry_path, fake_watcher_.recursive));
441 fake_observed_entry_.recursive)); 435 ASSERT_NE(watchers->end(), restored_watcher_it);
442 ASSERT_NE(observed_entries->end(), restored_observed_entry_it);
443 436
444 EXPECT_EQ(fake_observed_entry_.entry_path, 437 EXPECT_EQ(fake_watcher_.entry_path, restored_watcher_it->second.entry_path);
445 restored_observed_entry_it->second.entry_path); 438 EXPECT_EQ(fake_watcher_.recursive, restored_watcher_it->second.recursive);
446 EXPECT_EQ(fake_observed_entry_.recursive, 439 EXPECT_EQ(fake_watcher_.last_tag, restored_watcher_it->second.last_tag);
447 restored_observed_entry_it->second.recursive);
448 EXPECT_EQ(fake_observed_entry_.last_tag,
449 restored_observed_entry_it->second.last_tag);
450 440
451 service_->RemoveObserver(&observer); 441 service_->RemoveObserver(&observer);
452 } 442 }
453 443
454 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { 444 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) {
455 LoggingObserver observer; 445 LoggingObserver observer;
456 service_->AddObserver(&observer); 446 service_->AddObserver(&observer);
457 447
458 EXPECT_FALSE(registry_->file_system_info()); 448 EXPECT_FALSE(registry_->file_system_info());
459 EXPECT_FALSE(registry_->observed_entries()); 449 EXPECT_FALSE(registry_->watchers());
460 450
461 EXPECT_TRUE(service_->MountFileSystem( 451 EXPECT_TRUE(service_->MountFileSystem(
462 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 452 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
463 ASSERT_EQ(1u, observer.mounts.size()); 453 ASSERT_EQ(1u, observer.mounts.size());
464 454
465 ASSERT_TRUE(registry_->file_system_info()); 455 ASSERT_TRUE(registry_->file_system_info());
466 EXPECT_EQ(kExtensionId, registry_->file_system_info()->extension_id()); 456 EXPECT_EQ(kExtensionId, registry_->file_system_info()->extension_id());
467 EXPECT_EQ(kFileSystemId, registry_->file_system_info()->file_system_id()); 457 EXPECT_EQ(kFileSystemId, registry_->file_system_info()->file_system_id());
468 EXPECT_EQ(kDisplayName, registry_->file_system_info()->display_name()); 458 EXPECT_EQ(kDisplayName, registry_->file_system_info()->display_name());
469 EXPECT_FALSE(registry_->file_system_info()->writable()); 459 EXPECT_FALSE(registry_->file_system_info()->writable());
470 EXPECT_FALSE(registry_->file_system_info()->supports_notify_tag()); 460 EXPECT_FALSE(registry_->file_system_info()->supports_notify_tag());
471 ASSERT_TRUE(registry_->observed_entries()); 461 ASSERT_TRUE(registry_->watchers());
472 462
473 service_->RemoveObserver(&observer); 463 service_->RemoveObserver(&observer);
474 } 464 }
475 465
476 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) { 466 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) {
477 LoggingObserver observer; 467 LoggingObserver observer;
478 service_->AddObserver(&observer); 468 service_->AddObserver(&observer);
479 469
480 { 470 {
481 EXPECT_FALSE(registry_->file_system_info()); 471 EXPECT_FALSE(registry_->file_system_info());
482 EXPECT_FALSE(registry_->observed_entries()); 472 EXPECT_FALSE(registry_->watchers());
483 EXPECT_TRUE(service_->MountFileSystem( 473 EXPECT_TRUE(service_->MountFileSystem(
484 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 474 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
485 475
486 EXPECT_EQ(1u, observer.mounts.size()); 476 EXPECT_EQ(1u, observer.mounts.size());
487 EXPECT_TRUE(registry_->file_system_info()); 477 EXPECT_TRUE(registry_->file_system_info());
488 EXPECT_TRUE(registry_->observed_entries()); 478 EXPECT_TRUE(registry_->watchers());
489 } 479 }
490 480
491 { 481 {
492 EXPECT_TRUE(service_->UnmountFileSystem( 482 EXPECT_TRUE(service_->UnmountFileSystem(
493 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_SHUTDOWN)); 483 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_SHUTDOWN));
494 484
495 EXPECT_EQ(1u, observer.unmounts.size()); 485 EXPECT_EQ(1u, observer.unmounts.size());
496 EXPECT_TRUE(registry_->file_system_info()); 486 EXPECT_TRUE(registry_->file_system_info());
497 EXPECT_TRUE(registry_->observed_entries()); 487 EXPECT_TRUE(registry_->watchers());
498 } 488 }
499 489
500 service_->RemoveObserver(&observer); 490 service_->RemoveObserver(&observer);
501 } 491 }
502 492
503 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) { 493 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) {
504 LoggingObserver observer; 494 LoggingObserver observer;
505 service_->AddObserver(&observer); 495 service_->AddObserver(&observer);
506 496
507 { 497 {
508 EXPECT_FALSE(registry_->file_system_info()); 498 EXPECT_FALSE(registry_->file_system_info());
509 EXPECT_FALSE(registry_->observed_entries()); 499 EXPECT_FALSE(registry_->watchers());
510 EXPECT_TRUE(service_->MountFileSystem( 500 EXPECT_TRUE(service_->MountFileSystem(
511 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 501 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
512 502
513 EXPECT_EQ(1u, observer.mounts.size()); 503 EXPECT_EQ(1u, observer.mounts.size());
514 EXPECT_TRUE(registry_->file_system_info()); 504 EXPECT_TRUE(registry_->file_system_info());
515 EXPECT_TRUE(registry_->observed_entries()); 505 EXPECT_TRUE(registry_->watchers());
516 } 506 }
517 507
518 { 508 {
519 EXPECT_TRUE(service_->UnmountFileSystem( 509 EXPECT_TRUE(service_->UnmountFileSystem(
520 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); 510 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER));
521 511
522 EXPECT_EQ(1u, observer.unmounts.size()); 512 EXPECT_EQ(1u, observer.unmounts.size());
523 EXPECT_FALSE(registry_->file_system_info()); 513 EXPECT_FALSE(registry_->file_system_info());
524 EXPECT_FALSE(registry_->observed_entries()); 514 EXPECT_FALSE(registry_->watchers());
525 } 515 }
526 516
527 service_->RemoveObserver(&observer); 517 service_->RemoveObserver(&observer);
528 } 518 }
529 519
530 } // namespace file_system_provider 520 } // namespace file_system_provider
531 } // namespace chromeos 521 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/file_system_provider/service.cc ('k') | chrome/browser/chromeos/file_system_provider/watcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698