Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / file_system_provider / provided_file_system.h
index 10aa0a9..95fc33d 100644 (file)
 #ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_H_
 #define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_H_
 
-#include <string>
+#include "base/memory/weak_ptr.h"
+#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
+#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
+#include "chrome/browser/chromeos/file_system_provider/request_manager.h"
+#include "webkit/browser/fileapi/async_file_util.h"
 
-#include "base/files/file_path.h"
+class Profile;
+
+namespace net {
+class IOBuffer;
+}  // namespace net
+
+namespace base {
+class FilePath;
+}  // namespace base
+
+namespace extensions {
+class EventRouter;
+}  // namespace extensions
 
 namespace chromeos {
 namespace file_system_provider {
 
-// Contains information about the provided file system instance.
-class ProvidedFileSystem {
- public:
-  ProvidedFileSystem();
-  ProvidedFileSystem(const std::string& extension_id,
-                     int file_system_id,
-                     const std::string& file_system_name,
-                     const base::FilePath& mount_path);
+class NotificationManagerInterface;
 
-  ~ProvidedFileSystem();
+// Provided file system implementation. Forwards requests between providers and
+// clients.
+class ProvidedFileSystem : public ProvidedFileSystemInterface {
+ public:
+  ProvidedFileSystem(Profile* profile,
+                     const ProvidedFileSystemInfo& file_system_info);
+  virtual ~ProvidedFileSystem();
 
-  const std::string& extension_id() const { return extension_id_; }
-  int file_system_id() const { return file_system_id_; }
-  const std::string& file_system_name() const { return file_system_name_; }
-  const base::FilePath& mount_path() const { return mount_path_; }
+  // ProvidedFileSystemInterface overrides.
+  virtual void RequestUnmount(
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void GetMetadata(const base::FilePath& entry_path,
+                           const GetMetadataCallback& callback) OVERRIDE;
+  virtual void ReadDirectory(
+      const base::FilePath& directory_path,
+      const fileapi::AsyncFileUtil::ReadDirectoryCallback& callback) OVERRIDE;
+  virtual void OpenFile(const base::FilePath& file_path,
+                        OpenFileMode mode,
+                        const OpenFileCallback& callback) OVERRIDE;
+  virtual void CloseFile(
+      int file_handle,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void ReadFile(int file_handle,
+                        net::IOBuffer* buffer,
+                        int64 offset,
+                        int length,
+                        const ReadChunkReceivedCallback& callback) OVERRIDE;
+  virtual void CreateDirectory(
+      const base::FilePath& directory_path,
+      bool exclusive,
+      bool recursive,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void DeleteEntry(
+      const base::FilePath& entry_path,
+      bool recursive,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void CreateFile(
+      const base::FilePath& file_path,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void CopyEntry(
+      const base::FilePath& source_path,
+      const base::FilePath& target_path,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void MoveEntry(
+      const base::FilePath& source_path,
+      const base::FilePath& target_path,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void Truncate(
+      const base::FilePath& file_path,
+      int64 length,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual void WriteFile(
+      int file_handle,
+      net::IOBuffer* buffer,
+      int64 offset,
+      int length,
+      const fileapi::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
+  virtual const ProvidedFileSystemInfo& GetFileSystemInfo() const OVERRIDE;
+  virtual RequestManager* GetRequestManager() OVERRIDE;
+  virtual base::WeakPtr<ProvidedFileSystemInterface> GetWeakPtr() OVERRIDE;
 
  private:
-  // ID of the extension providing this file system.
-  std::string extension_id_;
-
-  // ID of the file system, used internally.
-  int file_system_id_;
-
-  // Name of the file system, can be rendered in the UI.
-  std::string file_system_name_;
+  Profile* profile_;                       // Not owned.
+  extensions::EventRouter* event_router_;  // Not owned. May be NULL.
+  ProvidedFileSystemInfo file_system_info_;
+  scoped_ptr<NotificationManagerInterface> notification_manager_;
+  RequestManager request_manager_;
 
-  // Mount path of the underlying file system.
-  base::FilePath mount_path_;
+  base::WeakPtrFactory<ProvidedFileSystemInterface> weak_ptr_factory_;
+  DISALLOW_COPY_AND_ASSIGN(ProvidedFileSystem);
 };
 
 }  // namespace file_system_provider