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