OLD | NEW |
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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 manifest, | 93 manifest, |
94 extensions::Extension::NO_FLAGS, | 94 extensions::Extension::NO_FLAGS, |
95 extension_id, | 95 extension_id, |
96 &error); | 96 &error); |
97 } | 97 } |
98 | 98 |
99 // Stores a provided file system information in preferences. | 99 // Stores a provided file system information in preferences. |
100 void RememberFakeFileSystem(TestingProfile* profile, | 100 void RememberFakeFileSystem(TestingProfile* profile, |
101 const std::string& extension_id, | 101 const std::string& extension_id, |
102 const std::string& file_system_id, | 102 const std::string& file_system_id, |
103 const std::string& display_name) { | 103 const std::string& display_name, |
| 104 bool writable) { |
104 TestingPrefServiceSyncable* const pref_service = | 105 TestingPrefServiceSyncable* const pref_service = |
105 profile->GetTestingPrefService(); | 106 profile->GetTestingPrefService(); |
106 ASSERT_TRUE(pref_service); | 107 ASSERT_TRUE(pref_service); |
107 | 108 |
108 base::DictionaryValue extensions; | 109 base::DictionaryValue extensions; |
109 base::DictionaryValue* file_systems = new base::DictionaryValue(); | 110 base::DictionaryValue* file_systems = new base::DictionaryValue(); |
110 base::DictionaryValue* file_system = new base::DictionaryValue(); | 111 base::DictionaryValue* file_system = new base::DictionaryValue(); |
111 file_system->SetStringWithoutPathExpansion(kPrefKeyFileSystemId, | 112 file_system->SetStringWithoutPathExpansion(kPrefKeyFileSystemId, |
112 kFileSystemId); | 113 kFileSystemId); |
113 file_system->SetStringWithoutPathExpansion(kPrefKeyDisplayName, kDisplayName); | 114 file_system->SetStringWithoutPathExpansion(kPrefKeyDisplayName, kDisplayName); |
| 115 file_system->SetBooleanWithoutPathExpansion(kPrefKeyWritable, writable); |
114 file_systems->SetWithoutPathExpansion(kFileSystemId, file_system); | 116 file_systems->SetWithoutPathExpansion(kFileSystemId, file_system); |
115 extensions.SetWithoutPathExpansion(kExtensionId, file_systems); | 117 extensions.SetWithoutPathExpansion(kExtensionId, file_systems); |
116 | 118 |
117 pref_service->Set(prefs::kFileSystemProviderMounted, extensions); | 119 pref_service->Set(prefs::kFileSystemProviderMounted, extensions); |
118 } | 120 } |
119 | 121 |
120 } // namespace | 122 } // namespace |
121 | 123 |
122 class FileSystemProviderServiceTest : public testing::Test { | 124 class FileSystemProviderServiceTest : public testing::Test { |
123 protected: | 125 protected: |
(...skipping 19 matching lines...) Expand all Loading... |
143 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; | 145 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; |
144 scoped_ptr<extensions::ExtensionRegistry> extension_registry_; | 146 scoped_ptr<extensions::ExtensionRegistry> extension_registry_; |
145 scoped_ptr<Service> service_; | 147 scoped_ptr<Service> service_; |
146 scoped_refptr<extensions::Extension> extension_; | 148 scoped_refptr<extensions::Extension> extension_; |
147 }; | 149 }; |
148 | 150 |
149 TEST_F(FileSystemProviderServiceTest, MountFileSystem) { | 151 TEST_F(FileSystemProviderServiceTest, MountFileSystem) { |
150 LoggingObserver observer; | 152 LoggingObserver observer; |
151 service_->AddObserver(&observer); | 153 service_->AddObserver(&observer); |
152 | 154 |
153 EXPECT_TRUE( | 155 EXPECT_TRUE(service_->MountFileSystem( |
154 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 156 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
155 | 157 |
156 ASSERT_EQ(1u, observer.mounts.size()); | 158 ASSERT_EQ(1u, observer.mounts.size()); |
157 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); | 159 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); |
158 EXPECT_EQ(kFileSystemId, | 160 EXPECT_EQ(kFileSystemId, |
159 observer.mounts[0].file_system_info().file_system_id()); | 161 observer.mounts[0].file_system_info().file_system_id()); |
160 base::FilePath expected_mount_path = | 162 base::FilePath expected_mount_path = |
161 util::GetMountPath(profile_.get(), kExtensionId, kFileSystemId); | 163 util::GetMountPath(profile_.get(), kExtensionId, kFileSystemId); |
162 EXPECT_EQ(expected_mount_path.AsUTF8Unsafe(), | 164 EXPECT_EQ(expected_mount_path.AsUTF8Unsafe(), |
163 observer.mounts[0].file_system_info().mount_path().AsUTF8Unsafe()); | 165 observer.mounts[0].file_system_info().mount_path().AsUTF8Unsafe()); |
164 EXPECT_EQ(kDisplayName, observer.mounts[0].file_system_info().display_name()); | 166 EXPECT_EQ(kDisplayName, observer.mounts[0].file_system_info().display_name()); |
| 167 EXPECT_FALSE(observer.mounts[0].file_system_info().writable()); |
165 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); | 168 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); |
166 ASSERT_EQ(0u, observer.unmounts.size()); | 169 ASSERT_EQ(0u, observer.unmounts.size()); |
167 | 170 |
168 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 171 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
169 service_->GetProvidedFileSystemInfoList(); | 172 service_->GetProvidedFileSystemInfoList(); |
170 ASSERT_EQ(1u, file_system_info_list.size()); | 173 ASSERT_EQ(1u, file_system_info_list.size()); |
171 | 174 |
172 service_->RemoveObserver(&observer); | 175 service_->RemoveObserver(&observer); |
173 } | 176 } |
174 | 177 |
| 178 TEST_F(FileSystemProviderServiceTest, MountFileSystem_Writable) { |
| 179 LoggingObserver observer; |
| 180 service_->AddObserver(&observer); |
| 181 |
| 182 EXPECT_TRUE(service_->MountFileSystem( |
| 183 kExtensionId, kFileSystemId, kDisplayName, true /* writable */)); |
| 184 |
| 185 ASSERT_EQ(1u, observer.mounts.size()); |
| 186 EXPECT_TRUE(observer.mounts[0].file_system_info().writable()); |
| 187 ASSERT_EQ(0u, observer.unmounts.size()); |
| 188 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
| 189 service_->GetProvidedFileSystemInfoList(); |
| 190 ASSERT_EQ(1u, file_system_info_list.size()); |
| 191 |
| 192 service_->RemoveObserver(&observer); |
| 193 } |
| 194 |
175 TEST_F(FileSystemProviderServiceTest, MountFileSystem_UniqueIds) { | 195 TEST_F(FileSystemProviderServiceTest, MountFileSystem_UniqueIds) { |
176 LoggingObserver observer; | 196 LoggingObserver observer; |
177 service_->AddObserver(&observer); | 197 service_->AddObserver(&observer); |
178 | 198 |
179 EXPECT_TRUE( | 199 EXPECT_TRUE(service_->MountFileSystem( |
180 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 200 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
181 EXPECT_FALSE( | 201 EXPECT_FALSE(service_->MountFileSystem( |
182 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 202 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
183 | 203 |
184 ASSERT_EQ(2u, observer.mounts.size()); | 204 ASSERT_EQ(2u, observer.mounts.size()); |
185 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); | 205 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); |
186 EXPECT_EQ(base::File::FILE_ERROR_EXISTS, observer.mounts[1].error()); | 206 EXPECT_EQ(base::File::FILE_ERROR_EXISTS, observer.mounts[1].error()); |
187 | 207 |
188 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 208 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
189 service_->GetProvidedFileSystemInfoList(); | 209 service_->GetProvidedFileSystemInfoList(); |
190 ASSERT_EQ(1u, file_system_info_list.size()); | 210 ASSERT_EQ(1u, file_system_info_list.size()); |
191 | 211 |
192 service_->RemoveObserver(&observer); | 212 service_->RemoveObserver(&observer); |
193 } | 213 } |
194 | 214 |
195 TEST_F(FileSystemProviderServiceTest, MountFileSystem_StressTest) { | 215 TEST_F(FileSystemProviderServiceTest, MountFileSystem_StressTest) { |
196 LoggingObserver observer; | 216 LoggingObserver observer; |
197 service_->AddObserver(&observer); | 217 service_->AddObserver(&observer); |
198 | 218 |
199 const size_t kMaxFileSystems = 16; | 219 const size_t kMaxFileSystems = 16; |
200 for (size_t i = 0; i < kMaxFileSystems; ++i) { | 220 for (size_t i = 0; i < kMaxFileSystems; ++i) { |
201 const std::string file_system_id = | 221 const std::string file_system_id = |
202 std::string("test-") + base::IntToString(i); | 222 std::string("test-") + base::IntToString(i); |
203 EXPECT_TRUE( | 223 EXPECT_TRUE(service_->MountFileSystem( |
204 service_->MountFileSystem(kExtensionId, file_system_id, kDisplayName)); | 224 kExtensionId, file_system_id, kDisplayName, false /* writable */)); |
205 } | 225 } |
206 ASSERT_EQ(kMaxFileSystems, observer.mounts.size()); | 226 ASSERT_EQ(kMaxFileSystems, observer.mounts.size()); |
207 | 227 |
208 // The next file system is out of limit, and registering it should fail. | 228 // The next file system is out of limit, and registering it should fail. |
209 EXPECT_FALSE( | 229 EXPECT_FALSE(service_->MountFileSystem( |
210 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 230 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
211 | 231 |
212 ASSERT_EQ(kMaxFileSystems + 1, observer.mounts.size()); | 232 ASSERT_EQ(kMaxFileSystems + 1, observer.mounts.size()); |
213 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, | 233 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, |
214 observer.mounts[kMaxFileSystems].error()); | 234 observer.mounts[kMaxFileSystems].error()); |
215 | 235 |
216 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 236 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
217 service_->GetProvidedFileSystemInfoList(); | 237 service_->GetProvidedFileSystemInfoList(); |
218 ASSERT_EQ(kMaxFileSystems, file_system_info_list.size()); | 238 ASSERT_EQ(kMaxFileSystems, file_system_info_list.size()); |
219 | 239 |
220 service_->RemoveObserver(&observer); | 240 service_->RemoveObserver(&observer); |
221 } | 241 } |
222 | 242 |
223 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem) { | 243 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem) { |
224 LoggingObserver observer; | 244 LoggingObserver observer; |
225 service_->AddObserver(&observer); | 245 service_->AddObserver(&observer); |
226 | 246 |
227 EXPECT_TRUE( | 247 EXPECT_TRUE(service_->MountFileSystem( |
228 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 248 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
229 ASSERT_EQ(1u, observer.mounts.size()); | 249 ASSERT_EQ(1u, observer.mounts.size()); |
230 | 250 |
231 EXPECT_TRUE(service_->UnmountFileSystem( | 251 EXPECT_TRUE(service_->UnmountFileSystem( |
232 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); | 252 kExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); |
233 ASSERT_EQ(1u, observer.unmounts.size()); | 253 ASSERT_EQ(1u, observer.unmounts.size()); |
234 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); | 254 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); |
235 | 255 |
236 EXPECT_EQ(kExtensionId, | 256 EXPECT_EQ(kExtensionId, |
237 observer.unmounts[0].file_system_info().extension_id()); | 257 observer.unmounts[0].file_system_info().extension_id()); |
238 EXPECT_EQ(kFileSystemId, | 258 EXPECT_EQ(kFileSystemId, |
239 observer.unmounts[0].file_system_info().file_system_id()); | 259 observer.unmounts[0].file_system_info().file_system_id()); |
240 | 260 |
241 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 261 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
242 service_->GetProvidedFileSystemInfoList(); | 262 service_->GetProvidedFileSystemInfoList(); |
243 ASSERT_EQ(0u, file_system_info_list.size()); | 263 ASSERT_EQ(0u, file_system_info_list.size()); |
244 | 264 |
245 service_->RemoveObserver(&observer); | 265 service_->RemoveObserver(&observer); |
246 } | 266 } |
247 | 267 |
248 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_OnExtensionUnload) { | 268 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_OnExtensionUnload) { |
249 LoggingObserver observer; | 269 LoggingObserver observer; |
250 service_->AddObserver(&observer); | 270 service_->AddObserver(&observer); |
251 | 271 |
252 EXPECT_TRUE( | 272 EXPECT_TRUE(service_->MountFileSystem( |
253 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 273 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
254 ASSERT_EQ(1u, observer.mounts.size()); | 274 ASSERT_EQ(1u, observer.mounts.size()); |
255 | 275 |
256 // Directly call the observer's method. | 276 // Directly call the observer's method. |
257 service_->OnExtensionUnloaded( | 277 service_->OnExtensionUnloaded( |
258 profile_.get(), | 278 profile_.get(), |
259 extension_.get(), | 279 extension_.get(), |
260 extensions::UnloadedExtensionInfo::REASON_DISABLE); | 280 extensions::UnloadedExtensionInfo::REASON_DISABLE); |
261 | 281 |
262 ASSERT_EQ(1u, observer.unmounts.size()); | 282 ASSERT_EQ(1u, observer.unmounts.size()); |
263 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); | 283 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error()); |
264 | 284 |
265 EXPECT_EQ(kExtensionId, | 285 EXPECT_EQ(kExtensionId, |
266 observer.unmounts[0].file_system_info().extension_id()); | 286 observer.unmounts[0].file_system_info().extension_id()); |
267 EXPECT_EQ(kFileSystemId, | 287 EXPECT_EQ(kFileSystemId, |
268 observer.unmounts[0].file_system_info().file_system_id()); | 288 observer.unmounts[0].file_system_info().file_system_id()); |
269 | 289 |
270 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 290 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
271 service_->GetProvidedFileSystemInfoList(); | 291 service_->GetProvidedFileSystemInfoList(); |
272 ASSERT_EQ(0u, file_system_info_list.size()); | 292 ASSERT_EQ(0u, file_system_info_list.size()); |
273 | 293 |
274 service_->RemoveObserver(&observer); | 294 service_->RemoveObserver(&observer); |
275 } | 295 } |
276 | 296 |
277 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_WrongExtensionId) { | 297 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_WrongExtensionId) { |
278 LoggingObserver observer; | 298 LoggingObserver observer; |
279 service_->AddObserver(&observer); | 299 service_->AddObserver(&observer); |
280 | 300 |
281 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe"; | 301 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe"; |
282 | 302 |
283 EXPECT_TRUE( | 303 EXPECT_TRUE(service_->MountFileSystem( |
284 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 304 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
285 ASSERT_EQ(1u, observer.mounts.size()); | 305 ASSERT_EQ(1u, observer.mounts.size()); |
286 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); | 306 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); |
287 | 307 |
288 EXPECT_FALSE(service_->UnmountFileSystem( | 308 EXPECT_FALSE(service_->UnmountFileSystem( |
289 kWrongExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); | 309 kWrongExtensionId, kFileSystemId, Service::UNMOUNT_REASON_USER)); |
290 ASSERT_EQ(1u, observer.unmounts.size()); | 310 ASSERT_EQ(1u, observer.unmounts.size()); |
291 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, observer.unmounts[0].error()); | 311 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, observer.unmounts[0].error()); |
292 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); | 312 ASSERT_EQ(1u, service_->GetProvidedFileSystemInfoList().size()); |
293 | 313 |
294 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 314 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
295 service_->GetProvidedFileSystemInfoList(); | 315 service_->GetProvidedFileSystemInfoList(); |
296 ASSERT_EQ(1u, file_system_info_list.size()); | 316 ASSERT_EQ(1u, file_system_info_list.size()); |
297 | 317 |
298 service_->RemoveObserver(&observer); | 318 service_->RemoveObserver(&observer); |
299 } | 319 } |
300 | 320 |
301 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { | 321 TEST_F(FileSystemProviderServiceTest, RestoreFileSystem_OnExtensionLoad) { |
302 // Create a fake entry in the preferences. | 322 // Create a fake entry in the preferences. |
303 RememberFakeFileSystem( | 323 RememberFakeFileSystem(profile_.get(), |
304 profile_.get(), kExtensionId, kFileSystemId, kDisplayName); | 324 kExtensionId, |
| 325 kFileSystemId, |
| 326 kDisplayName, |
| 327 true /* writable */); |
305 | 328 |
306 // Create a new service instance in order to load remembered file systems | 329 // Create a new service instance in order to load remembered file systems |
307 // from preferences. | 330 // from preferences. |
308 scoped_ptr<Service> new_service( | 331 scoped_ptr<Service> new_service( |
309 new Service(profile_.get(), extension_registry_.get())); | 332 new Service(profile_.get(), extension_registry_.get())); |
310 LoggingObserver observer; | 333 LoggingObserver observer; |
311 new_service->AddObserver(&observer); | 334 new_service->AddObserver(&observer); |
312 | 335 |
313 new_service->SetFileSystemFactoryForTesting( | 336 new_service->SetFileSystemFactoryForTesting( |
314 base::Bind(&FakeProvidedFileSystem::Create)); | 337 base::Bind(&FakeProvidedFileSystem::Create)); |
315 | 338 |
316 EXPECT_EQ(0u, observer.mounts.size()); | 339 EXPECT_EQ(0u, observer.mounts.size()); |
317 | 340 |
318 // Directly call the observer's method. | 341 // Directly call the observer's method. |
319 new_service->OnExtensionLoaded(profile_.get(), extension_.get()); | 342 new_service->OnExtensionLoaded(profile_.get(), extension_.get()); |
320 | 343 |
321 ASSERT_EQ(1u, observer.mounts.size()); | 344 ASSERT_EQ(1u, observer.mounts.size()); |
322 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); | 345 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error()); |
323 | 346 |
324 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); | 347 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system_info().extension_id()); |
325 EXPECT_EQ(kFileSystemId, | 348 EXPECT_EQ(kFileSystemId, |
326 observer.mounts[0].file_system_info().file_system_id()); | 349 observer.mounts[0].file_system_info().file_system_id()); |
| 350 EXPECT_TRUE(observer.mounts[0].file_system_info().writable()); |
327 | 351 |
328 std::vector<ProvidedFileSystemInfo> file_system_info_list = | 352 std::vector<ProvidedFileSystemInfo> file_system_info_list = |
329 new_service->GetProvidedFileSystemInfoList(); | 353 new_service->GetProvidedFileSystemInfoList(); |
330 ASSERT_EQ(1u, file_system_info_list.size()); | 354 ASSERT_EQ(1u, file_system_info_list.size()); |
331 | 355 |
332 new_service->RemoveObserver(&observer); | 356 new_service->RemoveObserver(&observer); |
333 } | 357 } |
334 | 358 |
335 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { | 359 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnMount) { |
336 LoggingObserver observer; | 360 LoggingObserver observer; |
337 service_->AddObserver(&observer); | 361 service_->AddObserver(&observer); |
338 | 362 |
339 EXPECT_TRUE( | 363 EXPECT_TRUE(service_->MountFileSystem( |
340 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 364 kExtensionId, kFileSystemId, kDisplayName, true /* writable */)); |
341 ASSERT_EQ(1u, observer.mounts.size()); | 365 ASSERT_EQ(1u, observer.mounts.size()); |
342 | 366 |
343 TestingPrefServiceSyncable* const pref_service = | 367 TestingPrefServiceSyncable* const pref_service = |
344 profile_->GetTestingPrefService(); | 368 profile_->GetTestingPrefService(); |
345 ASSERT_TRUE(pref_service); | 369 ASSERT_TRUE(pref_service); |
346 | 370 |
347 const base::DictionaryValue* const extensions = | 371 const base::DictionaryValue* const extensions = |
348 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); | 372 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); |
349 ASSERT_TRUE(extensions); | 373 ASSERT_TRUE(extensions); |
350 | 374 |
(...skipping 11 matching lines...) Expand all Loading... |
362 std::string file_system_id; | 386 std::string file_system_id; |
363 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyFileSystemId, | 387 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyFileSystemId, |
364 &file_system_id)); | 388 &file_system_id)); |
365 EXPECT_EQ(kFileSystemId, file_system_id); | 389 EXPECT_EQ(kFileSystemId, file_system_id); |
366 | 390 |
367 std::string display_name; | 391 std::string display_name; |
368 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyDisplayName, | 392 EXPECT_TRUE(file_system->GetStringWithoutPathExpansion(kPrefKeyDisplayName, |
369 &display_name)); | 393 &display_name)); |
370 EXPECT_EQ(kDisplayName, display_name); | 394 EXPECT_EQ(kDisplayName, display_name); |
371 | 395 |
| 396 bool writable = false; |
| 397 EXPECT_TRUE( |
| 398 file_system->GetBooleanWithoutPathExpansion(kPrefKeyWritable, &writable)); |
| 399 EXPECT_TRUE(writable); |
| 400 |
372 service_->RemoveObserver(&observer); | 401 service_->RemoveObserver(&observer); |
373 } | 402 } |
374 | 403 |
375 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) { | 404 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountOnShutdown) { |
376 LoggingObserver observer; | 405 LoggingObserver observer; |
377 service_->AddObserver(&observer); | 406 service_->AddObserver(&observer); |
378 | 407 |
379 TestingPrefServiceSyncable* const pref_service = | 408 TestingPrefServiceSyncable* const pref_service = |
380 profile_->GetTestingPrefService(); | 409 profile_->GetTestingPrefService(); |
381 ASSERT_TRUE(pref_service); | 410 ASSERT_TRUE(pref_service); |
382 | 411 |
383 { | 412 { |
384 EXPECT_TRUE( | 413 EXPECT_TRUE(service_->MountFileSystem( |
385 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 414 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
386 ASSERT_EQ(1u, observer.mounts.size()); | 415 ASSERT_EQ(1u, observer.mounts.size()); |
387 | 416 |
388 const base::DictionaryValue* extensions = | 417 const base::DictionaryValue* extensions = |
389 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); | 418 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); |
390 ASSERT_TRUE(extensions); | 419 ASSERT_TRUE(extensions); |
391 | 420 |
392 const base::DictionaryValue* file_systems = NULL; | 421 const base::DictionaryValue* file_systems = NULL; |
393 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, | 422 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, |
394 &file_systems)); | 423 &file_systems)); |
395 EXPECT_EQ(1u, file_systems->size()); | 424 EXPECT_EQ(1u, file_systems->size()); |
(...skipping 18 matching lines...) Expand all Loading... |
414 | 443 |
415 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) { | 444 TEST_F(FileSystemProviderServiceTest, RememberFileSystem_OnUnmountByUser) { |
416 LoggingObserver observer; | 445 LoggingObserver observer; |
417 service_->AddObserver(&observer); | 446 service_->AddObserver(&observer); |
418 | 447 |
419 TestingPrefServiceSyncable* const pref_service = | 448 TestingPrefServiceSyncable* const pref_service = |
420 profile_->GetTestingPrefService(); | 449 profile_->GetTestingPrefService(); |
421 ASSERT_TRUE(pref_service); | 450 ASSERT_TRUE(pref_service); |
422 | 451 |
423 { | 452 { |
424 EXPECT_TRUE( | 453 EXPECT_TRUE(service_->MountFileSystem( |
425 service_->MountFileSystem(kExtensionId, kFileSystemId, kDisplayName)); | 454 kExtensionId, kFileSystemId, kDisplayName, false /* writable */)); |
426 ASSERT_EQ(1u, observer.mounts.size()); | 455 ASSERT_EQ(1u, observer.mounts.size()); |
427 | 456 |
428 const base::DictionaryValue* extensions = | 457 const base::DictionaryValue* extensions = |
429 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); | 458 pref_service->GetDictionary(prefs::kFileSystemProviderMounted); |
430 ASSERT_TRUE(extensions); | 459 ASSERT_TRUE(extensions); |
431 | 460 |
432 const base::DictionaryValue* file_systems = NULL; | 461 const base::DictionaryValue* file_systems = NULL; |
433 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, | 462 ASSERT_TRUE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, |
434 &file_systems)); | 463 &file_systems)); |
435 EXPECT_EQ(1u, file_systems->size()); | 464 EXPECT_EQ(1u, file_systems->size()); |
(...skipping 10 matching lines...) Expand all Loading... |
446 const base::DictionaryValue* file_systems = NULL; | 475 const base::DictionaryValue* file_systems = NULL; |
447 EXPECT_FALSE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, | 476 EXPECT_FALSE(extensions->GetDictionaryWithoutPathExpansion(kExtensionId, |
448 &file_systems)); | 477 &file_systems)); |
449 } | 478 } |
450 | 479 |
451 service_->RemoveObserver(&observer); | 480 service_->RemoveObserver(&observer); |
452 } | 481 } |
453 | 482 |
454 } // namespace file_system_provider | 483 } // namespace file_system_provider |
455 } // namespace chromeos | 484 } // namespace chromeos |
OLD | NEW |