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 "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "base/prefs/scoped_user_pref_update.h" | 9 #include "base/prefs/scoped_user_pref_update.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| 11 #include "base/values.h" |
11 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" | 12 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" |
12 #include "chrome/browser/chromeos/file_system_provider/observer.h" | 13 #include "chrome/browser/chromeos/file_system_provider/observer.h" |
13 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h" | 14 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h" |
14 #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" |
15 #include "chrome/browser/chromeos/file_system_provider/registry.h" | 16 #include "chrome/browser/chromeos/file_system_provider/registry.h" |
16 #include "chrome/browser/chromeos/file_system_provider/registry_interface.h" | 17 #include "chrome/browser/chromeos/file_system_provider/registry_interface.h" |
17 #include "chrome/browser/chromeos/file_system_provider/service_factory.h" | 18 #include "chrome/browser/chromeos/file_system_provider/service_factory.h" |
18 #include "chrome/browser/chromeos/file_system_provider/throttled_file_system.h" | 19 #include "chrome/browser/chromeos/file_system_provider/throttled_file_system.h" |
| 20 #include "extensions/browser/event_router.h" |
19 #include "extensions/browser/extension_registry.h" | 21 #include "extensions/browser/extension_registry.h" |
20 #include "extensions/browser/extension_system.h" | 22 #include "extensions/browser/extension_system.h" |
21 #include "storage/browser/fileapi/external_mount_points.h" | 23 #include "storage/browser/fileapi/external_mount_points.h" |
22 #include "storage/common/fileapi/file_system_mount_option.h" | 24 #include "storage/common/fileapi/file_system_mount_option.h" |
23 | 25 |
24 namespace chromeos { | 26 namespace chromeos { |
25 namespace file_system_provider { | 27 namespace file_system_provider { |
26 namespace { | 28 namespace { |
27 | 29 |
28 // Maximum number of file systems to be mounted in the same time, per profile. | 30 // Maximum number of file systems to be mounted in the same time, per profile. |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 if (file_system_it == file_system_map_.end()) | 240 if (file_system_it == file_system_map_.end()) |
239 return false; | 241 return false; |
240 | 242 |
241 file_system_it->second->RequestUnmount( | 243 file_system_it->second->RequestUnmount( |
242 base::Bind(&Service::OnRequestUnmountStatus, | 244 base::Bind(&Service::OnRequestUnmountStatus, |
243 weak_ptr_factory_.GetWeakPtr(), | 245 weak_ptr_factory_.GetWeakPtr(), |
244 file_system_it->second->GetFileSystemInfo())); | 246 file_system_it->second->GetFileSystemInfo())); |
245 return true; | 247 return true; |
246 } | 248 } |
247 | 249 |
| 250 bool Service::RequestMount(const std::string& extension_id) { |
| 251 DCHECK(thread_checker_.CalledOnValidThread()); |
| 252 |
| 253 extensions::EventRouter* const event_router = |
| 254 extensions::EventRouter::Get(profile_); |
| 255 DCHECK(event_router); |
| 256 |
| 257 if (!event_router->ExtensionHasEventListener( |
| 258 extension_id, extensions::api::file_system_provider:: |
| 259 OnMountRequested::kEventName)) { |
| 260 return false; |
| 261 } |
| 262 |
| 263 event_router->DispatchEventToExtension( |
| 264 extension_id, |
| 265 make_scoped_ptr(new extensions::Event( |
| 266 extensions::api::file_system_provider::OnMountRequested::kEventName, |
| 267 scoped_ptr<base::ListValue>(nullptr)))); |
| 268 |
| 269 return true; |
| 270 } |
| 271 |
248 std::vector<ProvidedFileSystemInfo> Service::GetProvidedFileSystemInfoList() { | 272 std::vector<ProvidedFileSystemInfo> Service::GetProvidedFileSystemInfoList() { |
249 DCHECK(thread_checker_.CalledOnValidThread()); | 273 DCHECK(thread_checker_.CalledOnValidThread()); |
250 | 274 |
251 std::vector<ProvidedFileSystemInfo> result; | 275 std::vector<ProvidedFileSystemInfo> result; |
252 for (ProvidedFileSystemMap::const_iterator it = file_system_map_.begin(); | 276 for (ProvidedFileSystemMap::const_iterator it = file_system_map_.begin(); |
253 it != file_system_map_.end(); | 277 it != file_system_map_.end(); |
254 ++it) { | 278 ++it) { |
255 result.push_back(it->second->GetFileSystemInfo()); | 279 result.push_back(it->second->GetFileSystemInfo()); |
256 } | 280 } |
257 return result; | 281 return result; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 } | 395 } |
372 | 396 |
373 void Service::OnWatcherListChanged( | 397 void Service::OnWatcherListChanged( |
374 const ProvidedFileSystemInfo& file_system_info, | 398 const ProvidedFileSystemInfo& file_system_info, |
375 const Watchers& watchers) { | 399 const Watchers& watchers) { |
376 registry_->RememberFileSystem(file_system_info, watchers); | 400 registry_->RememberFileSystem(file_system_info, watchers); |
377 } | 401 } |
378 | 402 |
379 } // namespace file_system_provider | 403 } // namespace file_system_provider |
380 } // namespace chromeos | 404 } // namespace chromeos |
OLD | NEW |