sync_file_system_api.h revision 58537e28ecd584eab876aee8be7156509866d23a
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/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 19namespace fileapi { 20class FileSystemContext; 21} 22 23namespace extensions { 24 25class SyncFileSystemDeleteFileSystemFunction 26 : public AsyncExtensionFunction { 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 42class SyncFileSystemGetFileStatusFunction 43 : public AsyncExtensionFunction { 44 public: 45 DECLARE_EXTENSION_FUNCTION("syncFileSystem.getFileStatus", 46 SYNCFILESYSTEM_GETFILESYNCSTATUS) 47 48 protected: 49 virtual ~SyncFileSystemGetFileStatusFunction() {} 50 virtual bool RunImpl() OVERRIDE; 51 52 private: 53 void DidGetFileStatus( 54 const sync_file_system::SyncStatusCode sync_service_status, 55 const sync_file_system::SyncFileStatus sync_file_status); 56}; 57 58class SyncFileSystemGetFileStatusesFunction 59 : public AsyncExtensionFunction { 60 public: 61 DECLARE_EXTENSION_FUNCTION("syncFileSystem.getFileStatuses", 62 SYNCFILESYSTEM_GETFILESYNCSTATUSES) 63 SyncFileSystemGetFileStatusesFunction(); 64 65 protected: 66 virtual ~SyncFileSystemGetFileStatusesFunction(); 67 virtual bool RunImpl() OVERRIDE; 68 69 private: 70 typedef std::pair<sync_file_system::SyncStatusCode, 71 sync_file_system::SyncFileStatus> FileStatusPair; 72 typedef std::map<fileapi::FileSystemURL, FileStatusPair, 73 fileapi::FileSystemURL::Comparator> URLToStatusMap; 74 75 void DidGetFileStatus( 76 const fileapi::FileSystemURL& file_system_url, 77 sync_file_system::SyncStatusCode sync_status_code, 78 sync_file_system::SyncFileStatus sync_file_statuses); 79 80 unsigned int num_expected_results_; 81 unsigned int num_results_received_; 82 URLToStatusMap file_sync_statuses_; 83}; 84 85class SyncFileSystemGetUsageAndQuotaFunction 86 : public AsyncExtensionFunction { 87 public: 88 DECLARE_EXTENSION_FUNCTION("syncFileSystem.getUsageAndQuota", 89 SYNCFILESYSTEM_GETUSAGEANDQUOTA) 90 91 protected: 92 virtual ~SyncFileSystemGetUsageAndQuotaFunction() {} 93 virtual bool RunImpl() OVERRIDE; 94 95 private: 96 void DidGetUsageAndQuota(quota::QuotaStatusCode status, 97 int64 usage, 98 int64 quota); 99}; 100 101class SyncFileSystemRequestFileSystemFunction 102 : public AsyncExtensionFunction { 103 public: 104 DECLARE_EXTENSION_FUNCTION("syncFileSystem.requestFileSystem", 105 SYNCFILESYSTEM_REQUESTFILESYSTEM) 106 107 protected: 108 virtual ~SyncFileSystemRequestFileSystemFunction() {} 109 virtual bool RunImpl() OVERRIDE; 110 111 private: 112 typedef SyncFileSystemRequestFileSystemFunction self; 113 114 // Returns the file system context for this extension. 115 fileapi::FileSystemContext* GetFileSystemContext(); 116 117 void DidOpenFileSystem(base::PlatformFileError error, 118 const std::string& file_system_name, 119 const GURL& root_url); 120}; 121 122class SyncFileSystemSetConflictResolutionPolicyFunction 123 : public SyncExtensionFunction { 124 public: 125 DECLARE_EXTENSION_FUNCTION("syncFileSystem.setConflictResolutionPolicy", 126 SYNCFILESYSTEM_SETCONFLICTRESOLUTIONPOLICY) 127 128 protected: 129 virtual ~SyncFileSystemSetConflictResolutionPolicyFunction() {} 130 virtual bool RunImpl() OVERRIDE; 131}; 132 133class SyncFileSystemGetConflictResolutionPolicyFunction 134 : public SyncExtensionFunction { 135 public: 136 DECLARE_EXTENSION_FUNCTION("syncFileSystem.getConflictResolutionPolicy", 137 SYNCFILESYSTEM_GETCONFLICTRESOLUTIONPOLICY) 138 139 protected: 140 virtual ~SyncFileSystemGetConflictResolutionPolicyFunction() {} 141 virtual bool RunImpl() OVERRIDE; 142}; 143 144class SyncFileSystemGetServiceStatusFunction : public SyncExtensionFunction { 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_ 157