- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / sync_file_system / sync_file_system_api.h
1 // Copyright (c) 2012 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_EXTENSIONS_API_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_API_H_
7
8 #include <map>
9
10 #include "base/platform_file.h"
11 #include "chrome/browser/extensions/chrome_extension_function.h"
12 #include "chrome/browser/sync_file_system/conflict_resolution_policy.h"
13 #include "chrome/browser/sync_file_system/sync_file_status.h"
14 #include "chrome/browser/sync_file_system/sync_status_code.h"
15 #include "chrome/common/extensions/api/sync_file_system.h"
16 #include "webkit/browser/fileapi/file_system_url.h"
17 #include "webkit/common/quota/quota_types.h"
18
19 namespace fileapi {
20 class FileSystemContext;
21 }
22
23 namespace extensions {
24
25 class SyncFileSystemDeleteFileSystemFunction
26     : public ChromeAsyncExtensionFunction {
27  public:
28   // TODO(kinuko,calvinlo): Uncomment this or delete this class when
29   // we decide if we want to revive this function.
30   // DECLARE_EXTENSION_FUNCTION("syncFileSystem.deleteFileSystem",
31   //                            SYNCFILESYSTEM_DELETEFILESYSTEM)
32
33  protected:
34   virtual ~SyncFileSystemDeleteFileSystemFunction() {}
35   virtual bool RunImpl() OVERRIDE;
36
37  private:
38   void DidDeleteFileSystem(base::PlatformFileError error);
39 };
40
41 class SyncFileSystemGetFileStatusFunction
42     : public ChromeAsyncExtensionFunction {
43  public:
44   DECLARE_EXTENSION_FUNCTION("syncFileSystem.getFileStatus",
45                              SYNCFILESYSTEM_GETFILESYNCSTATUS)
46
47  protected:
48   virtual ~SyncFileSystemGetFileStatusFunction() {}
49   virtual bool RunImpl() OVERRIDE;
50
51  private:
52   void DidGetFileStatus(
53       const sync_file_system::SyncStatusCode sync_service_status,
54       const sync_file_system::SyncFileStatus sync_file_status);
55 };
56
57 class SyncFileSystemGetFileStatusesFunction
58     : public ChromeAsyncExtensionFunction {
59  public:
60   DECLARE_EXTENSION_FUNCTION("syncFileSystem.getFileStatuses",
61                              SYNCFILESYSTEM_GETFILESYNCSTATUSES)
62   SyncFileSystemGetFileStatusesFunction();
63
64  protected:
65   virtual ~SyncFileSystemGetFileStatusesFunction();
66   virtual bool RunImpl() OVERRIDE;
67
68  private:
69   typedef std::pair<sync_file_system::SyncStatusCode,
70                     sync_file_system::SyncFileStatus> FileStatusPair;
71   typedef std::map<fileapi::FileSystemURL, FileStatusPair,
72                    fileapi::FileSystemURL::Comparator> URLToStatusMap;
73
74   void DidGetFileStatus(
75       const fileapi::FileSystemURL& file_system_url,
76       sync_file_system::SyncStatusCode sync_status_code,
77       sync_file_system::SyncFileStatus sync_file_statuses);
78
79   unsigned int num_expected_results_;
80   unsigned int num_results_received_;
81   URLToStatusMap file_sync_statuses_;
82 };
83
84 class SyncFileSystemGetUsageAndQuotaFunction
85     : public ChromeAsyncExtensionFunction {
86  public:
87   DECLARE_EXTENSION_FUNCTION("syncFileSystem.getUsageAndQuota",
88                              SYNCFILESYSTEM_GETUSAGEANDQUOTA)
89
90  protected:
91   virtual ~SyncFileSystemGetUsageAndQuotaFunction() {}
92   virtual bool RunImpl() OVERRIDE;
93
94  private:
95   void DidGetUsageAndQuota(quota::QuotaStatusCode status,
96                            int64 usage,
97                            int64 quota);
98 };
99
100 class SyncFileSystemRequestFileSystemFunction
101     : public ChromeAsyncExtensionFunction {
102  public:
103   DECLARE_EXTENSION_FUNCTION("syncFileSystem.requestFileSystem",
104                              SYNCFILESYSTEM_REQUESTFILESYSTEM)
105
106  protected:
107   virtual ~SyncFileSystemRequestFileSystemFunction() {}
108   virtual bool RunImpl() OVERRIDE;
109
110  private:
111   typedef SyncFileSystemRequestFileSystemFunction self;
112
113   // Returns the file system context for this extension.
114   fileapi::FileSystemContext* GetFileSystemContext();
115
116   void DidOpenFileSystem(const GURL& root_url,
117                          const std::string& file_system_name,
118                          base::PlatformFileError error);
119 };
120
121 class SyncFileSystemSetConflictResolutionPolicyFunction
122     : public ChromeSyncExtensionFunction {
123  public:
124   DECLARE_EXTENSION_FUNCTION("syncFileSystem.setConflictResolutionPolicy",
125                              SYNCFILESYSTEM_SETCONFLICTRESOLUTIONPOLICY)
126
127  protected:
128   virtual ~SyncFileSystemSetConflictResolutionPolicyFunction() {}
129   virtual bool RunImpl() OVERRIDE;
130 };
131
132 class SyncFileSystemGetConflictResolutionPolicyFunction
133     : public ChromeSyncExtensionFunction {
134  public:
135   DECLARE_EXTENSION_FUNCTION("syncFileSystem.getConflictResolutionPolicy",
136                              SYNCFILESYSTEM_GETCONFLICTRESOLUTIONPOLICY)
137
138  protected:
139   virtual ~SyncFileSystemGetConflictResolutionPolicyFunction() {}
140   virtual bool RunImpl() OVERRIDE;
141 };
142
143 class SyncFileSystemGetServiceStatusFunction
144     : public ChromeSyncExtensionFunction {
145  public:
146   DECLARE_EXTENSION_FUNCTION("syncFileSystem.getServiceStatus",
147                              SYNCFILESYSTEM_GETSERVICESTATUS)
148
149  protected:
150   virtual ~SyncFileSystemGetServiceStatusFunction() {}
151   virtual bool RunImpl() OVERRIDE;
152 };
153
154 }  // namespace extensions
155
156 #endif  // CHROME_BROWSER_EXTENSIONS_API_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_API_H_