Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / file_system_provider / provided_file_system.h
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_H_
6 #define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_H_
7
8 #include "base/memory/weak_ptr.h"
9 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
10 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
11 #include "chrome/browser/chromeos/file_system_provider/request_manager.h"
12 #include "storage/browser/fileapi/async_file_util.h"
13
14 class Profile;
15
16 namespace net {
17 class IOBuffer;
18 }  // namespace net
19
20 namespace base {
21 class FilePath;
22 }  // namespace base
23
24 namespace extensions {
25 class EventRouter;
26 }  // namespace extensions
27
28 namespace chromeos {
29 namespace file_system_provider {
30
31 class NotificationManagerInterface;
32
33 // Provided file system implementation. Forwards requests between providers and
34 // clients.
35 class ProvidedFileSystem : public ProvidedFileSystemInterface {
36  public:
37   ProvidedFileSystem(Profile* profile,
38                      const ProvidedFileSystemInfo& file_system_info);
39   virtual ~ProvidedFileSystem();
40
41   // ProvidedFileSystemInterface overrides.
42   virtual AbortCallback RequestUnmount(
43       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
44   virtual AbortCallback GetMetadata(
45       const base::FilePath& entry_path,
46       MetadataFieldMask fields,
47       const GetMetadataCallback& callback) OVERRIDE;
48   virtual AbortCallback ReadDirectory(
49       const base::FilePath& directory_path,
50       const storage::AsyncFileUtil::ReadDirectoryCallback& callback) OVERRIDE;
51   virtual AbortCallback OpenFile(const base::FilePath& file_path,
52                                  OpenFileMode mode,
53                                  const OpenFileCallback& callback) OVERRIDE;
54   virtual AbortCallback CloseFile(
55       int file_handle,
56       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
57   virtual AbortCallback ReadFile(
58       int file_handle,
59       net::IOBuffer* buffer,
60       int64 offset,
61       int length,
62       const ReadChunkReceivedCallback& callback) OVERRIDE;
63   virtual AbortCallback CreateDirectory(
64       const base::FilePath& directory_path,
65       bool recursive,
66       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
67   virtual AbortCallback DeleteEntry(
68       const base::FilePath& entry_path,
69       bool recursive,
70       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
71   virtual AbortCallback CreateFile(
72       const base::FilePath& file_path,
73       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
74   virtual AbortCallback CopyEntry(
75       const base::FilePath& source_path,
76       const base::FilePath& target_path,
77       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
78   virtual AbortCallback MoveEntry(
79       const base::FilePath& source_path,
80       const base::FilePath& target_path,
81       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
82   virtual AbortCallback Truncate(
83       const base::FilePath& file_path,
84       int64 length,
85       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
86   virtual AbortCallback WriteFile(
87       int file_handle,
88       net::IOBuffer* buffer,
89       int64 offset,
90       int length,
91       const storage::AsyncFileUtil::StatusCallback& callback) OVERRIDE;
92   virtual const ProvidedFileSystemInfo& GetFileSystemInfo() const OVERRIDE;
93   virtual RequestManager* GetRequestManager() OVERRIDE;
94   virtual base::WeakPtr<ProvidedFileSystemInterface> GetWeakPtr() OVERRIDE;
95
96  private:
97   // Aborts an operation executed with a request id equal to
98   // |operation_request_id|. The request is removed immediately on the C++ side
99   // despite being handled by the providing extension or not.
100   void Abort(int operation_request_id,
101              const storage::AsyncFileUtil::StatusCallback& callback);
102
103   Profile* profile_;                       // Not owned.
104   extensions::EventRouter* event_router_;  // Not owned. May be NULL.
105   ProvidedFileSystemInfo file_system_info_;
106   scoped_ptr<NotificationManagerInterface> notification_manager_;
107   RequestManager request_manager_;
108
109   base::WeakPtrFactory<ProvidedFileSystem> weak_ptr_factory_;
110   DISALLOW_COPY_AND_ASSIGN(ProvidedFileSystem);
111 };
112
113 }  // namespace file_system_provider
114 }  // namespace chromeos
115
116 #endif  // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_H_