OLD | NEW |
| (Empty) |
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 #include "chrome/browser/chromeos/gdata/gdata_documents_service.h" | |
6 | |
7 #include <string> | |
8 | |
9 #include "base/bind.h" | |
10 #include "base/message_loop_proxy.h" | |
11 #include "chrome/browser/chromeos/gdata/drive_api_operations.h" | |
12 #include "chrome/browser/chromeos/gdata/gdata_operation_runner.h" | |
13 #include "chrome/browser/chromeos/gdata/gdata_operations.h" | |
14 #include "chrome/browser/chromeos/gdata/gdata_util.h" | |
15 #include "chrome/browser/profiles/profile.h" | |
16 #include "chrome/common/net/url_util.h" | |
17 #include "content/public/browser/browser_thread.h" | |
18 | |
19 using content::BrowserThread; | |
20 | |
21 namespace gdata { | |
22 | |
23 namespace { | |
24 | |
25 const char* GetExportFormatParam(DocumentExportFormat format) { | |
26 switch (format) { | |
27 case PNG: | |
28 return "png"; | |
29 case HTML: | |
30 return "html"; | |
31 case TXT: | |
32 return "txt"; | |
33 case DOC: | |
34 return "doc"; | |
35 case ODT: | |
36 return "odt"; | |
37 case RTF: | |
38 return "rtf"; | |
39 case ZIP: | |
40 return "zip"; | |
41 case JPEG: | |
42 return "jpeg"; | |
43 case SVG: | |
44 return "svg"; | |
45 case PPT: | |
46 return "ppt"; | |
47 case XLS: | |
48 return "xls"; | |
49 case CSV: | |
50 return "csv"; | |
51 case ODS: | |
52 return "ods"; | |
53 case TSV: | |
54 return "tsv"; | |
55 default: | |
56 return "pdf"; | |
57 } | |
58 } | |
59 | |
60 } // namespace | |
61 | |
62 DocumentsService::DocumentsService() | |
63 : profile_(NULL), | |
64 runner_(NULL) { | |
65 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
66 } | |
67 | |
68 DocumentsService::~DocumentsService() { | |
69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
70 } | |
71 | |
72 GDataAuthService* DocumentsService::auth_service_for_testing() { | |
73 return runner_->auth_service(); | |
74 } | |
75 | |
76 void DocumentsService::Initialize(Profile* profile) { | |
77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
78 profile_ = profile; | |
79 runner_.reset(new GDataOperationRunner(profile)); | |
80 runner_->Initialize(); | |
81 } | |
82 | |
83 GDataOperationRegistry* DocumentsService::operation_registry() const { | |
84 return runner_->operation_registry(); | |
85 } | |
86 | |
87 void DocumentsService::CancelAll() { | |
88 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
89 runner_->CancelAll(); | |
90 } | |
91 | |
92 void DocumentsService::Authenticate(const AuthStatusCallback& callback) { | |
93 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
94 runner_->Authenticate(callback); | |
95 } | |
96 | |
97 void DocumentsService::GetDocuments(const GURL& url, | |
98 int start_changestamp, | |
99 const std::string& search_query, | |
100 const std::string& directory_resource_id, | |
101 const GetDataCallback& callback) { | |
102 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
103 | |
104 GetDocumentsOperation* operation = | |
105 new GetDocumentsOperation(operation_registry(), | |
106 url, | |
107 start_changestamp, | |
108 search_query, | |
109 directory_resource_id, | |
110 callback); | |
111 runner_->StartOperationWithRetry(operation); | |
112 } | |
113 | |
114 void DocumentsService::GetFilelist(const GURL& url, | |
115 const std::string& search_query, | |
116 const GetDataCallback& callback) { | |
117 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
118 | |
119 GetFilelistOperation* operation = | |
120 new GetFilelistOperation(operation_registry(), | |
121 url, | |
122 search_query, | |
123 callback); | |
124 runner_->StartOperationWithRetry(operation); | |
125 } | |
126 | |
127 void DocumentsService::GetChangelist(const GURL& url, | |
128 int64 start_changestamp, | |
129 const GetDataCallback& callback) { | |
130 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
131 | |
132 GetChangelistOperation* operation = | |
133 new GetChangelistOperation(operation_registry(), | |
134 url, | |
135 start_changestamp, | |
136 callback); | |
137 runner_->StartOperationWithRetry(operation); | |
138 } | |
139 | |
140 void DocumentsService::GetDocumentEntry(const std::string& resource_id, | |
141 const GetDataCallback& callback) { | |
142 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
143 | |
144 GetDocumentEntryOperation* operation = | |
145 new GetDocumentEntryOperation(operation_registry(), | |
146 resource_id, | |
147 callback); | |
148 runner_->StartOperationWithRetry(operation); | |
149 } | |
150 | |
151 void DocumentsService::GetFile(const std::string& file_id, | |
152 const GetDataCallback& callback) { | |
153 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
154 | |
155 GetFileOperation* operation = | |
156 new GetFileOperation(operation_registry(), | |
157 file_id, | |
158 callback); | |
159 runner_->StartOperationWithRetry(operation); | |
160 } | |
161 | |
162 void DocumentsService::GetAccountMetadata(const GetDataCallback& callback) { | |
163 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
164 | |
165 GetAccountMetadataOperation* operation = | |
166 new GetAccountMetadataOperation(operation_registry(), callback); | |
167 runner_->StartOperationWithRetry(operation); | |
168 } | |
169 | |
170 void DocumentsService::GetAboutResource(const GetDataCallback& callback) { | |
171 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
172 | |
173 GetAboutOperation* operation = | |
174 new GetAboutOperation(operation_registry(), callback); | |
175 runner_->StartOperationWithRetry(operation); | |
176 } | |
177 | |
178 void DocumentsService::GetApplicationList(const GetDataCallback& callback) { | |
179 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
180 | |
181 GetApplistOperation* operation = | |
182 new GetApplistOperation(operation_registry(), callback); | |
183 runner_->StartOperationWithRetry(operation); | |
184 } | |
185 | |
186 void DocumentsService::DownloadDocument( | |
187 const FilePath& virtual_path, | |
188 const FilePath& local_cache_path, | |
189 const GURL& document_url, | |
190 DocumentExportFormat format, | |
191 const DownloadActionCallback& callback) { | |
192 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
193 | |
194 DownloadFile( | |
195 virtual_path, | |
196 local_cache_path, | |
197 chrome_common_net::AppendQueryParameter(document_url, | |
198 "exportFormat", | |
199 GetExportFormatParam(format)), | |
200 callback, | |
201 GetContentCallback()); | |
202 } | |
203 | |
204 void DocumentsService::DownloadFile( | |
205 const FilePath& virtual_path, | |
206 const FilePath& local_cache_path, | |
207 const GURL& document_url, | |
208 const DownloadActionCallback& download_action_callback, | |
209 const GetContentCallback& get_content_callback) { | |
210 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
211 | |
212 runner_->StartOperationWithRetry( | |
213 new DownloadFileOperation(operation_registry(), | |
214 download_action_callback, | |
215 get_content_callback, document_url, | |
216 virtual_path, local_cache_path)); | |
217 } | |
218 | |
219 void DocumentsService::DeleteDocument(const GURL& document_url, | |
220 const EntryActionCallback& callback) { | |
221 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
222 | |
223 runner_->StartOperationWithRetry( | |
224 new DeleteDocumentOperation(operation_registry(), callback, | |
225 document_url)); | |
226 } | |
227 | |
228 void DocumentsService::CreateDirectory( | |
229 const GURL& parent_content_url, | |
230 const FilePath::StringType& directory_name, | |
231 const GetDataCallback& callback) { | |
232 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
233 | |
234 runner_->StartOperationWithRetry( | |
235 new CreateDirectoryOperation(operation_registry(), callback, | |
236 parent_content_url, directory_name)); | |
237 } | |
238 | |
239 void DocumentsService::CopyDocument(const std::string& resource_id, | |
240 const FilePath::StringType& new_name, | |
241 const GetDataCallback& callback) { | |
242 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
243 | |
244 runner_->StartOperationWithRetry( | |
245 new CopyDocumentOperation(operation_registry(), callback, | |
246 resource_id, new_name)); | |
247 } | |
248 | |
249 void DocumentsService::RenameResource(const GURL& resource_url, | |
250 const FilePath::StringType& new_name, | |
251 const EntryActionCallback& callback) { | |
252 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
253 | |
254 runner_->StartOperationWithRetry( | |
255 new RenameResourceOperation(operation_registry(), callback, | |
256 resource_url, new_name)); | |
257 } | |
258 | |
259 void DocumentsService::AddResourceToDirectory( | |
260 const GURL& parent_content_url, | |
261 const GURL& resource_url, | |
262 const EntryActionCallback& callback) { | |
263 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
264 | |
265 runner_->StartOperationWithRetry( | |
266 new AddResourceToDirectoryOperation(operation_registry(), | |
267 callback, | |
268 parent_content_url, | |
269 resource_url)); | |
270 } | |
271 | |
272 void DocumentsService::RemoveResourceFromDirectory( | |
273 const GURL& parent_content_url, | |
274 const GURL& resource_url, | |
275 const std::string& resource_id, | |
276 const EntryActionCallback& callback) { | |
277 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
278 | |
279 runner_->StartOperationWithRetry( | |
280 new RemoveResourceFromDirectoryOperation(operation_registry(), | |
281 callback, | |
282 parent_content_url, | |
283 resource_url, | |
284 resource_id)); | |
285 } | |
286 | |
287 void DocumentsService::InitiateUpload(const InitiateUploadParams& params, | |
288 const InitiateUploadCallback& callback) { | |
289 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
290 | |
291 if (params.upload_location.is_empty()) { | |
292 if (!callback.is_null()) | |
293 callback.Run(HTTP_BAD_REQUEST, GURL()); | |
294 return; | |
295 } | |
296 | |
297 runner_->StartOperationWithRetry( | |
298 new InitiateUploadOperation(operation_registry(), callback, params)); | |
299 } | |
300 | |
301 void DocumentsService::ResumeUpload(const ResumeUploadParams& params, | |
302 const ResumeUploadCallback& callback) { | |
303 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
304 | |
305 runner_->StartOperationWithRetry( | |
306 new ResumeUploadOperation(operation_registry(), callback, params)); | |
307 } | |
308 | |
309 | |
310 void DocumentsService::AuthorizeApp(const GURL& resource_url, | |
311 const std::string& app_ids, | |
312 const GetDataCallback& callback) { | |
313 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
314 | |
315 runner_->StartOperationWithRetry( | |
316 new AuthorizeAppsOperation(operation_registry(), callback, | |
317 resource_url, app_ids)); | |
318 } | |
319 | |
320 bool DocumentsService::HasAccessToken() const { | |
321 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
322 | |
323 return runner_->auth_service()->HasAccessToken(); | |
324 } | |
325 | |
326 bool DocumentsService::HasRefreshToken() const { | |
327 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
328 | |
329 return runner_->auth_service()->HasRefreshToken(); | |
330 } | |
331 | |
332 } // namespace gdata | |
OLD | NEW |