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

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

Issue 295413002: [fsp] Store mounted file systems in preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleaned up. Created 6 years, 7 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 | Annotate | Revision Log
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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/files/file.h" 8 #include "base/files/file.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system .h" 12 #include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system .h"
13 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" 13 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h"
14 #include "chrome/browser/chromeos/file_system_provider/observer.h" 14 #include "chrome/browser/chromeos/file_system_provider/observer.h"
15 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info .h" 15 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info .h"
16 #include "chrome/browser/chromeos/file_system_provider/service.h" 16 #include "chrome/browser/chromeos/file_system_provider/service.h"
17 #include "chrome/browser/chromeos/login/users/fake_user_manager.h" 17 #include "chrome/browser/chromeos/login/users/fake_user_manager.h"
18 #include "chrome/common/pref_names.h"
19 #include "chrome/test/base/testing_pref_service_syncable.h"
18 #include "chrome/test/base/testing_profile.h" 20 #include "chrome/test/base/testing_profile.h"
21 #include "components/user_prefs/user_prefs.h"
19 #include "content/public/test/test_browser_thread_bundle.h" 22 #include "content/public/test/test_browser_thread_bundle.h"
20 #include "extensions/browser/extension_registry.h" 23 #include "extensions/browser/extension_registry.h"
21 #include "extensions/common/extension.h" 24 #include "extensions/common/extension.h"
22 #include "extensions/common/manifest_constants.h" 25 #include "extensions/common/manifest_constants.h"
23 #include "testing/gtest/include/gtest/gtest.h" 26 #include "testing/gtest/include/gtest/gtest.h"
24 #include "webkit/browser/fileapi/external_mount_points.h" 27 #include "webkit/browser/fileapi/external_mount_points.h"
25 28
26 namespace chromeos { 29 namespace chromeos {
27 namespace file_system_provider { 30 namespace file_system_provider {
28 namespace { 31 namespace {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 manifest.SetString(extensions::manifest_keys::kVersion, "1.0.0.0"); 82 manifest.SetString(extensions::manifest_keys::kVersion, "1.0.0.0");
80 manifest.SetString(extensions::manifest_keys::kName, "unused"); 83 manifest.SetString(extensions::manifest_keys::kName, "unused");
81 return extensions::Extension::Create(base::FilePath(), 84 return extensions::Extension::Create(base::FilePath(),
82 extensions::Manifest::UNPACKED, 85 extensions::Manifest::UNPACKED,
83 manifest, 86 manifest,
84 extensions::Extension::NO_FLAGS, 87 extensions::Extension::NO_FLAGS,
85 extension_id, 88 extension_id,
86 &error); 89 &error);
87 } 90 }
88 91
92 // Stores a provided file system information in preferences.
93 void rememberFakeFileSystem(TestingProfile* profile,
hashimoto 2014/05/26 08:35:38 nit: "RememberFakeFileSystem"
mtomasz 2014/05/27 02:10:27 Done.
94 const std::string& extension_id,
95 const std::string& file_system_id,
96 const std::string& file_system_name) {
97 TestingPrefServiceSyncable* pref_service = profile->GetTestingPrefService();
98 ASSERT_TRUE(pref_service);
99
100 base::DictionaryValue extensions;
101 base::ListValue* file_systems = new base::ListValue();
102 base::DictionaryValue* file_system = new base::DictionaryValue();
103 file_system->SetString("file_system_id", kFileSystemId);
104 file_system->SetString("file_system_name", kFileSystemName);
105 file_systems->Append(file_system);
106 extensions.Set(kExtensionId, file_systems);
107
108 pref_service->Set(prefs::kFSPMountedFileSystems, extensions);
109 }
110
89 } // namespace 111 } // namespace
90 112
91 class FileSystemProviderServiceTest : public testing::Test { 113 class FileSystemProviderServiceTest : public testing::Test {
92 protected: 114 protected:
93 FileSystemProviderServiceTest() {} 115 FileSystemProviderServiceTest() {}
94 virtual ~FileSystemProviderServiceTest() {} 116 virtual ~FileSystemProviderServiceTest() {}
95 117
96 virtual void SetUp() OVERRIDE { 118 virtual void SetUp() OVERRIDE {
97 profile_.reset(new TestingProfile); 119 profile_.reset(new TestingProfile);
98 user_manager_ = new FakeUserManager(); 120 user_manager_ = new FakeUserManager();
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 1u, 299 1u,
278 file_system_provider_service_->GetProvidedFileSystemInfoList().size()); 300 file_system_provider_service_->GetProvidedFileSystemInfoList().size());
279 301
280 std::vector<ProvidedFileSystemInfo> file_system_info_list = 302 std::vector<ProvidedFileSystemInfo> file_system_info_list =
281 file_system_provider_service_->GetProvidedFileSystemInfoList(); 303 file_system_provider_service_->GetProvidedFileSystemInfoList();
282 ASSERT_EQ(1u, file_system_info_list.size()); 304 ASSERT_EQ(1u, file_system_info_list.size());
283 305
284 file_system_provider_service_->RemoveObserver(&observer); 306 file_system_provider_service_->RemoveObserver(&observer);
285 } 307 }
286 308
309 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) {
310 LoggingObserver observer;
311 file_system_provider_service_->AddObserver(&observer);
312
313 // Create a fake entry in the preferences.
314 rememberFakeFileSystem(
315 profile_.get(), kExtensionId, kFileSystemId, kFileSystemName);
316
317 EXPECT_EQ(0u, observer.mounts.size());
318
319 // Directly call the observer's method.
320 file_system_provider_service_->OnExtensionLoaded(profile_.get(),
321 extension_.get());
322
323 ASSERT_EQ(1u, observer.mounts.size());
324 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
325
326 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id());
327 EXPECT_EQ(kFileSystemId,
328 observer.mounts[0].file_system_info().file_system_id());
329
330 std::vector<ProvidedFileSystemInfo> file_system_info_list =
331 file_system_provider_service_->GetProvidedFileSystemInfoList();
332 ASSERT_EQ(1u, file_system_info_list.size());
333
334 file_system_provider_service_->RemoveObserver(&observer);
335 }
336
337 TEST_F(FileSystemProviderServiceTest, ForgetFileSystem_OnExtensionUnload) {
338 LoggingObserver observer;
339 file_system_provider_service_->AddObserver(&observer);
340
341 // Create a fake entry in the preferences.
342 rememberFakeFileSystem(
343 profile_.get(), kExtensionId, kFileSystemId, kFileSystemName);
344
345 // Directly call the observer's methods.
346 file_system_provider_service_->OnExtensionLoaded(profile_.get(),
347 extension_.get());
348
349 file_system_provider_service_->OnExtensionUnloaded(
350 profile_.get(),
351 extension_.get(),
352 extensions::UnloadedExtensionInfo::REASON_DISABLE);
353
354 ASSERT_EQ(1u, observer.mounts.size());
355 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
356 ASSERT_EQ(1u, observer.unmounts.size());
357 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error());
358
359 TestingPrefServiceSyncable* pref_service = profile_->GetTestingPrefService();
360 ASSERT_TRUE(pref_service);
361
362 const base::DictionaryValue* extensions =
363 pref_service->GetDictionary(prefs::kFSPMountedFileSystems);
364 ASSERT_TRUE(extensions);
365
366 const base::ListValue* file_systems;
367 EXPECT_FALSE(extensions->GetList(kExtensionId, &file_systems));
368
369 file_system_provider_service_->RemoveObserver(&observer);
370 }
371
372 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnShutdown) {
373 {
374 scoped_ptr<Service> service(
375 new Service(profile_.get(), extension_registry_.get()));
376
377 LoggingObserver observer;
378 service->AddObserver(&observer);
379
380 const bool result =
381 service->MountFileSystem(kExtensionId, kFileSystemId, kFileSystemName);
382 EXPECT_TRUE(result);
383 ASSERT_EQ(1u, observer.mounts.size());
384
385 service->RemoveObserver(&observer);
386 }
387
388 TestingPrefServiceSyncable* pref_service = profile_->GetTestingPrefService();
389 ASSERT_TRUE(pref_service);
390
391 const base::DictionaryValue* extensions =
392 pref_service->GetDictionary(prefs::kFSPMountedFileSystems);
393 ASSERT_TRUE(extensions);
394
395 const base::ListValue* file_systems;
396 ASSERT_TRUE(extensions->GetList(kExtensionId, &file_systems));
397 ASSERT_EQ(1u, file_systems->GetSize());
398
399 const base::DictionaryValue* file_system = NULL;
400 ASSERT_TRUE(file_systems->GetDictionary(0, &file_system));
401
402 std::string file_system_id;
403 file_system->GetString("file_system_id", &file_system_id);
404 EXPECT_EQ(kFileSystemId, file_system_id);
405
406 std::string file_system_name;
407 file_system->GetString("file_system_name", &file_system_name);
408 EXPECT_EQ(kFileSystemName, file_system_name);
409 }
410
287 } // namespace file_system_provider 411 } // namespace file_system_provider
288 } // namespace chromeos 412 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698