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

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

Issue 192573002: [fsp] Introduce file_system_provider::Service class for the FileSystemProvider API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleaned up. Created 6 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include <string>
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/memory/scoped_vector.h"
9 #include "chrome/browser/chromeos/file_system_provider/observer.h"
10 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h"
11 #include "chrome/browser/chromeos/file_system_provider/service.h"
12 #include "chrome/browser/chromeos/login/fake_user_manager.h"
13 #include "chrome/test/base/testing_profile.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "webkit/browser/fileapi/external_mount_points.h"
16
17 namespace chromeos {
18 namespace file_system_provider {
19 namespace {
20
21 static const std::string kExtensionId = "mbflcebpggnecokmikipoihdbecnjfoj";
22 static const std::string kFileSystemName = "Camera Pictures";
23
24 class LoggingObserver : public Observer {
25 public:
26 LoggingObserver() {}
27 virtual ~LoggingObserver() {}
28
29 // file_system_provider::Observer overrides.
30 virtual void OnProvidedFileSystemRegistered(
31 const ProvidedFileSystem& file_system) OVERRIDE {
32 registered.push_back(new const ProvidedFileSystem(file_system));
33 }
34
35 virtual void OnProvidedFileSystemUnregistered(
36 const ProvidedFileSystem& file_system) OVERRIDE {
37 unregistered.push_back(new const ProvidedFileSystem(file_system));
38 }
39
40 ScopedVector<const ProvidedFileSystem> registered;
41 ScopedVector<const ProvidedFileSystem> unregistered;
42 };
43
44 } // namespace
45
46 class FileSystemProviderServiceTest : public testing::Test {
47 protected:
48 FileSystemProviderServiceTest() {}
49 virtual ~FileSystemProviderServiceTest() {}
50
51 virtual void SetUp() OVERRIDE {
52 user_manager_ = new FakeUserManager();
53 user_manager_enabler_.reset(new ScopedUserManagerEnabler(user_manager_));
54 profile_.reset(new TestingProfile);
55 user_manager_->AddUser(profile_->GetProfileName());
56 file_system_provider_service_.reset(new Service(profile_.get()));
57 }
58
59 virtual void TearDown() {
60 fileapi::ExternalMountPoints::GetSystemInstance()->RevokeAllFileSystems();
61 }
62
63 scoped_ptr<TestingProfile> profile_;
64 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_;
65 FakeUserManager* user_manager_;
66 scoped_ptr<Service> file_system_provider_service_;
67 };
68
69 TEST_F(FileSystemProviderServiceTest, RegisterFileSystem) {
70 LoggingObserver observer;
71 file_system_provider_service_->AddObserver(&observer);
72
73 const std::string file_system_id =
74 file_system_provider_service_->RegisterFileSystem(kExtensionId,
75 kFileSystemName);
76
77 EXPECT_NE("", file_system_id);
78 ASSERT_EQ(1u, observer.registered.size());
79 EXPECT_EQ(kExtensionId, observer.registered[0]->extension_id);
80 EXPECT_EQ("mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
81 observer.registered[0]->file_system_id);
82 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
83 observer.registered[0]->mount_path.AsUTF8Unsafe());
84 EXPECT_EQ(kFileSystemName, observer.registered[0]->file_system_name);
85 ASSERT_EQ(0u, observer.unregistered.size());
86
87 std::vector<ProvidedFileSystem> provided_file_systems =
88 file_system_provider_service_->GetRegisteredFileSystems();
89 ASSERT_EQ(1u, provided_file_systems.size());
90
91 file_system_provider_service_->RemoveObserver(&observer);
92 }
93
94 TEST_F(FileSystemProviderServiceTest, RegisterFileSystem_UniqueIds) {
95 LoggingObserver observer;
96 file_system_provider_service_->AddObserver(&observer);
97
98 std::string file_system_first_id =
99 file_system_provider_service_->RegisterFileSystem(kExtensionId,
100 kFileSystemName);
101 ASSERT_NE("", file_system_first_id);
102
103 std::string file_system_second_id =
104 file_system_provider_service_->RegisterFileSystem(kExtensionId,
105 kFileSystemName);
106 ASSERT_NE("", file_system_second_id);
107
108 ASSERT_NE(file_system_first_id, file_system_second_id);
109 ASSERT_EQ(2u, observer.registered.size());
110
111 std::vector<ProvidedFileSystem> provided_file_systems =
112 file_system_provider_service_->GetRegisteredFileSystems();
113 ASSERT_EQ(2u, provided_file_systems.size());
114
115 file_system_provider_service_->RemoveObserver(&observer);
116 }
117
118 TEST_F(FileSystemProviderServiceTest, RegisterFileSystem_StressTest) {
119 LoggingObserver observer;
120 file_system_provider_service_->AddObserver(&observer);
121
122 static const size_t kMaxFileSystems = 16;
123 for (size_t i = 0; i < kMaxFileSystems; ++i) {
124 std::string file_system_id =
125 file_system_provider_service_->RegisterFileSystem(kExtensionId,
126 kFileSystemName);
127 ASSERT_NE("", file_system_id);
128 }
129 ASSERT_EQ(kMaxFileSystems, observer.registered.size());
130
131 // The next file system is out of limit, and registering it should fail.
132 std::string file_system_id =
133 file_system_provider_service_->RegisterFileSystem(kExtensionId,
134 kFileSystemName);
135 ASSERT_EQ("", file_system_id);
136 ASSERT_EQ(kMaxFileSystems, observer.registered.size());
137
138 std::vector<ProvidedFileSystem> provided_file_systems =
139 file_system_provider_service_->GetRegisteredFileSystems();
140 ASSERT_EQ(kMaxFileSystems, provided_file_systems.size());
141
142 file_system_provider_service_->RemoveObserver(&observer);
143 }
144
145 TEST_F(FileSystemProviderServiceTest, UnregisterFileSystem) {
146 LoggingObserver observer;
147 file_system_provider_service_->AddObserver(&observer);
148
149 const std::string file_system_id =
150 file_system_provider_service_->RegisterFileSystem(kExtensionId,
151 kFileSystemName);
152 ASSERT_NE("", file_system_id);
153 ASSERT_EQ(1u, observer.registered.size());
154
155 const bool result = file_system_provider_service_->UnregisterFileSystem(
156 kExtensionId, file_system_id);
157 ASSERT_TRUE(result);
158 ASSERT_EQ(1u, observer.unregistered.size());
159
160 EXPECT_EQ(kExtensionId, observer.unregistered[0]->extension_id);
161 EXPECT_EQ("mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
162 observer.unregistered[0]->file_system_id);
163 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
164 observer.unregistered[0]->mount_path.AsUTF8Unsafe());
165 EXPECT_EQ(kFileSystemName, observer.unregistered[0]->file_system_name);
166
167 std::vector<ProvidedFileSystem> provided_file_systems =
168 file_system_provider_service_->GetRegisteredFileSystems();
169 ASSERT_EQ(0u, provided_file_systems.size());
170
171 file_system_provider_service_->RemoveObserver(&observer);
172 }
173
174 TEST_F(FileSystemProviderServiceTest, UnregisterFileSystem_WrongExtensionId) {
175 LoggingObserver observer;
176 file_system_provider_service_->AddObserver(&observer);
177
178 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe";
179
180 const std::string file_system_id =
181 file_system_provider_service_->RegisterFileSystem(kExtensionId,
182 kFileSystemName);
183 ASSERT_NE("", file_system_id);
184 ASSERT_EQ(1u, observer.registered.size());
185
186 const bool result = file_system_provider_service_->UnregisterFileSystem(
187 kWrongExtensionId, file_system_id);
188 ASSERT_FALSE(result);
189 ASSERT_EQ(0u, observer.unregistered.size());
190
191 std::vector<ProvidedFileSystem> provided_file_systems =
192 file_system_provider_service_->GetRegisteredFileSystems();
193 ASSERT_EQ(1u, provided_file_systems.size());
194
195 file_system_provider_service_->RemoveObserver(&observer);
196 }
197
198 } // namespace file_system_provider
199 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698