OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // This file provides Drive specific API functions. | 5 // This file provides Drive specific API functions. |
6 | 6 |
7 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ | 7 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ |
8 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ | 8 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ |
9 | 9 |
10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "chrome/browser/chromeos/drive/file_errors.h" | 12 #include "chrome/browser/chromeos/drive/file_errors.h" |
13 #include "chrome/browser/chromeos/drive/file_system_interface.h" | 13 #include "chrome/browser/chromeos/drive/file_system_interface.h" |
14 #include "chrome/browser/chromeos/extensions/file_manager/private_api_base.h" | 14 #include "chrome/browser/chromeos/extensions/file_manager/private_api_base.h" |
15 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" | 15 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" |
16 | 16 |
17 namespace drive { | 17 namespace drive { |
18 class FileCacheEntry; | 18 class FileCacheEntry; |
19 class ResourceEntry; | 19 class ResourceEntry; |
20 struct SearchResultInfo; | 20 struct SearchResultInfo; |
21 } | 21 } |
22 | 22 |
23 namespace google_apis { | 23 namespace google_apis { |
24 class AuthService; | 24 class AuthService; |
25 } | 25 } |
26 | 26 |
27 namespace extensions { | 27 namespace extensions { |
28 | 28 |
29 namespace api { | 29 namespace api { |
30 namespace file_browser_private { | 30 namespace file_manager_private { |
31 struct EntryProperties; | 31 struct EntryProperties; |
32 } // namespace file_browser_private | 32 } // namespace file_manager_private |
33 } // namespace api | 33 } // namespace api |
34 | 34 |
35 // Retrieves property information for an entry and returns it as a dictionary. | 35 // Retrieves property information for an entry and returns it as a dictionary. |
36 // On error, returns a dictionary with the key "error" set to the error number | 36 // On error, returns a dictionary with the key "error" set to the error number |
37 // (base::File::Error). | 37 // (base::File::Error). |
38 class FileBrowserPrivateGetEntryPropertiesFunction | 38 class FileManagerPrivateGetEntryPropertiesFunction |
39 : public LoggedAsyncExtensionFunction { | 39 : public LoggedAsyncExtensionFunction { |
40 public: | 40 public: |
41 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.getEntryProperties", | 41 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.getEntryProperties", |
42 FILEBROWSERPRIVATE_GETENTRYPROPERTIES) | 42 FILEMANAGERPRIVATE_GETENTRYPROPERTIES) |
43 | 43 |
44 FileBrowserPrivateGetEntryPropertiesFunction(); | 44 FileManagerPrivateGetEntryPropertiesFunction(); |
45 | 45 |
46 protected: | 46 protected: |
47 virtual ~FileBrowserPrivateGetEntryPropertiesFunction(); | 47 virtual ~FileManagerPrivateGetEntryPropertiesFunction(); |
48 | 48 |
49 // AsyncExtensionFunction overrides. | 49 // AsyncExtensionFunction overrides. |
50 virtual bool RunAsync() OVERRIDE; | 50 virtual bool RunAsync() OVERRIDE; |
51 | 51 |
52 private: | 52 private: |
53 void CompleteGetEntryProperties( | 53 void CompleteGetEntryProperties( |
54 size_t index, | 54 size_t index, |
55 scoped_ptr<api::file_browser_private::EntryProperties> properties, | 55 scoped_ptr<api::file_manager_private::EntryProperties> properties, |
56 base::File::Error error); | 56 base::File::Error error); |
57 | 57 |
58 size_t processed_count_; | 58 size_t processed_count_; |
59 std::vector<linked_ptr<api::file_browser_private::EntryProperties> > | 59 std::vector<linked_ptr<api::file_manager_private::EntryProperties> > |
60 properties_list_; | 60 properties_list_; |
61 }; | 61 }; |
62 | 62 |
63 // Implements the chrome.fileBrowserPrivate.pinDriveFile method. | 63 // Implements the chrome.fileManagerPrivate.pinDriveFile method. |
64 class FileBrowserPrivatePinDriveFileFunction | 64 class FileManagerPrivatePinDriveFileFunction |
65 : public LoggedAsyncExtensionFunction { | 65 : public LoggedAsyncExtensionFunction { |
66 public: | 66 public: |
67 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.pinDriveFile", | 67 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.pinDriveFile", |
68 FILEBROWSERPRIVATE_PINDRIVEFILE) | 68 FILEMANAGERPRIVATE_PINDRIVEFILE) |
69 | 69 |
70 protected: | 70 protected: |
71 virtual ~FileBrowserPrivatePinDriveFileFunction() {} | 71 virtual ~FileManagerPrivatePinDriveFileFunction() {} |
72 | 72 |
73 // AsyncExtensionFunction overrides. | 73 // AsyncExtensionFunction overrides. |
74 virtual bool RunAsync() OVERRIDE; | 74 virtual bool RunAsync() OVERRIDE; |
75 | 75 |
76 private: | 76 private: |
77 // Callback for RunAsync(). | 77 // Callback for RunAsync(). |
78 void OnPinStateSet(drive::FileError error); | 78 void OnPinStateSet(drive::FileError error); |
79 }; | 79 }; |
80 | 80 |
81 // Get drive files for the given list of file URLs. Initiate downloading of | 81 // Get drive files for the given list of file URLs. Initiate downloading of |
82 // drive files if these are not cached. Return a list of local file names. | 82 // drive files if these are not cached. Return a list of local file names. |
83 // This function puts empty strings instead of local paths for files could | 83 // This function puts empty strings instead of local paths for files could |
84 // not be obtained. For instance, this can happen if the user specifies a new | 84 // not be obtained. For instance, this can happen if the user specifies a new |
85 // file name to save a file on drive. There may be other reasons to fail. The | 85 // file name to save a file on drive. There may be other reasons to fail. The |
86 // file manager should check if the local paths returned from getDriveFiles() | 86 // file manager should check if the local paths returned from getDriveFiles() |
87 // contain empty paths. | 87 // contain empty paths. |
88 // TODO(satorux): Should we propagate error types to the JavaScript layer? | 88 // TODO(satorux): Should we propagate error types to the JavaScript layer? |
89 class FileBrowserPrivateGetDriveFilesFunction | 89 class FileManagerPrivateGetDriveFilesFunction |
90 : public LoggedAsyncExtensionFunction { | 90 : public LoggedAsyncExtensionFunction { |
91 public: | 91 public: |
92 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.getDriveFiles", | 92 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.getDriveFiles", |
93 FILEBROWSERPRIVATE_GETDRIVEFILES) | 93 FILEMANAGERPRIVATE_GETDRIVEFILES) |
94 | 94 |
95 FileBrowserPrivateGetDriveFilesFunction(); | 95 FileManagerPrivateGetDriveFilesFunction(); |
96 | 96 |
97 protected: | 97 protected: |
98 virtual ~FileBrowserPrivateGetDriveFilesFunction(); | 98 virtual ~FileManagerPrivateGetDriveFilesFunction(); |
99 | 99 |
100 // AsyncExtensionFunction overrides. | 100 // AsyncExtensionFunction overrides. |
101 virtual bool RunAsync() OVERRIDE; | 101 virtual bool RunAsync() OVERRIDE; |
102 | 102 |
103 private: | 103 private: |
104 // Gets the file on the top of the |remaining_drive_paths_| or sends the | 104 // Gets the file on the top of the |remaining_drive_paths_| or sends the |
105 // response if the queue is empty. | 105 // response if the queue is empty. |
106 void GetFileOrSendResponse(); | 106 void GetFileOrSendResponse(); |
107 | 107 |
108 // Called by FileSystem::GetFile(). Pops the file from | 108 // Called by FileSystem::GetFile(). Pops the file from |
109 // |remaining_drive_paths_|, and calls GetFileOrSendResponse(). | 109 // |remaining_drive_paths_|, and calls GetFileOrSendResponse(). |
110 void OnFileReady(drive::FileError error, | 110 void OnFileReady(drive::FileError error, |
111 const base::FilePath& local_path, | 111 const base::FilePath& local_path, |
112 scoped_ptr<drive::ResourceEntry> entry); | 112 scoped_ptr<drive::ResourceEntry> entry); |
113 | 113 |
114 std::queue<base::FilePath> remaining_drive_paths_; | 114 std::queue<base::FilePath> remaining_drive_paths_; |
115 std::vector<std::string> local_paths_; | 115 std::vector<std::string> local_paths_; |
116 }; | 116 }; |
117 | 117 |
118 // Implements the chrome.fileBrowserPrivate.cancelFileTransfers method. | 118 // Implements the chrome.fileManagerPrivate.cancelFileTransfers method. |
119 class FileBrowserPrivateCancelFileTransfersFunction | 119 class FileManagerPrivateCancelFileTransfersFunction |
120 : public LoggedAsyncExtensionFunction { | 120 : public LoggedAsyncExtensionFunction { |
121 public: | 121 public: |
122 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.cancelFileTransfers", | 122 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.cancelFileTransfers", |
123 FILEBROWSERPRIVATE_CANCELFILETRANSFERS) | 123 FILEMANAGERPRIVATE_CANCELFILETRANSFERS) |
124 | 124 |
125 protected: | 125 protected: |
126 virtual ~FileBrowserPrivateCancelFileTransfersFunction() {} | 126 virtual ~FileManagerPrivateCancelFileTransfersFunction() {} |
127 | 127 |
128 // AsyncExtensionFunction overrides. | 128 // AsyncExtensionFunction overrides. |
129 virtual bool RunAsync() OVERRIDE; | 129 virtual bool RunAsync() OVERRIDE; |
130 }; | 130 }; |
131 | 131 |
132 class FileBrowserPrivateSearchDriveFunction | 132 class FileManagerPrivateSearchDriveFunction |
133 : public LoggedAsyncExtensionFunction { | 133 : public LoggedAsyncExtensionFunction { |
134 public: | 134 public: |
135 typedef std::vector<drive::SearchResultInfo> SearchResultInfoList; | 135 typedef std::vector<drive::SearchResultInfo> SearchResultInfoList; |
136 | 136 |
137 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.searchDrive", | 137 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.searchDrive", |
138 FILEBROWSERPRIVATE_SEARCHDRIVE) | 138 FILEMANAGERPRIVATE_SEARCHDRIVE) |
139 | 139 |
140 protected: | 140 protected: |
141 virtual ~FileBrowserPrivateSearchDriveFunction() {} | 141 virtual ~FileManagerPrivateSearchDriveFunction() {} |
142 | 142 |
143 virtual bool RunAsync() OVERRIDE; | 143 virtual bool RunAsync() OVERRIDE; |
144 | 144 |
145 private: | 145 private: |
146 // Callback for Search(). | 146 // Callback for Search(). |
147 void OnSearch(drive::FileError error, | 147 void OnSearch(drive::FileError error, |
148 const GURL& next_link, | 148 const GURL& next_link, |
149 scoped_ptr<std::vector<drive::SearchResultInfo> > result_paths); | 149 scoped_ptr<std::vector<drive::SearchResultInfo> > result_paths); |
150 | 150 |
151 // Called when |result_paths| in OnSearch() are converted to a list of | 151 // Called when |result_paths| in OnSearch() are converted to a list of |
152 // entry definitions. | 152 // entry definitions. |
153 void OnEntryDefinitionList( | 153 void OnEntryDefinitionList( |
154 const GURL& next_link, | 154 const GURL& next_link, |
155 scoped_ptr<SearchResultInfoList> search_result_info_list, | 155 scoped_ptr<SearchResultInfoList> search_result_info_list, |
156 scoped_ptr<file_manager::util::EntryDefinitionList> | 156 scoped_ptr<file_manager::util::EntryDefinitionList> |
157 entry_definition_list); | 157 entry_definition_list); |
158 }; | 158 }; |
159 | 159 |
160 // Similar to FileBrowserPrivateSearchDriveFunction but this one is used for | 160 // Similar to FileManagerPrivateSearchDriveFunction but this one is used for |
161 // searching drive metadata which is stored locally. | 161 // searching drive metadata which is stored locally. |
162 class FileBrowserPrivateSearchDriveMetadataFunction | 162 class FileManagerPrivateSearchDriveMetadataFunction |
163 : public LoggedAsyncExtensionFunction { | 163 : public LoggedAsyncExtensionFunction { |
164 public: | 164 public: |
165 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.searchDriveMetadata", | 165 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.searchDriveMetadata", |
166 FILEBROWSERPRIVATE_SEARCHDRIVEMETADATA) | 166 FILEMANAGERPRIVATE_SEARCHDRIVEMETADATA) |
167 | 167 |
168 protected: | 168 protected: |
169 virtual ~FileBrowserPrivateSearchDriveMetadataFunction() {} | 169 virtual ~FileManagerPrivateSearchDriveMetadataFunction() {} |
170 | 170 |
171 virtual bool RunAsync() OVERRIDE; | 171 virtual bool RunAsync() OVERRIDE; |
172 | 172 |
173 private: | 173 private: |
174 // Callback for SearchMetadata(); | 174 // Callback for SearchMetadata(); |
175 void OnSearchMetadata(drive::FileError error, | 175 void OnSearchMetadata(drive::FileError error, |
176 scoped_ptr<drive::MetadataSearchResultVector> results); | 176 scoped_ptr<drive::MetadataSearchResultVector> results); |
177 | 177 |
178 // Called when |results| in OnSearchMetadata() are converted to a list of | 178 // Called when |results| in OnSearchMetadata() are converted to a list of |
179 // entry definitions. | 179 // entry definitions. |
180 void OnEntryDefinitionList( | 180 void OnEntryDefinitionList( |
181 scoped_ptr<drive::MetadataSearchResultVector> search_result_info_list, | 181 scoped_ptr<drive::MetadataSearchResultVector> search_result_info_list, |
182 scoped_ptr<file_manager::util::EntryDefinitionList> | 182 scoped_ptr<file_manager::util::EntryDefinitionList> |
183 entry_definition_list); | 183 entry_definition_list); |
184 }; | 184 }; |
185 | 185 |
186 // Implements the chrome.fileBrowserPrivate.getDriveConnectionState method. | 186 // Implements the chrome.fileManagerPrivate.getDriveConnectionState method. |
187 class FileBrowserPrivateGetDriveConnectionStateFunction | 187 class FileManagerPrivateGetDriveConnectionStateFunction |
188 : public ChromeSyncExtensionFunction { | 188 : public ChromeSyncExtensionFunction { |
189 public: | 189 public: |
190 DECLARE_EXTENSION_FUNCTION( | 190 DECLARE_EXTENSION_FUNCTION( |
191 "fileBrowserPrivate.getDriveConnectionState", | 191 "fileManagerPrivate.getDriveConnectionState", |
192 FILEBROWSERPRIVATE_GETDRIVECONNECTIONSTATE); | 192 FILEMANAGERPRIVATE_GETDRIVECONNECTIONSTATE); |
193 | 193 |
194 protected: | 194 protected: |
195 virtual ~FileBrowserPrivateGetDriveConnectionStateFunction() {} | 195 virtual ~FileManagerPrivateGetDriveConnectionStateFunction() {} |
196 | 196 |
197 virtual bool RunSync() OVERRIDE; | 197 virtual bool RunSync() OVERRIDE; |
198 }; | 198 }; |
199 | 199 |
200 // Implements the chrome.fileBrowserPrivate.requestAccessToken method. | 200 // Implements the chrome.fileManagerPrivate.requestAccessToken method. |
201 class FileBrowserPrivateRequestAccessTokenFunction | 201 class FileManagerPrivateRequestAccessTokenFunction |
202 : public LoggedAsyncExtensionFunction { | 202 : public LoggedAsyncExtensionFunction { |
203 public: | 203 public: |
204 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.requestAccessToken", | 204 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.requestAccessToken", |
205 FILEBROWSERPRIVATE_REQUESTACCESSTOKEN) | 205 FILEMANAGERPRIVATE_REQUESTACCESSTOKEN) |
206 | 206 |
207 protected: | 207 protected: |
208 virtual ~FileBrowserPrivateRequestAccessTokenFunction() {} | 208 virtual ~FileManagerPrivateRequestAccessTokenFunction() {} |
209 | 209 |
210 // AsyncExtensionFunction overrides. | 210 // AsyncExtensionFunction overrides. |
211 virtual bool RunAsync() OVERRIDE; | 211 virtual bool RunAsync() OVERRIDE; |
212 | 212 |
213 // Callback with a cached auth token (if available) or a fetched one. | 213 // Callback with a cached auth token (if available) or a fetched one. |
214 void OnAccessTokenFetched(google_apis::GDataErrorCode code, | 214 void OnAccessTokenFetched(google_apis::GDataErrorCode code, |
215 const std::string& access_token); | 215 const std::string& access_token); |
216 }; | 216 }; |
217 | 217 |
218 // Implements the chrome.fileBrowserPrivate.getShareUrl method. | 218 // Implements the chrome.fileManagerPrivate.getShareUrl method. |
219 class FileBrowserPrivateGetShareUrlFunction | 219 class FileManagerPrivateGetShareUrlFunction |
220 : public LoggedAsyncExtensionFunction { | 220 : public LoggedAsyncExtensionFunction { |
221 public: | 221 public: |
222 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.getShareUrl", | 222 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.getShareUrl", |
223 FILEBROWSERPRIVATE_GETSHAREURL) | 223 FILEMANAGERPRIVATE_GETSHAREURL) |
224 | 224 |
225 protected: | 225 protected: |
226 virtual ~FileBrowserPrivateGetShareUrlFunction() {} | 226 virtual ~FileManagerPrivateGetShareUrlFunction() {} |
227 | 227 |
228 // AsyncExtensionFunction overrides. | 228 // AsyncExtensionFunction overrides. |
229 virtual bool RunAsync() OVERRIDE; | 229 virtual bool RunAsync() OVERRIDE; |
230 | 230 |
231 // Callback with an url to the sharing dialog as |share_url|, called by | 231 // Callback with an url to the sharing dialog as |share_url|, called by |
232 // FileSystem::GetShareUrl. | 232 // FileSystem::GetShareUrl. |
233 void OnGetShareUrl(drive::FileError error, const GURL& share_url); | 233 void OnGetShareUrl(drive::FileError error, const GURL& share_url); |
234 }; | 234 }; |
235 | 235 |
236 // Implements the chrome.fileBrowserPrivate.requestDriveShare method. | 236 // Implements the chrome.fileManagerPrivate.requestDriveShare method. |
237 class FileBrowserPrivateRequestDriveShareFunction | 237 class FileManagerPrivateRequestDriveShareFunction |
238 : public LoggedAsyncExtensionFunction { | 238 : public LoggedAsyncExtensionFunction { |
239 public: | 239 public: |
240 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.requestDriveShare", | 240 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.requestDriveShare", |
241 FILEBROWSERPRIVATE_REQUESTDRIVESHARE); | 241 FILEMANAGERPRIVATE_REQUESTDRIVESHARE); |
242 | 242 |
243 protected: | 243 protected: |
244 virtual ~FileBrowserPrivateRequestDriveShareFunction() {} | 244 virtual ~FileManagerPrivateRequestDriveShareFunction() {} |
245 virtual bool RunAsync() OVERRIDE; | 245 virtual bool RunAsync() OVERRIDE; |
246 | 246 |
247 private: | 247 private: |
248 // Called back after the drive file system operation is finished. | 248 // Called back after the drive file system operation is finished. |
249 void OnAddPermission(drive::FileError error); | 249 void OnAddPermission(drive::FileError error); |
250 }; | 250 }; |
251 | 251 |
252 // Implements the chrome.fileBrowserPrivate.getDownloadUrl method. | 252 // Implements the chrome.fileManagerPrivate.getDownloadUrl method. |
253 class FileBrowserPrivateGetDownloadUrlFunction | 253 class FileManagerPrivateGetDownloadUrlFunction |
254 : public LoggedAsyncExtensionFunction { | 254 : public LoggedAsyncExtensionFunction { |
255 public: | 255 public: |
256 FileBrowserPrivateGetDownloadUrlFunction(); | 256 FileManagerPrivateGetDownloadUrlFunction(); |
257 | 257 |
258 DECLARE_EXTENSION_FUNCTION("fileBrowserPrivate.getDownloadUrl", | 258 DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.getDownloadUrl", |
259 FILEBROWSERPRIVATE_GETDOWNLOADURL) | 259 FILEMANAGERPRIVATE_GETDOWNLOADURL) |
260 | 260 |
261 protected: | 261 protected: |
262 virtual ~FileBrowserPrivateGetDownloadUrlFunction(); | 262 virtual ~FileManagerPrivateGetDownloadUrlFunction(); |
263 | 263 |
264 // AsyncExtensionFunction overrides. | 264 // AsyncExtensionFunction overrides. |
265 virtual bool RunAsync() OVERRIDE; | 265 virtual bool RunAsync() OVERRIDE; |
266 | 266 |
267 void OnGetResourceEntry(drive::FileError error, | 267 void OnGetResourceEntry(drive::FileError error, |
268 scoped_ptr<drive::ResourceEntry> entry); | 268 scoped_ptr<drive::ResourceEntry> entry); |
269 | 269 |
270 // Callback with an |access_token|, called by | 270 // Callback with an |access_token|, called by |
271 // drive::DriveReadonlyTokenFetcher. | 271 // drive::DriveReadonlyTokenFetcher. |
272 void OnTokenFetched(google_apis::GDataErrorCode code, | 272 void OnTokenFetched(google_apis::GDataErrorCode code, |
273 const std::string& access_token); | 273 const std::string& access_token); |
274 | 274 |
275 private: | 275 private: |
276 std::string download_url_; | 276 std::string download_url_; |
277 scoped_ptr<google_apis::AuthService> auth_service_; | 277 scoped_ptr<google_apis::AuthService> auth_service_; |
278 }; | 278 }; |
279 | 279 |
280 } // namespace extensions | 280 } // namespace extensions |
281 | 281 |
282 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ | 282 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ |
OLD | NEW |