| Index: chrome/browser/chromeos/file_system_provider/service.h
|
| diff --git a/chrome/browser/chromeos/file_system_provider/service.h b/chrome/browser/chromeos/file_system_provider/service.h
|
| index 735e05fb9bf14f79a37f67a34639838da72c7a7e..adf09c5de2ccb5730fe3729fb3d7af87cf7195b4 100644
|
| --- a/chrome/browser/chromeos/file_system_provider/service.h
|
| +++ b/chrome/browser/chromeos/file_system_provider/service.h
|
| @@ -21,17 +21,36 @@
|
| #include "components/keyed_service/core/keyed_service.h"
|
| #include "content/public/browser/browser_context.h"
|
|
|
| +namespace extensions {
|
| +class EventRouter;
|
| +} // namespace extensions
|
| +
|
| namespace chromeos {
|
| namespace file_system_provider {
|
|
|
| +class ProvidedFileSystemFactoryInterface;
|
| +class ProvidedFileSystemInfo;
|
| +class ProvidedFileSystemInterface;
|
| class ServiceFactory;
|
|
|
| -// Manages and registers the fileSystemProvider service.
|
| +// Manages and registers the file system provider service. Maintains provided
|
| +// file systems.
|
| class Service : public KeyedService {
|
| public:
|
| + typedef base::Callback<ProvidedFileSystemInterface*(
|
| + extensions::EventRouter* event_router,
|
| + RequestManager* request_manager,
|
| + const ProvidedFileSystemInfo& file_system_info)>
|
| + FileSystemFactoryCallback;
|
| +
|
| explicit Service(Profile* profile);
|
| virtual ~Service();
|
|
|
| + // Sets a custom ProvidedFileSystemInterface factory. Used by unit tests,
|
| + // where an event router is not available.
|
| + void SetFileSystemFactoryForTests(
|
| + const FileSystemFactoryCallback& factory_callback);
|
| +
|
| // Mounts a file system provided by an extension with the |extension_id|.
|
| // For success, it returns a numeric file system id, which is an
|
| // auto-incremented non-zero value. For failures, it returns zero.
|
| @@ -42,30 +61,21 @@ class Service : public KeyedService {
|
| // |extension_id|. For success returns true, otherwise false.
|
| bool UnmountFileSystem(const std::string& extension_id, int file_system_id);
|
|
|
| - // Returns a list of currently mounted file systems. All items are copied.
|
| - std::vector<ProvidedFileSystem> GetMountedFileSystems();
|
| -
|
| - // Handles successful response for the |request_id|. If |has_next| is false,
|
| - // then the request is disposed, after handling the |response|. On error,
|
| - // returns false, and the request is disposed.
|
| - bool FulfillRequest(const std::string& extension_id,
|
| - int file_system_id,
|
| - int request_id,
|
| - scoped_ptr<base::DictionaryValue> result,
|
| - bool has_next);
|
| -
|
| - // Handles error response for the |request_id|. If handling the error fails,
|
| - // returns false. Always disposes the request.
|
| - bool RejectRequest(const std::string& extension_id,
|
| - int file_system_id,
|
| - int request_id,
|
| - base::File::Error error);
|
| -
|
| - // Requests unmounting of a file system with the passed |file_system_id|.
|
| - // Returns true is unmounting has been requested. False, if the request is
|
| - // invalid (eg. already unmounted).
|
| + // Requests unmounting of the file system. The callback is called when the
|
| + // request is accepted or rejected, with an error code. Returns false if the
|
| + // request could not been created, true otherwise.
|
| bool RequestUnmount(int file_system_id);
|
|
|
| + // Returns a list of information of all currently provided file systems. All
|
| + // items are copied.
|
| + std::vector<ProvidedFileSystemInfo> GetProvidedFileSystemInfoList();
|
| +
|
| + // Returns a provided file system with |file_system_id|, handled by
|
| + // the extension with |extension_id|. If not found, then returns NULL.
|
| + ProvidedFileSystemInterface* GetProvidedFileSystem(
|
| + const std::string& extension_id,
|
| + int file_system_id);
|
| +
|
| // Adds and removes observers.
|
| void AddObserver(Observer* observer);
|
| void RemoveObserver(Observer* observer);
|
| @@ -76,18 +86,23 @@ class Service : public KeyedService {
|
| // BrowserContextKeyedService overrides.
|
| virtual void Shutdown() OVERRIDE;
|
|
|
| + // Getter for the request manager. Used by the extension API to forward
|
| + // replies. Valid as long as the service.
|
| + RequestManager* request_manager() { return &request_manager_; }
|
| +
|
| private:
|
| - typedef std::map<int, ProvidedFileSystem> FileSystemMap;
|
| + typedef std::map<int, ProvidedFileSystemInterface*> ProvidedFileSystemMap;
|
|
|
| - // Called when the providing extension calls the success callback for the
|
| - // onUnmountRequested event.
|
| - void OnRequestUnmountError(const ProvidedFileSystem& file_system,
|
| - base::File::Error error);
|
| + // Called when the providing extension accepts or refuses a unmount request.
|
| + // If |error| is equal to FILE_OK, then the request is accepted.
|
| + void OnRequestUnmountStatus(const ProvidedFileSystemInfo& file_system_info,
|
| + base::File::Error error);
|
|
|
| RequestManager request_manager_;
|
| Profile* profile_;
|
| + FileSystemFactoryCallback file_system_factory_;
|
| ObserverList<Observer> observers_;
|
| - FileSystemMap file_systems_;
|
| + ProvidedFileSystemMap file_system_map_; // Owns pointers.
|
| int next_id_;
|
| base::WeakPtrFactory<Service> weak_ptr_factory_;
|
|
|
|
|