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 f3cb080a4e56aa21aafb7413c626b4565a565797..735e05fb9bf14f79a37f67a34639838da72c7a7e 100644 |
--- a/chrome/browser/chromeos/file_system_provider/service.h |
+++ b/chrome/browser/chromeos/file_system_provider/service.h |
@@ -9,8 +9,13 @@ |
#include <string> |
#include <vector> |
+#include "base/files/file.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/observer_list.h" |
+#include "base/values.h" |
#include "chrome/browser/chromeos/file_system_provider/observer.h" |
+#include "chrome/browser/chromeos/file_system_provider/request_manager.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/extensions/api/file_system_provider.h" |
#include "components/keyed_service/core/keyed_service.h" |
@@ -27,19 +32,39 @@ class Service : public KeyedService { |
explicit Service(Profile* profile); |
virtual ~Service(); |
- // Registers a file system provided by an extension with the |extension_id|. |
+ // 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. |
- int RegisterFileSystem(const std::string& extension_id, |
- const std::string& file_system_name); |
+ int MountFileSystem(const std::string& extension_id, |
+ const std::string& file_system_name); |
- // Unregisters a file system with the specified |file_system_id| for the |
+ // Unmounts a file system with the specified |file_system_id| for the |
// |extension_id|. For success returns true, otherwise false. |
- bool UnregisterFileSystem(const std::string& extension_id, |
- int file_system_id); |
- |
- // Returns a list of currently registered file systems. All items are copied. |
- std::vector<ProvidedFileSystem> GetRegisteredFileSystems(); |
+ 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). |
+ bool RequestUnmount(int file_system_id); |
// Adds and removes observers. |
void AddObserver(Observer* observer); |
@@ -48,13 +73,23 @@ class Service : public KeyedService { |
// Gets the singleton instance for the |context|. |
static Service* Get(content::BrowserContext* context); |
+ // BrowserContextKeyedService overrides. |
+ virtual void Shutdown() OVERRIDE; |
+ |
private: |
typedef std::map<int, ProvidedFileSystem> FileSystemMap; |
+ // Called when the providing extension calls the success callback for the |
+ // onUnmountRequested event. |
+ void OnRequestUnmountError(const ProvidedFileSystem& file_system, |
+ base::File::Error error); |
+ |
+ RequestManager request_manager_; |
Profile* profile_; |
ObserverList<Observer> observers_; |
FileSystemMap file_systems_; |
int next_id_; |
+ base::WeakPtrFactory<Service> weak_ptr_factory_; |
DISALLOW_COPY_AND_ASSIGN(Service); |
}; |