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

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

Issue 661393002: [fsp] Separate logic for saving/restoring state to a separate class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: C++11 features. Created 6 years, 2 months 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"
11 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/strings/string_number_conversions.h" 13 #include "base/strings/string_number_conversions.h"
14 #include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system .h" 14 #include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system .h"
15 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" 15 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h"
16 #include "chrome/browser/chromeos/file_system_provider/observer.h" 16 #include "chrome/browser/chromeos/file_system_provider/observer.h"
17 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info .h" 17 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info .h"
18 #include "chrome/browser/chromeos/file_system_provider/registry_interface.h"
18 #include "chrome/browser/chromeos/login/users/fake_user_manager.h" 19 #include "chrome/browser/chromeos/login/users/fake_user_manager.h"
19 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" 20 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
20 #include "chrome/common/pref_names.h" 21 #include "chrome/common/pref_names.h"
21 #include "chrome/test/base/testing_browser_process.h" 22 #include "chrome/test/base/testing_browser_process.h"
22 #include "chrome/test/base/testing_pref_service_syncable.h" 23 #include "chrome/test/base/testing_pref_service_syncable.h"
23 #include "chrome/test/base/testing_profile.h" 24 #include "chrome/test/base/testing_profile.h"
24 #include "chrome/test/base/testing_profile_manager.h" 25 #include "chrome/test/base/testing_profile_manager.h"
25 #include "components/user_prefs/user_prefs.h" 26 #include "components/user_prefs/user_prefs.h"
26 #include "content/public/test/test_browser_thread_bundle.h" 27 #include "content/public/test/test_browser_thread_bundle.h"
27 #include "extensions/browser/extension_registry.h" 28 #include "extensions/browser/extension_registry.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 virtual void OnProvidedFileSystemUnmount( 76 virtual void OnProvidedFileSystemUnmount(
76 const ProvidedFileSystemInfo& file_system_info, 77 const ProvidedFileSystemInfo& file_system_info,
77 base::File::Error error) override { 78 base::File::Error error) override {
78 unmounts.push_back(Event(file_system_info, error)); 79 unmounts.push_back(Event(file_system_info, error));
79 } 80 }
80 81
81 std::vector<Event> mounts; 82 std::vector<Event> mounts;
82 std::vector<Event> unmounts; 83 std::vector<Event> unmounts;
83 }; 84 };
84 85
86 // Fake implementation of the registry, since it's already tested separately.
87 // For simplicity it can remember at most only one file system.
88 class FakeRegistry : public RegistryInterface {
89 public:
90 FakeRegistry() {}
91 virtual ~FakeRegistry() {}
92
93 // RegistryInterface overrides.
94 virtual void RememberFileSystem(
95 const ProvidedFileSystemInfo& file_system_info,
96 const ObservedEntries& observed_entries) override {
97 file_system_info_.reset(new ProvidedFileSystemInfo(file_system_info));
98 observed_entries_.reset(new ObservedEntries(observed_entries));
99 }
100
101 virtual void ForgetFileSystem(const std::string& extension_id,
102 const std::string& file_system_id) override {
103 if (!file_system_info_.get() || !observed_entries_.get())
104 return;
105 if (file_system_info_->extension_id() == extension_id &&
106 file_system_info_->file_system_id() == file_system_id) {
107 file_system_info_.reset();
108 observed_entries_.reset();
109 }
110 }
111
112 virtual scoped_ptr<RestoredFileSystems> RestoreFileSystems(
113 const std::string& extension_id) override {
114 scoped_ptr<RestoredFileSystems> result(new RestoredFileSystems);
115
116 if (file_system_info_.get() && observed_entries_.get()) {
117 RestoredFileSystem restored_file_system;
118 restored_file_system.extension_id = file_system_info_->extension_id();
119
120 MountOptions options;
121 options.file_system_id = file_system_info_->file_system_id();
122 options.display_name = file_system_info_->display_name();
123 options.writable = file_system_info_->writable();
124 options.supports_notify_tag = file_system_info_->supports_notify_tag();
125 restored_file_system.options = options;
126 restored_file_system.observed_entries = *observed_entries_.get();
127
128 result->push_back(restored_file_system);
129 }
130
131 return result;
132 }
133
134 virtual void UpdateObservedEntryTag(
135 const ProvidedFileSystemInfo& file_system_info,
136 const ObservedEntry& observed_entry) override {
137 ASSERT_TRUE(observed_entries_.get());
138 const ObservedEntries::iterator it =
139 observed_entries_->find(observed_entry.entry_path);
140 ASSERT_NE(observed_entries_->end(), it);
141 it->second.last_tag = observed_entry.last_tag;
142 }
143
144 ProvidedFileSystemInfo* const file_system_info() const {
145 return file_system_info_.get();
146 }
147 ObservedEntries* const observed_entries() const {
148 return observed_entries_.get();
149 }
150
151 private:
152 scoped_ptr<ProvidedFileSystemInfo> file_system_info_;
153 scoped_ptr<ObservedEntries> observed_entries_;
154
155 DISALLOW_COPY_AND_ASSIGN(FakeRegistry);
156 };
157
85 // Creates a fake extension with the specified |extension_id|. 158 // Creates a fake extension with the specified |extension_id|.
86 scoped_refptr<extensions::Extension> CreateFakeExtension( 159 scoped_refptr<extensions::Extension> CreateFakeExtension(
87 const std::string& extension_id) { 160 const std::string& extension_id) {
88 base::DictionaryValue manifest; 161 base::DictionaryValue manifest;
89 std::string error; 162 std::string error;
90 manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kVersion, 163 manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kVersion,
91 "1.0.0.0"); 164 "1.0.0.0");
92 manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kName, 165 manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kName,
93 "unused"); 166 "unused");
94 return extensions::Extension::Create(base::FilePath(), 167 return extensions::Extension::Create(base::FilePath(),
95 extensions::Manifest::UNPACKED, 168 extensions::Manifest::UNPACKED,
96 manifest, 169 manifest,
97 extensions::Extension::NO_FLAGS, 170 extensions::Extension::NO_FLAGS,
98 extension_id, 171 extension_id,
99 &error); 172 &error);
100 } 173 }
101 174
102 // Stores a provided file system information in preferences together with a
103 // fake observed entry.
104 void RememberFakeFileSystem(TestingProfile* profile,
105 const std::string& extension_id,
106 const std::string& file_system_id,
107 const std::string& display_name,
108 bool writable,
109 bool supports_notify_tag,
110 const ObservedEntry& observed_entry) {
111 TestingPrefServiceSyncable* const pref_service =
112 profile->GetTestingPrefService();
113 ASSERT_TRUE(pref_service);
114
115 base::DictionaryValue extensions;
116 base::DictionaryValue* file_systems = new base::DictionaryValue();
117 base::DictionaryValue* file_system = new base::DictionaryValue();
118 file_system->SetStringWithoutPathExpansion(kPrefKeyFileSystemId,
119 kFileSystemId);
120 file_system->SetStringWithoutPathExpansion(kPrefKeyDisplayName, kDisplayName);
121 file_system->SetBooleanWithoutPathExpansion(kPrefKeyWritable, writable);
122 file_system->SetBooleanWithoutPathExpansion(kPrefKeySupportsNotifyTag,
123 supports_notify_tag);
124 file_systems->SetWithoutPathExpansion(kFileSystemId, file_system);
125 extensions.SetWithoutPathExpansion(kExtensionId, file_systems);
126
127 // Remember observed entries.
128 base::DictionaryValue* const observed_entries = new base::DictionaryValue();
129 file_system->SetWithoutPathExpansion(kPrefKeyObservedEntries,
130 observed_entries);
131 base::DictionaryValue* const observed_entry_value =
132 new base::DictionaryValue();
133 observed_entries->SetWithoutPathExpansion(observed_entry.entry_path.value(),
134 observed_entry_value);
135 observed_entry_value->SetStringWithoutPathExpansion(
136 kPrefKeyObservedEntryEntryPath, observed_entry.entry_path.value());
137 observed_entry_value->SetBooleanWithoutPathExpansion(
138 kPrefKeyObservedEntryRecursive, observed_entry.recursive);
139 observed_entry_value->SetStringWithoutPathExpansion(
140 kPrefKeyObservedEntryLastTag, observed_entry.last_tag);
141
142 pref_service->Set(prefs::kFileSystemProviderMounted, extensions);
143 }
144
145 } // namespace 175 } // namespace
146 176
147 class FileSystemProviderServiceTest : public testing::Test { 177 class FileSystemProviderServiceTest : public testing::Test {
148 protected: 178 protected:
149 FileSystemProviderServiceTest() : profile_(NULL) {} 179 FileSystemProviderServiceTest() : profile_(NULL) {}
150 180
151 virtual ~FileSystemProviderServiceTest() {} 181 virtual ~FileSystemProviderServiceTest() {}
152 182
153 virtual void SetUp() override { 183 virtual void SetUp() override {
154 profile_manager_.reset( 184 profile_manager_.reset(
155 new TestingProfileManager(TestingBrowserProcess::GetGlobal())); 185 new TestingProfileManager(TestingBrowserProcess::GetGlobal()));
156 ASSERT_TRUE(profile_manager_->SetUp()); 186 ASSERT_TRUE(profile_manager_->SetUp());
157 profile_ = profile_manager_->CreateTestingProfile("test-user@example.com"); 187 profile_ = profile_manager_->CreateTestingProfile("test-user@example.com");
158 user_manager_ = new FakeUserManager(); 188 user_manager_ = new FakeUserManager();
159 user_manager_->AddUser(profile_->GetProfileName()); 189 user_manager_->AddUser(profile_->GetProfileName());
160 user_manager_enabler_.reset(new ScopedUserManagerEnabler(user_manager_)); 190 user_manager_enabler_.reset(new ScopedUserManagerEnabler(user_manager_));
161 extension_registry_.reset(new extensions::ExtensionRegistry(profile_)); 191 extension_registry_.reset(new extensions::ExtensionRegistry(profile_));
192
162 service_.reset(new Service(profile_, extension_registry_.get())); 193 service_.reset(new Service(profile_, extension_registry_.get()));
163 service_->SetFileSystemFactoryForTesting( 194 service_->SetFileSystemFactoryForTesting(
164 base::Bind(&FakeProvidedFileSystem::Create)); 195 base::Bind(&FakeProvidedFileSystem::Create));
165 extension_ = CreateFakeExtension(kExtensionId); 196 extension_ = CreateFakeExtension(kExtensionId);
197
198 registry_ = new FakeRegistry;
199 // Passes ownership to the service instance.
200 service_->SetRegistryForTesting(make_scoped_ptr(registry_));
201
166 fake_observed_entry_.entry_path = 202 fake_observed_entry_.entry_path =
167 base::FilePath(FILE_PATH_LITERAL("/a/b/c")); 203 base::FilePath(FILE_PATH_LITERAL("/a/b/c"));
168 fake_observed_entry_.recursive = true; 204 fake_observed_entry_.recursive = true;
169 fake_observed_entry_.last_tag = "hello-world"; 205 fake_observed_entry_.last_tag = "hello-world";
170 } 206 }
171 207
172 content::TestBrowserThreadBundle thread_bundle_; 208 content::TestBrowserThreadBundle thread_bundle_;
173 scoped_ptr<TestingProfileManager> profile_manager_; 209 scoped_ptr<TestingProfileManager> profile_manager_;
174 TestingProfile* profile_; 210 TestingProfile* profile_;
175 FakeUserManager* user_manager_; 211 FakeUserManager* user_manager_;
176 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; 212 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_;
177 scoped_ptr<extensions::ExtensionRegistry> extension_registry_; 213 scoped_ptr<extensions::ExtensionRegistry> extension_registry_;
178 scoped_ptr<Service> service_; 214 scoped_ptr<Service> service_;
179 scoped_refptr<extensions::Extension> extension_; 215 scoped_refptr<extensions::Extension> extension_;
216 FakeRegistry* registry_; // Owned by Service.
180 ObservedEntry fake_observed_entry_; 217 ObservedEntry fake_observed_entry_;
181 }; 218 };
182 219
183 TEST_F(FileSystemProviderServiceTest, MountFileSystem) { 220 TEST_F(FileSystemProviderServiceTest, MountFileSystem) {
184 LoggingObserver observer; 221 LoggingObserver observer;
185 service_->AddObserver(&observer); 222 service_->AddObserver(&observer);
186 223
187 EXPECT_TRUE(service_->MountFileSystem( 224 EXPECT_TRUE(service_->MountFileSystem(
188 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 225 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
189 226
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); 386 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size());
350 387
351 std::vector<ProvidedFileSystemInfo> file_system_info_list = 388 std::vector<ProvidedFileSystemInfo> file_system_info_list =
352 service_->GetProvidedFileSystemInfoList(); 389 service_->GetProvidedFileSystemInfoList();
353 ASSERT_EQ(1u, file_system_info_list.size()); 390 ASSERT_EQ(1u, file_system_info_list.size());
354 391
355 service_->RemoveObserver(&observer); 392 service_->RemoveObserver(&observer);
356 } 393 }
357 394
358 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { 395 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) {
359 // Create a fake entry in the preferences. 396 LoggingObserver observer;
360 RememberFakeFileSystem(profile_, 397 service_->AddObserver(&observer);
361 kExtensionId,
362 kFileSystemId,
363 kDisplayName,
364 true /* writable */,
365 true /* supports_notify_tag */,
366 fake_observed_entry_);
367 398
368 // Create a new service instance in order to load remembered file systems 399 // Remember a fake file system first in order to be able to restore it.
369 // from preferences. 400 MountOptions options(kFileSystemId, kDisplayName);
370 scoped_ptr<Service> new_service( 401 options.supports_notify_tag = true;
371 new Service(profile_, extension_registry_.get())); 402 ProvidedFileSystemInfo file_system_info(
372 LoggingObserver observer; 403 kExtensionId, options, base::FilePath(FILE_PATH_LITERAL("/a/b/c")));
373 new_service->AddObserver(&observer); 404 ObservedEntries fake_observed_entries;
374 405 fake_observed_entries[fake_observed_entry_.entry_path] = fake_observed_entry_;
375 new_service->SetFileSystemFactoryForTesting( 406 registry_->RememberFileSystem(file_system_info, fake_observed_entries);
376 base::Bind(&FakeProvidedFileSystem::Create));
377 407
378 EXPECT_EQ(0u, observer.mounts.size()); 408 EXPECT_EQ(0u, observer.mounts.size());
379 409
380 // Directly call the observer's method. 410 // Directly call the observer's method.
381 new_service->OnExtensionLoaded(profile_, extension_.get()); 411 service_->OnExtensionLoaded(profile_, extension_.get());
382 412
383 ASSERT_EQ(1u, observer.mounts.size()); 413 ASSERT_EQ(1u, observer.mounts.size());
384 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); 414 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
385 415
386 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); 416 EXPECT_EQ(file_system_info.extension_id(),
387 EXPECT_EQ(kFileSystemId, 417 observer.mounts[0].file_system_info().extension_id());
418 EXPECT_EQ(file_system_info.file_system_id(),
388 observer.mounts[0].file_system_info().file_system_id()); 419 observer.mounts[0].file_system_info().file_system_id());
389 EXPECT_TRUE(observer.mounts[0].file_system_info().writable()); 420 EXPECT_EQ(file_system_info.writable(),
390 EXPECT_TRUE(observer.mounts[0].file_system_info().supports_notify_tag()); 421 observer.mounts[0].file_system_info().writable());
422 EXPECT_EQ(file_system_info.supports_notify_tag(),
423 observer.mounts[0].file_system_info().supports_notify_tag());
391 424
392 std::vector<ProvidedFileSystemInfo> file_system_info_list = 425 std::vector<ProvidedFileSystemInfo> file_system_info_list =
393 new_service->GetProvidedFileSystemInfoList(); 426 service_->GetProvidedFileSystemInfoList();
394 ASSERT_EQ(1u, file_system_info_list.size()); 427 ASSERT_EQ(1u, file_system_info_list.size());
395 428
396 ProvidedFileSystemInterface* const file_system = 429 ProvidedFileSystemInterface* const file_system =
397 new_service->GetProvidedFileSystem(kExtensionId, kFileSystemId); 430 service_->GetProvidedFileSystem(kExtensionId, kFileSystemId);
398 ASSERT_TRUE(file_system); 431 ASSERT_TRUE(file_system);
399 432
400 const ObservedEntries* const observed_entries = 433 const ObservedEntries* const observed_entries =
401 file_system->GetObservedEntries(); 434 file_system->GetObservedEntries();
402 ASSERT_TRUE(observed_entries); 435 ASSERT_TRUE(observed_entries);
403 ASSERT_EQ(1u, observed_entries->size()); 436 ASSERT_EQ(1u, observed_entries->size());
404 437
405 const ObservedEntries::const_iterator restored_observed_entry_it = 438 const ObservedEntries::const_iterator restored_observed_entry_it =
406 observed_entries->find(fake_observed_entry_.entry_path); 439 observed_entries->find(fake_observed_entry_.entry_path);
407 ASSERT_NE(observed_entries->end(), restored_observed_entry_it); 440 ASSERT_NE(observed_entries->end(), restored_observed_entry_it);
408 441
409 EXPECT_EQ(fake_observed_entry_.entry_path, 442 EXPECT_EQ(fake_observed_entry_.entry_path,
410 restored_observed_entry_it->second.entry_path); 443 restored_observed_entry_it->second.entry_path);
411 EXPECT_EQ(fake_observed_entry_.recursive, 444 EXPECT_EQ(fake_observed_entry_.recursive,
412 restored_observed_entry_it->second.recursive); 445 restored_observed_entry_it->second.recursive);
413 EXPECT_EQ(fake_observed_entry_.last_tag, 446 EXPECT_EQ(fake_observed_entry_.last_tag,
414 restored_observed_entry_it->second.last_tag); 447 restored_observed_entry_it->second.last_tag);
415 448
416 new_service->RemoveObserver(&observer); 449 service_->RemoveObserver(&observer);
417 }
418
419 TEST_F(FileSystemProviderServiceTest, RememberFileSystem) {
420 MountOptions options(kFileSystemId, kDisplayName);
421 options.writable = true;
422 options.supports_notify_tag = true;
423
424 ProvidedFileSystemInfo file_system_info(
425 kExtensionId, options, base::FilePath(FILE_PATH_LITERAL("/a/b/c")));
426
427 ObservedEntries observed_entries;
428 observed_entries[fake_observed_entry_.entry_path] = fake_observed_entry_;
429
430 service_->RememberFileSystem(file_system_info, observed_entries);
431
432 TestingPrefServiceSyncable* const pref_service =
433 profile_->GetTestingPrefService();
434 ASSERT_TRUE(pref_service);
435
436 const base::DictionaryValue* const extensions =
437 pref_service->GetDictionary(prefs::kFileSystemProviderMounted);
438 ASSERT_TRUE(extensions);
439
440 const base::DictionaryValue* file_systems = NULL;
441 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId,
442 &file_systems));
443 EXPECT_EQ(1u, file_systems->size());
444
445 const base::Value* file_system_value = NULL;
446 const base::DictionaryValue* file_system = NULL;
447 ASSERT_TRUE(
448 file_systems->GetWithoutPathExpansion(kFileSystemId, &file_system_value));
449 ASSERT_TRUE(file_system_value->GetAsDictionary(&file_system));
450
451 std::string file_system_id;
452 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyFileSystemId,
453 &file_system_id));
454 EXPECT_EQ(kFileSystemId, file_system_id);
455
456 std::string display_name;
457 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyDisplayName,
458 &display_name));
459 EXPECT_EQ(kDisplayName, display_name);
460
461 bool writable = false;
462 EXPECT_TRUE(
463 file_system->GetBooleanWithoutPathExpansion(kPrefKeyWritable, &writable));
464 EXPECT_TRUE(writable);
465
466 bool supports_notify_tag = false;
467 EXPECT_TRUE(file_system->GetBooleanWithoutPathExpansion(
468 kPrefKeySupportsNotifyTag, &supports_notify_tag));
469 EXPECT_TRUE(supports_notify_tag);
470
471 const base::DictionaryValue* observed_entries_value = NULL;
472 ASSERT_TRUE(file_system->GetDictionaryWithoutPathExpansion(
473 kPrefKeyObservedEntries, &observed_entries_value));
474
475 const base::DictionaryValue* observed_entry = NULL;
476 ASSERT_TRUE(observed_entries_value->GetDictionaryWithoutPathExpansion(
477 fake_observed_entry_.entry_path.value(), &observed_entry));
478
479 std::string entry_path;
480 EXPECT_TRUE(observed_entry->GetStringWithoutPathExpansion(
481 kPrefKeyObservedEntryEntryPath, &entry_path));
482 EXPECT_EQ(fake_observed_entry_.entry_path.value(), entry_path);
483
484 bool recursive = false;
485 EXPECT_TRUE(observed_entry->GetBooleanWithoutPathExpansion(
486 kPrefKeyObservedEntryRecursive, &recursive));
487 EXPECT_EQ(fake_observed_entry_.recursive, recursive);
488
489 std::string last_tag;
490 EXPECT_TRUE(observed_entry->GetStringWithoutPathExpansion(
491 kPrefKeyObservedEntryLastTag, &last_tag));
492 EXPECT_EQ(fake_observed_entry_.last_tag, last_tag);
493 } 450 }
494 451
495 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { 452 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) {
496 LoggingObserver observer; 453 LoggingObserver observer;
497 service_->AddObserver(&observer); 454 service_->AddObserver(&observer);
498 455
499 TestingPrefServiceSyncable* const pref_service = 456 EXPECT_FALSE(registry_->file_system_info());
500 profile_->GetTestingPrefService(); 457 EXPECT_FALSE(registry_->observed_entries());
501 ASSERT_TRUE(pref_service);
502 458
503 EXPECT_TRUE(service_->MountFileSystem( 459 EXPECT_TRUE(service_->MountFileSystem(
504 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 460 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
505 ASSERT_EQ(1u, observer.mounts.size()); 461 ASSERT_EQ(1u, observer.mounts.size());
506 462
507 const base::DictionaryValue* extensions = 463 ASSERT_TRUE(registry_->file_system_info());
508 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); 464 EXPECT_EQ(kExtensionId, registry_->file_system_info()->extension_id());
509 ASSERT_TRUE(extensions); 465 EXPECT_EQ(kFileSystemId, registry_->file_system_info()->file_system_id());
510 466 EXPECT_EQ(kDisplayName, registry_->file_system_info()->display_name());
511 const base::DictionaryValue* file_systems = NULL; 467 EXPECT_FALSE(registry_->file_system_info()->writable());
512 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, 468 EXPECT_FALSE(registry_->file_system_info()->supports_notify_tag());
513 &file_systems)); 469 ASSERT_TRUE(registry_->observed_entries());
514 EXPECT_EQ(1u, file_systems->size());
515 470
516 service_->RemoveObserver(&observer); 471 service_->RemoveObserver(&observer);
517 } 472 }
518 473
519 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) { 474 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) {
520 LoggingObserver observer; 475 LoggingObserver observer;
521 service_->AddObserver(&observer); 476 service_->AddObserver(&observer);
522 477
523 TestingPrefServiceSyncable* const pref_service =
524 profile_->GetTestingPrefService();
525 ASSERT_TRUE(pref_service);
526
527 { 478 {
479 EXPECT_FALSE(registry_->file_system_info());
480 EXPECT_FALSE(registry_->observed_entries());
528 EXPECT_TRUE(service_->MountFileSystem( 481 EXPECT_TRUE(service_->MountFileSystem(
529 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 482 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
530 ASSERT_EQ(1u, observer.mounts.size());
531 483
532 const base::DictionaryValue* extensions = 484 EXPECT_EQ(1u, observer.mounts.size());
533 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); 485 EXPECT_TRUE(registry_->file_system_info());
534 ASSERT_TRUE(extensions); 486 EXPECT_TRUE(registry_->observed_entries());
535
536 const base::DictionaryValue* file_systems = NULL;
537 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId,
538 &file_systems));
539 EXPECT_EQ(1u, file_systems->size());
540 } 487 }
541 488
542 { 489 {
543 EXPECT_TRUE(service_->UnmountFileSystem( 490 EXPECT_TRUE(service_->UnmountFileSystem(
544 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_SHUTDOWN)); 491 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_SHUTDOWN));
545 492
546 const base::DictionaryValue* const extensions = 493 EXPECT_EQ(1u, observer.unmounts.size());
547 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); 494 EXPECT_TRUE(registry_->file_system_info());
548 ASSERT_TRUE(extensions); 495 EXPECT_TRUE(registry_->observed_entries());
549
550 const base::DictionaryValue* file_systems = NULL;
551 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId,
552 &file_systems));
553 EXPECT_EQ(1u, file_systems->size());
554 } 496 }
555 497
556 service_->RemoveObserver(&observer); 498 service_->RemoveObserver(&observer);
557 } 499 }
558 500
559 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) { 501 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) {
560 LoggingObserver observer; 502 LoggingObserver observer;
561 service_->AddObserver(&observer); 503 service_->AddObserver(&observer);
562 504
563 TestingPrefServiceSyncable* const pref_service =
564 profile_->GetTestingPrefService();
565 ASSERT_TRUE(pref_service);
566
567 { 505 {
506 EXPECT_FALSE(registry_->file_system_info());
507 EXPECT_FALSE(registry_->observed_entries());
568 EXPECT_TRUE(service_->MountFileSystem( 508 EXPECT_TRUE(service_->MountFileSystem(
569 kExtensionId, MountOptions(kFileSystemId, kDisplayName))); 509 kExtensionId, MountOptions(kFileSystemId, kDisplayName)));
570 ASSERT_EQ(1u, observer.mounts.size());
571 510
572 const base::DictionaryValue* extensions = 511 EXPECT_EQ(1u, observer.mounts.size());
573 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); 512 EXPECT_TRUE(registry_->file_system_info());
574 ASSERT_TRUE(extensions); 513 EXPECT_TRUE(registry_->observed_entries());
575
576 const base::DictionaryValue* file_systems = NULL;
577 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId,
578 &file_systems));
579 EXPECT_EQ(1u, file_systems->size());
580 } 514 }
581 515
582 { 516 {
583 EXPECT_TRUE(service_->UnmountFileSystem( 517 EXPECT_TRUE(service_->UnmountFileSystem(
584 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); 518 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER));
585 519
586 const base::DictionaryValue* const extensions = 520 EXPECT_EQ(1u, observer.unmounts.size());
587 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); 521 EXPECT_FALSE(registry_->file_system_info());
588 ASSERT_TRUE(extensions); 522 EXPECT_FALSE(registry_->observed_entries());
589
590 const base::DictionaryValue* file_systems = NULL;
591 EXPECT_FALSE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId,
592 &file_systems));
593 } 523 }
594 524
595 service_->RemoveObserver(&observer); 525 service_->RemoveObserver(&observer);
596 } 526 }
597 527
598 } // namespace file_system_provider 528 } // namespace file_system_provider
599 } // namespace chromeos 529 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/file_system_provider/service.cc ('k') | chrome/browser/prefs/browser_prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698