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

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

Issue 210803003: [fsp] Decouple file_service_provider::Service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed more comments. 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
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/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/browser/chromeos/file_system_provider/observer.h" 10 #include "chrome/browser/chromeos/file_system_provider/observer.h"
11 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h" 11 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info .h"
12 #include "chrome/browser/chromeos/file_system_provider/service.h" 12 #include "chrome/browser/chromeos/file_system_provider/service.h"
13 #include "chrome/browser/chromeos/login/fake_user_manager.h" 13 #include "chrome/browser/chromeos/login/fake_user_manager.h"
14 #include "chrome/test/base/testing_profile.h" 14 #include "chrome/test/base/testing_profile.h"
15 #include "content/public/test/test_browser_thread_bundle.h" 15 #include "content/public/test/test_browser_thread_bundle.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "webkit/browser/fileapi/external_mount_points.h" 17 #include "webkit/browser/fileapi/external_mount_points.h"
18 18
19 namespace chromeos { 19 namespace chromeos {
20 namespace file_system_provider { 20 namespace file_system_provider {
21 namespace { 21 namespace {
22 22
23 const char kExtensionId[] = "mbflcebpggnecokmikipoihdbecnjfoj"; 23 const char kExtensionId[] = "mbflcebpggnecokmikipoihdbecnjfoj";
24 const char kFileSystemName[] = "Camera Pictures"; 24 const char kFileSystemName[] = "Camera Pictures";
25 25
26 class LoggingObserver : public Observer { 26 class LoggingObserver : public Observer {
27 public: 27 public:
28 class Event { 28 class Event {
29 public: 29 public:
30 Event(const ProvidedFileSystem& file_system, base::File::Error error) 30 Event(const ProvidedFileSystemInfo& file_system_info,
31 : file_system_(file_system), error_(error) {} 31 base::File::Error error)
32 : file_system_info_(file_system_info), error_(error) {}
32 ~Event() {} 33 ~Event() {}
33 34
34 const ProvidedFileSystem& file_system() { return file_system_; } 35 const ProvidedFileSystemInfo& file_system_info() {
36 return file_system_info_;
37 }
35 base::File::Error error() { return error_; } 38 base::File::Error error() { return error_; }
36 39
37 private: 40 private:
38 ProvidedFileSystem file_system_; 41 ProvidedFileSystemInfo file_system_info_;
39 base::File::Error error_; 42 base::File::Error error_;
40 }; 43 };
41 44
42 LoggingObserver() {} 45 LoggingObserver() {}
43 virtual ~LoggingObserver() {} 46 virtual ~LoggingObserver() {}
44 47
45 // file_system_provider::Observer overrides. 48 // file_system_provider::Observer overrides.
46 virtual void OnProvidedFileSystemMount(const ProvidedFileSystem& file_system, 49 virtual void OnProvidedFileSystemMount(
47 base::File::Error error) OVERRIDE { 50 const ProvidedFileSystemInfo& file_system_info,
48 mounts.push_back(Event(file_system, error)); 51 base::File::Error error) OVERRIDE {
52 mounts.push_back(Event(file_system_info, error));
49 } 53 }
50 54
51 virtual void OnProvidedFileSystemUnmount( 55 virtual void OnProvidedFileSystemUnmount(
52 const ProvidedFileSystem& file_system, 56 const ProvidedFileSystemInfo& file_system_info,
53 base::File::Error error) OVERRIDE { 57 base::File::Error error) OVERRIDE {
54 unmounts.push_back(Event(file_system, error)); 58 unmounts.push_back(Event(file_system_info, error));
55 } 59 }
56 60
57 std::vector<Event> mounts; 61 std::vector<Event> mounts;
58 std::vector<Event> unmounts; 62 std::vector<Event> unmounts;
59 }; 63 };
60 64
61 } // namespace 65 } // namespace
62 66
63 class FileSystemProviderServiceTest : public testing::Test { 67 class FileSystemProviderServiceTest : public testing::Test {
64 protected: 68 protected:
(...skipping 21 matching lines...) Expand all
86 90
87 TEST_F(FileSystemProviderServiceTest, MountFileSystem) { 91 TEST_F(FileSystemProviderServiceTest, MountFileSystem) {
88 LoggingObserver observer; 92 LoggingObserver observer;
89 file_system_provider_service_->AddObserver(&observer); 93 file_system_provider_service_->AddObserver(&observer);
90 94
91 int file_system_id = file_system_provider_service_->MountFileSystem( 95 int file_system_id = file_system_provider_service_->MountFileSystem(
92 kExtensionId, kFileSystemName); 96 kExtensionId, kFileSystemName);
93 97
94 EXPECT_LT(0, file_system_id); 98 EXPECT_LT(0, file_system_id);
95 ASSERT_EQ(1u, observer.mounts.size()); 99 ASSERT_EQ(1u, observer.mounts.size());
96 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system().extension_id()); 100 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id());
97 EXPECT_EQ(1, observer.mounts[0].file_system().file_system_id()); 101 EXPECT_EQ(1, observer.mounts[0].file_system_info().file_system_id());
98 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash", 102 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
99 observer.mounts[0].file_system().mount_path().AsUTF8Unsafe()); 103 observer.mounts[0].file_system_info().mount_path().AsUTF8Unsafe());
100 EXPECT_EQ(kFileSystemName, 104 EXPECT_EQ(kFileSystemName,
101 observer.mounts[0].file_system().file_system_name()); 105 observer.mounts[0].file_system_info().file_system_name());
102 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); 106 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
103 ASSERT_EQ(0u, observer.unmounts.size()); 107 ASSERT_EQ(0u, observer.unmounts.size());
104 108
105 std::vector<ProvidedFileSystem> provided_file_systems = 109 std::vector<ProvidedFileSystemInfo> file_system_info_list =
106 file_system_provider_service_->GetMountedFileSystems(); 110 file_system_provider_service_->GetProvidedFileSystemInfoList();
107 ASSERT_EQ(1u, provided_file_systems.size()); 111 ASSERT_EQ(1u, file_system_info_list.size());
108 112
109 file_system_provider_service_->RemoveObserver(&observer); 113 file_system_provider_service_->RemoveObserver(&observer);
110 } 114 }
111 115
112 TEST_F(FileSystemProviderServiceTest, MountFileSystem_UniqueIds) { 116 TEST_F(FileSystemProviderServiceTest, MountFileSystem_UniqueIds) {
113 LoggingObserver observer; 117 LoggingObserver observer;
114 file_system_provider_service_->AddObserver(&observer); 118 file_system_provider_service_->AddObserver(&observer);
115 119
116 int file_system_first_id = file_system_provider_service_->MountFileSystem( 120 int file_system_first_id = file_system_provider_service_->MountFileSystem(
117 kExtensionId, kFileSystemName); 121 kExtensionId, kFileSystemName);
118 EXPECT_LT(0, file_system_first_id); 122 EXPECT_LT(0, file_system_first_id);
119 123
120 int file_system_second_id = file_system_provider_service_->MountFileSystem( 124 int file_system_second_id = file_system_provider_service_->MountFileSystem(
121 kExtensionId, kFileSystemName); 125 kExtensionId, kFileSystemName);
122 EXPECT_LT(0, file_system_second_id); 126 EXPECT_LT(0, file_system_second_id);
123 127
124 EXPECT_NE(file_system_first_id, file_system_second_id); 128 EXPECT_NE(file_system_first_id, file_system_second_id);
125 ASSERT_EQ(2u, observer.mounts.size()); 129 ASSERT_EQ(2u, observer.mounts.size());
126 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); 130 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
127 EXPECT_EQ(base::File::FILE_OK, observer.mounts[1].error()); 131 EXPECT_EQ(base::File::FILE_OK, observer.mounts[1].error());
128 132
129 std::vector<ProvidedFileSystem> provided_file_systems = 133 std::vector<ProvidedFileSystemInfo> file_system_info_list =
130 file_system_provider_service_->GetMountedFileSystems(); 134 file_system_provider_service_->GetProvidedFileSystemInfoList();
131 ASSERT_EQ(2u, provided_file_systems.size()); 135 ASSERT_EQ(2u, file_system_info_list.size());
132 136
133 file_system_provider_service_->RemoveObserver(&observer); 137 file_system_provider_service_->RemoveObserver(&observer);
134 } 138 }
135 139
136 TEST_F(FileSystemProviderServiceTest, MountFileSystem_StressTest) { 140 TEST_F(FileSystemProviderServiceTest, MountFileSystem_StressTest) {
137 LoggingObserver observer; 141 LoggingObserver observer;
138 file_system_provider_service_->AddObserver(&observer); 142 file_system_provider_service_->AddObserver(&observer);
139 143
140 static const size_t kMaxFileSystems = 16; 144 static const size_t kMaxFileSystems = 16;
141 for (size_t i = 0; i < kMaxFileSystems; ++i) { 145 for (size_t i = 0; i < kMaxFileSystems; ++i) {
142 int file_system_id = file_system_provider_service_->MountFileSystem( 146 int file_system_id = file_system_provider_service_->MountFileSystem(
143 kExtensionId, kFileSystemName); 147 kExtensionId, kFileSystemName);
144 EXPECT_LT(0, file_system_id); 148 EXPECT_LT(0, file_system_id);
145 } 149 }
146 ASSERT_EQ(kMaxFileSystems, observer.mounts.size()); 150 ASSERT_EQ(kMaxFileSystems, observer.mounts.size());
147 151
148 // The next file system is out of limit, and registering it should fail. 152 // The next file system is out of limit, and registering it should fail.
149 int file_system_id = file_system_provider_service_->MountFileSystem( 153 int file_system_id = file_system_provider_service_->MountFileSystem(
150 kExtensionId, kFileSystemName); 154 kExtensionId, kFileSystemName);
151 EXPECT_EQ(0, file_system_id); 155 EXPECT_EQ(0, file_system_id);
152 156
153 ASSERT_EQ(kMaxFileSystems + 1, observer.mounts.size()); 157 ASSERT_EQ(kMaxFileSystems + 1, observer.mounts.size());
154 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, 158 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED,
155 observer.mounts[kMaxFileSystems].error()); 159 observer.mounts[kMaxFileSystems].error());
156 ASSERT_EQ(kMaxFileSystems, 160 ASSERT_EQ(
157 file_system_provider_service_->GetMountedFileSystems().size()); 161 kMaxFileSystems,
162 file_system_provider_service_->GetProvidedFileSystemInfoList().size());
158 163
159 std::vector<ProvidedFileSystem> provided_file_systems = 164 std::vector<ProvidedFileSystemInfo> file_system_info_list =
160 file_system_provider_service_->GetMountedFileSystems(); 165 file_system_provider_service_->GetProvidedFileSystemInfoList();
161 ASSERT_EQ(kMaxFileSystems, provided_file_systems.size()); 166 ASSERT_EQ(kMaxFileSystems, file_system_info_list.size());
162 167
163 file_system_provider_service_->RemoveObserver(&observer); 168 file_system_provider_service_->RemoveObserver(&observer);
164 } 169 }
165 170
166 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem) { 171 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem) {
167 LoggingObserver observer; 172 LoggingObserver observer;
168 file_system_provider_service_->AddObserver(&observer); 173 file_system_provider_service_->AddObserver(&observer);
169 174
170 int file_system_id = file_system_provider_service_->MountFileSystem( 175 int file_system_id = file_system_provider_service_->MountFileSystem(
171 kExtensionId, kFileSystemName); 176 kExtensionId, kFileSystemName);
172 EXPECT_LT(0, file_system_id); 177 EXPECT_LT(0, file_system_id);
173 ASSERT_EQ(1u, observer.mounts.size()); 178 ASSERT_EQ(1u, observer.mounts.size());
174 179
175 const bool result = file_system_provider_service_->UnmountFileSystem( 180 const bool result = file_system_provider_service_->UnmountFileSystem(
176 kExtensionId, file_system_id); 181 kExtensionId, file_system_id);
177 EXPECT_TRUE(result); 182 EXPECT_TRUE(result);
178 ASSERT_EQ(1u, observer.unmounts.size()); 183 ASSERT_EQ(1u, observer.unmounts.size());
179 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); 184 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error());
180 185
181 EXPECT_EQ(kExtensionId, observer.unmounts[0].file_system().extension_id()); 186 EXPECT_EQ(kExtensionId,
182 EXPECT_EQ(1, observer.unmounts[0].file_system().file_system_id()); 187 observer.unmounts[0].file_system_info().extension_id());
183 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash", 188 EXPECT_EQ(1, observer.unmounts[0].file_system_info().file_system_id());
184 observer.unmounts[0].file_system().mount_path().AsUTF8Unsafe()); 189 EXPECT_EQ(
190 "/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
191 observer.unmounts[0].file_system_info().mount_path().AsUTF8Unsafe());
185 EXPECT_EQ(kFileSystemName, 192 EXPECT_EQ(kFileSystemName,
186 observer.unmounts[0].file_system().file_system_name()); 193 observer.unmounts[0].file_system_info().file_system_name());
187 194
188 std::vector<ProvidedFileSystem> provided_file_systems = 195 std::vector<ProvidedFileSystemInfo> file_system_info_list =
189 file_system_provider_service_->GetMountedFileSystems(); 196 file_system_provider_service_->GetProvidedFileSystemInfoList();
190 ASSERT_EQ(0u, provided_file_systems.size()); 197 ASSERT_EQ(0u, file_system_info_list.size());
191 198
192 file_system_provider_service_->RemoveObserver(&observer); 199 file_system_provider_service_->RemoveObserver(&observer);
193 } 200 }
194 201
195 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_WrongExtensionId) { 202 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_WrongExtensionId) {
196 LoggingObserver observer; 203 LoggingObserver observer;
197 file_system_provider_service_->AddObserver(&observer); 204 file_system_provider_service_->AddObserver(&observer);
198 205
199 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe"; 206 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe";
200 207
201 int file_system_id = file_system_provider_service_->MountFileSystem( 208 int file_system_id = file_system_provider_service_->MountFileSystem(
202 kExtensionId, kFileSystemName); 209 kExtensionId, kFileSystemName);
203 EXPECT_LT(0, file_system_id); 210 EXPECT_LT(0, file_system_id);
204 ASSERT_EQ(1u, observer.mounts.size()); 211 ASSERT_EQ(1u, observer.mounts.size());
205 ASSERT_EQ(1u, file_system_provider_service_->GetMountedFileSystems().size()); 212 ASSERT_EQ(
213 1u,
214 file_system_provider_service_->GetProvidedFileSystemInfoList().size());
206 215
207 const bool result = file_system_provider_service_->UnmountFileSystem( 216 const bool result = file_system_provider_service_->UnmountFileSystem(
208 kWrongExtensionId, file_system_id); 217 kWrongExtensionId, file_system_id);
209 EXPECT_FALSE(result); 218 EXPECT_FALSE(result);
210 ASSERT_EQ(1u, observer.unmounts.size()); 219 ASSERT_EQ(1u, observer.unmounts.size());
211 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, observer.unmounts[0].error()); 220 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, observer.unmounts[0].error());
212 ASSERT_EQ(1u, file_system_provider_service_->GetMountedFileSystems().size()); 221 ASSERT_EQ(
222 1u,
223 file_system_provider_service_->GetProvidedFileSystemInfoList().size());
213 224
214 std::vector<ProvidedFileSystem> provided_file_systems = 225 std::vector<ProvidedFileSystemInfo> file_system_info_list =
215 file_system_provider_service_->GetMountedFileSystems(); 226 file_system_provider_service_->GetProvidedFileSystemInfoList();
216 ASSERT_EQ(1u, provided_file_systems.size()); 227 ASSERT_EQ(1u, file_system_info_list.size());
217 228
218 file_system_provider_service_->RemoveObserver(&observer); 229 file_system_provider_service_->RemoveObserver(&observer);
219 } 230 }
220 231
221 } // namespace file_system_provider 232 } // namespace file_system_provider
222 } // namespace chromeos 233 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698