OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 #include "chrome/browser/google_apis/gdata_wapi_service.h" | 5 #include "chrome/browser/google_apis/gdata_wapi_service.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
12 #include "base/stringprintf.h" | 12 #include "base/stringprintf.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "chrome/browser/google_apis/auth_service.h" | 14 #include "chrome/browser/google_apis/auth_service.h" |
15 #include "chrome/browser/google_apis/drive_api_parser.h" | 15 #include "chrome/browser/google_apis/drive_api_parser.h" |
16 #include "chrome/browser/google_apis/drive_api_util.h" | 16 #include "chrome/browser/google_apis/drive_api_util.h" |
17 #include "chrome/browser/google_apis/gdata_wapi_operations.h" | 17 #include "chrome/browser/google_apis/gdata_wapi_operations.h" |
18 #include "chrome/browser/google_apis/gdata_wapi_parser.h" | 18 #include "chrome/browser/google_apis/gdata_wapi_parser.h" |
19 #include "chrome/browser/google_apis/gdata_wapi_url_generator.h" | 19 #include "chrome/browser/google_apis/gdata_wapi_url_generator.h" |
20 #include "chrome/browser/google_apis/operation_runner.h" | 20 #include "chrome/browser/google_apis/request_sender.h" |
21 #include "chrome/browser/google_apis/time_util.h" | 21 #include "chrome/browser/google_apis/time_util.h" |
22 #include "content/public/browser/browser_thread.h" | 22 #include "content/public/browser/browser_thread.h" |
23 #include "net/base/url_util.h" | 23 #include "net/base/url_util.h" |
24 | 24 |
25 using content::BrowserThread; | 25 using content::BrowserThread; |
26 | 26 |
27 namespace google_apis { | 27 namespace google_apis { |
28 | 28 |
29 namespace { | 29 namespace { |
30 | 30 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 callback.Run(error, app_list.Pass()); | 91 callback.Run(error, app_list.Pass()); |
92 } | 92 } |
93 | 93 |
94 } // namespace | 94 } // namespace |
95 | 95 |
96 GDataWapiService::GDataWapiService( | 96 GDataWapiService::GDataWapiService( |
97 net::URLRequestContextGetter* url_request_context_getter, | 97 net::URLRequestContextGetter* url_request_context_getter, |
98 const GURL& base_url, | 98 const GURL& base_url, |
99 const std::string& custom_user_agent) | 99 const std::string& custom_user_agent) |
100 : url_request_context_getter_(url_request_context_getter), | 100 : url_request_context_getter_(url_request_context_getter), |
101 runner_(NULL), | 101 sender_(NULL), |
102 url_generator_(base_url), | 102 url_generator_(base_url), |
103 custom_user_agent_(custom_user_agent) { | 103 custom_user_agent_(custom_user_agent) { |
104 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 104 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
105 } | 105 } |
106 | 106 |
107 GDataWapiService::~GDataWapiService() { | 107 GDataWapiService::~GDataWapiService() { |
108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
109 if (runner_.get()) | 109 if (sender_.get()) |
110 runner_->auth_service()->RemoveObserver(this); | 110 sender_->auth_service()->RemoveObserver(this); |
111 } | 111 } |
112 | 112 |
113 AuthService* GDataWapiService::auth_service_for_testing() { | 113 AuthService* GDataWapiService::auth_service_for_testing() { |
114 return runner_->auth_service(); | 114 return sender_->auth_service(); |
115 } | 115 } |
116 | 116 |
117 void GDataWapiService::Initialize(Profile* profile) { | 117 void GDataWapiService::Initialize(Profile* profile) { |
118 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 118 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
119 | 119 |
120 std::vector<std::string> scopes; | 120 std::vector<std::string> scopes; |
121 scopes.push_back(kDocsListScope); | 121 scopes.push_back(kDocsListScope); |
122 scopes.push_back(kSpreadsheetsScope); | 122 scopes.push_back(kSpreadsheetsScope); |
123 scopes.push_back(kUserContentScope); | 123 scopes.push_back(kUserContentScope); |
124 // Drive App scope is required for even WAPI v3 apps access. | 124 // Drive App scope is required for even WAPI v3 apps access. |
125 scopes.push_back(kDriveAppsScope); | 125 scopes.push_back(kDriveAppsScope); |
126 runner_.reset(new OperationRunner(profile, | 126 sender_.reset(new RequestSender(profile, |
127 url_request_context_getter_, | 127 url_request_context_getter_, |
128 scopes, | 128 scopes, |
129 custom_user_agent_)); | 129 custom_user_agent_)); |
130 runner_->Initialize(); | 130 sender_->Initialize(); |
131 | 131 |
132 runner_->auth_service()->AddObserver(this); | 132 sender_->auth_service()->AddObserver(this); |
133 } | 133 } |
134 | 134 |
135 void GDataWapiService::AddObserver(DriveServiceObserver* observer) { | 135 void GDataWapiService::AddObserver(DriveServiceObserver* observer) { |
136 observers_.AddObserver(observer); | 136 observers_.AddObserver(observer); |
137 } | 137 } |
138 | 138 |
139 void GDataWapiService::RemoveObserver(DriveServiceObserver* observer) { | 139 void GDataWapiService::RemoveObserver(DriveServiceObserver* observer) { |
140 observers_.RemoveObserver(observer); | 140 observers_.RemoveObserver(observer); |
141 } | 141 } |
142 | 142 |
143 bool GDataWapiService::CanStartOperation() const { | 143 bool GDataWapiService::CanStartOperation() const { |
144 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 144 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
145 | 145 |
146 return HasRefreshToken(); | 146 return HasRefreshToken(); |
147 } | 147 } |
148 | 148 |
149 void GDataWapiService::CancelAll() { | 149 void GDataWapiService::CancelAll() { |
150 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 150 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
151 runner_->CancelAll(); | 151 sender_->CancelAll(); |
152 } | 152 } |
153 | 153 |
154 bool GDataWapiService::CancelForFilePath(const base::FilePath& file_path) { | 154 bool GDataWapiService::CancelForFilePath(const base::FilePath& file_path) { |
155 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 155 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
156 return runner_->operation_registry()->CancelForFilePath(file_path); | 156 return sender_->operation_registry()->CancelForFilePath(file_path); |
157 } | 157 } |
158 | 158 |
159 std::string GDataWapiService::CanonicalizeResourceId( | 159 std::string GDataWapiService::CanonicalizeResourceId( |
160 const std::string& resource_id) const { | 160 const std::string& resource_id) const { |
161 return resource_id; | 161 return resource_id; |
162 } | 162 } |
163 | 163 |
164 std::string GDataWapiService::GetRootResourceId() const { | 164 std::string GDataWapiService::GetRootResourceId() const { |
165 return kWapiRootDirectoryResourceId; | 165 return kWapiRootDirectoryResourceId; |
166 } | 166 } |
167 | 167 |
168 // Because GData WAPI support is expected to be gone somehow soon by migration | 168 // Because GData WAPI support is expected to be gone somehow soon by migration |
169 // to the Drive API v2, so we'll reuse GetResourceListOperation to implement | 169 // to the Drive API v2, so we'll reuse GetResourceListOperation to implement |
170 // following methods, instead of cleaning the operation class. | 170 // following methods, instead of cleaning the operation class. |
171 | 171 |
172 void GDataWapiService::GetAllResourceList( | 172 void GDataWapiService::GetAllResourceList( |
173 const GetResourceListCallback& callback) { | 173 const GetResourceListCallback& callback) { |
174 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 174 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
175 DCHECK(!callback.is_null()); | 175 DCHECK(!callback.is_null()); |
176 | 176 |
177 runner_->StartOperationWithRetry( | 177 sender_->StartRequestWithRetry( |
178 new GetResourceListOperation(runner_.get(), | 178 new GetResourceListOperation(sender_.get(), |
179 url_request_context_getter_, | 179 url_request_context_getter_, |
180 url_generator_, | 180 url_generator_, |
181 GURL(), // No override url | 181 GURL(), // No override url |
182 0, // start changestamp | 182 0, // start changestamp |
183 std::string(), // empty search query | 183 std::string(), // empty search query |
184 std::string(), // no directory resource id | 184 std::string(), // no directory resource id |
185 callback)); | 185 callback)); |
186 } | 186 } |
187 | 187 |
188 void GDataWapiService::GetResourceListInDirectory( | 188 void GDataWapiService::GetResourceListInDirectory( |
189 const std::string& directory_resource_id, | 189 const std::string& directory_resource_id, |
190 const GetResourceListCallback& callback) { | 190 const GetResourceListCallback& callback) { |
191 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 191 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
192 DCHECK(!directory_resource_id.empty()); | 192 DCHECK(!directory_resource_id.empty()); |
193 DCHECK(!callback.is_null()); | 193 DCHECK(!callback.is_null()); |
194 | 194 |
195 runner_->StartOperationWithRetry( | 195 sender_->StartRequestWithRetry( |
196 new GetResourceListOperation(runner_.get(), | 196 new GetResourceListOperation(sender_.get(), |
197 url_request_context_getter_, | 197 url_request_context_getter_, |
198 url_generator_, | 198 url_generator_, |
199 GURL(), // No override url | 199 GURL(), // No override url |
200 0, // start changestamp | 200 0, // start changestamp |
201 std::string(), // empty search query | 201 std::string(), // empty search query |
202 directory_resource_id, | 202 directory_resource_id, |
203 callback)); | 203 callback)); |
204 } | 204 } |
205 | 205 |
206 void GDataWapiService::Search(const std::string& search_query, | 206 void GDataWapiService::Search(const std::string& search_query, |
207 const GetResourceListCallback& callback) { | 207 const GetResourceListCallback& callback) { |
208 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 208 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
209 DCHECK(!search_query.empty()); | 209 DCHECK(!search_query.empty()); |
210 DCHECK(!callback.is_null()); | 210 DCHECK(!callback.is_null()); |
211 | 211 |
212 runner_->StartOperationWithRetry( | 212 sender_->StartRequestWithRetry( |
213 new GetResourceListOperation(runner_.get(), | 213 new GetResourceListOperation(sender_.get(), |
214 url_request_context_getter_, | 214 url_request_context_getter_, |
215 url_generator_, | 215 url_generator_, |
216 GURL(), // No override url | 216 GURL(), // No override url |
217 0, // start changestamp | 217 0, // start changestamp |
218 search_query, | 218 search_query, |
219 std::string(), // no directory resource id | 219 std::string(), // no directory resource id |
220 callback)); | 220 callback)); |
221 } | 221 } |
222 | 222 |
223 void GDataWapiService::SearchByTitle( | 223 void GDataWapiService::SearchByTitle( |
224 const std::string& title, | 224 const std::string& title, |
225 const std::string& directory_resource_id, | 225 const std::string& directory_resource_id, |
226 const GetResourceListCallback& callback) { | 226 const GetResourceListCallback& callback) { |
227 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 227 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
228 DCHECK(!title.empty()); | 228 DCHECK(!title.empty()); |
229 DCHECK(!callback.is_null()); | 229 DCHECK(!callback.is_null()); |
230 | 230 |
231 runner_->StartOperationWithRetry( | 231 sender_->StartRequestWithRetry( |
232 new SearchByTitleOperation( | 232 new SearchByTitleOperation( |
233 runner_.get(), | 233 sender_.get(), |
234 url_request_context_getter_, | 234 url_request_context_getter_, |
235 url_generator_, | 235 url_generator_, |
236 title, | 236 title, |
237 directory_resource_id, | 237 directory_resource_id, |
238 callback)); | 238 callback)); |
239 } | 239 } |
240 | 240 |
241 void GDataWapiService::GetChangeList(int64 start_changestamp, | 241 void GDataWapiService::GetChangeList(int64 start_changestamp, |
242 const GetResourceListCallback& callback) { | 242 const GetResourceListCallback& callback) { |
243 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 243 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
244 DCHECK(!callback.is_null()); | 244 DCHECK(!callback.is_null()); |
245 | 245 |
246 runner_->StartOperationWithRetry( | 246 sender_->StartRequestWithRetry( |
247 new GetResourceListOperation(runner_.get(), | 247 new GetResourceListOperation(sender_.get(), |
248 url_request_context_getter_, | 248 url_request_context_getter_, |
249 url_generator_, | 249 url_generator_, |
250 GURL(), // No override url | 250 GURL(), // No override url |
251 start_changestamp, | 251 start_changestamp, |
252 std::string(), // empty search query | 252 std::string(), // empty search query |
253 std::string(), // no directory resource id | 253 std::string(), // no directory resource id |
254 callback)); | 254 callback)); |
255 } | 255 } |
256 | 256 |
257 void GDataWapiService::ContinueGetResourceList( | 257 void GDataWapiService::ContinueGetResourceList( |
258 const GURL& override_url, | 258 const GURL& override_url, |
259 const GetResourceListCallback& callback) { | 259 const GetResourceListCallback& callback) { |
260 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 260 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
261 DCHECK(!override_url.is_empty()); | 261 DCHECK(!override_url.is_empty()); |
262 DCHECK(!callback.is_null()); | 262 DCHECK(!callback.is_null()); |
263 | 263 |
264 runner_->StartOperationWithRetry( | 264 sender_->StartRequestWithRetry( |
265 new GetResourceListOperation(runner_.get(), | 265 new GetResourceListOperation(sender_.get(), |
266 url_request_context_getter_, | 266 url_request_context_getter_, |
267 url_generator_, | 267 url_generator_, |
268 override_url, | 268 override_url, |
269 0, // start changestamp | 269 0, // start changestamp |
270 std::string(), // empty search query | 270 std::string(), // empty search query |
271 std::string(), // no directory resource id | 271 std::string(), // no directory resource id |
272 callback)); | 272 callback)); |
273 } | 273 } |
274 | 274 |
275 void GDataWapiService::GetResourceEntry( | 275 void GDataWapiService::GetResourceEntry( |
276 const std::string& resource_id, | 276 const std::string& resource_id, |
277 const GetResourceEntryCallback& callback) { | 277 const GetResourceEntryCallback& callback) { |
278 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 278 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
279 DCHECK(!callback.is_null()); | 279 DCHECK(!callback.is_null()); |
280 | 280 |
281 runner_->StartOperationWithRetry( | 281 sender_->StartRequestWithRetry( |
282 new GetResourceEntryOperation( | 282 new GetResourceEntryOperation( |
283 runner_.get(), | 283 sender_.get(), |
284 url_request_context_getter_, | 284 url_request_context_getter_, |
285 url_generator_, | 285 url_generator_, |
286 resource_id, | 286 resource_id, |
287 base::Bind(&ParseResourceEntryAndRun, callback))); | 287 base::Bind(&ParseResourceEntryAndRun, callback))); |
288 } | 288 } |
289 | 289 |
290 void GDataWapiService::GetAboutResource( | 290 void GDataWapiService::GetAboutResource( |
291 const GetAboutResourceCallback& callback) { | 291 const GetAboutResourceCallback& callback) { |
292 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 292 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
293 DCHECK(!callback.is_null()); | 293 DCHECK(!callback.is_null()); |
294 | 294 |
295 runner_->StartOperationWithRetry( | 295 sender_->StartRequestWithRetry( |
296 new GetAccountMetadataOperation( | 296 new GetAccountMetadataOperation( |
297 runner_.get(), | 297 sender_.get(), |
298 url_request_context_getter_, | 298 url_request_context_getter_, |
299 url_generator_, | 299 url_generator_, |
300 base::Bind(&ParseAboutResourceAndRun, callback), | 300 base::Bind(&ParseAboutResourceAndRun, callback), |
301 false)); // Exclude installed apps. | 301 false)); // Exclude installed apps. |
302 } | 302 } |
303 | 303 |
304 void GDataWapiService::GetAppList(const GetAppListCallback& callback) { | 304 void GDataWapiService::GetAppList(const GetAppListCallback& callback) { |
305 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 305 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
306 DCHECK(!callback.is_null()); | 306 DCHECK(!callback.is_null()); |
307 | 307 |
308 runner_->StartOperationWithRetry( | 308 sender_->StartRequestWithRetry( |
309 new GetAccountMetadataOperation( | 309 new GetAccountMetadataOperation( |
310 runner_.get(), | 310 sender_.get(), |
311 url_request_context_getter_, | 311 url_request_context_getter_, |
312 url_generator_, | 312 url_generator_, |
313 base::Bind(&ParseAppListAndRun, callback), | 313 base::Bind(&ParseAppListAndRun, callback), |
314 true)); // Include installed apps. | 314 true)); // Include installed apps. |
315 } | 315 } |
316 | 316 |
317 void GDataWapiService::DownloadFile( | 317 void GDataWapiService::DownloadFile( |
318 const base::FilePath& virtual_path, | 318 const base::FilePath& virtual_path, |
319 const base::FilePath& local_cache_path, | 319 const base::FilePath& local_cache_path, |
320 const GURL& download_url, | 320 const GURL& download_url, |
321 const DownloadActionCallback& download_action_callback, | 321 const DownloadActionCallback& download_action_callback, |
322 const GetContentCallback& get_content_callback, | 322 const GetContentCallback& get_content_callback, |
323 const ProgressCallback& progress_callback) { | 323 const ProgressCallback& progress_callback) { |
324 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 324 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
325 DCHECK(!download_action_callback.is_null()); | 325 DCHECK(!download_action_callback.is_null()); |
326 // get_content_callback and progress_callback may be null. | 326 // get_content_callback and progress_callback may be null. |
327 | 327 |
328 runner_->StartOperationWithRetry( | 328 sender_->StartRequestWithRetry( |
329 new DownloadFileRequest(runner_.get(), | 329 new DownloadFileRequest(sender_.get(), |
330 url_request_context_getter_, | 330 url_request_context_getter_, |
331 download_action_callback, | 331 download_action_callback, |
332 get_content_callback, | 332 get_content_callback, |
333 progress_callback, | 333 progress_callback, |
334 download_url, | 334 download_url, |
335 virtual_path, | 335 virtual_path, |
336 local_cache_path)); | 336 local_cache_path)); |
337 } | 337 } |
338 | 338 |
339 void GDataWapiService::DeleteResource( | 339 void GDataWapiService::DeleteResource( |
340 const std::string& resource_id, | 340 const std::string& resource_id, |
341 const std::string& etag, | 341 const std::string& etag, |
342 const EntryActionCallback& callback) { | 342 const EntryActionCallback& callback) { |
343 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 343 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
344 DCHECK(!callback.is_null()); | 344 DCHECK(!callback.is_null()); |
345 | 345 |
346 runner_->StartOperationWithRetry( | 346 sender_->StartRequestWithRetry( |
347 new DeleteResourceOperation(runner_.get(), | 347 new DeleteResourceOperation(sender_.get(), |
348 url_request_context_getter_, | 348 url_request_context_getter_, |
349 url_generator_, | 349 url_generator_, |
350 callback, | 350 callback, |
351 resource_id, | 351 resource_id, |
352 etag)); | 352 etag)); |
353 } | 353 } |
354 | 354 |
355 void GDataWapiService::AddNewDirectory( | 355 void GDataWapiService::AddNewDirectory( |
356 const std::string& parent_resource_id, | 356 const std::string& parent_resource_id, |
357 const std::string& directory_name, | 357 const std::string& directory_name, |
358 const GetResourceEntryCallback& callback) { | 358 const GetResourceEntryCallback& callback) { |
359 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 359 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
360 DCHECK(!callback.is_null()); | 360 DCHECK(!callback.is_null()); |
361 | 361 |
362 runner_->StartOperationWithRetry( | 362 sender_->StartRequestWithRetry( |
363 new CreateDirectoryOperation(runner_.get(), | 363 new CreateDirectoryOperation(sender_.get(), |
364 url_request_context_getter_, | 364 url_request_context_getter_, |
365 url_generator_, | 365 url_generator_, |
366 base::Bind(&ParseResourceEntryAndRun, | 366 base::Bind(&ParseResourceEntryAndRun, |
367 callback), | 367 callback), |
368 parent_resource_id, | 368 parent_resource_id, |
369 directory_name)); | 369 directory_name)); |
370 } | 370 } |
371 | 371 |
372 void GDataWapiService::CopyResource( | 372 void GDataWapiService::CopyResource( |
373 const std::string& resource_id, | 373 const std::string& resource_id, |
374 const std::string& parent_resource_id, | 374 const std::string& parent_resource_id, |
375 const std::string& new_name, | 375 const std::string& new_name, |
376 const GetResourceEntryCallback& callback) { | 376 const GetResourceEntryCallback& callback) { |
377 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 377 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
378 DCHECK(!callback.is_null()); | 378 DCHECK(!callback.is_null()); |
379 | 379 |
380 // GData WAPI doesn't support "copy" of regular files. | 380 // GData WAPI doesn't support "copy" of regular files. |
381 // This method should never be called if GData WAPI is enabled. | 381 // This method should never be called if GData WAPI is enabled. |
382 // Instead, client code should download the file (if needed) and upload it. | 382 // Instead, client code should download the file (if needed) and upload it. |
383 NOTREACHED(); | 383 NOTREACHED(); |
384 } | 384 } |
385 | 385 |
386 void GDataWapiService::CopyHostedDocument( | 386 void GDataWapiService::CopyHostedDocument( |
387 const std::string& resource_id, | 387 const std::string& resource_id, |
388 const std::string& new_name, | 388 const std::string& new_name, |
389 const GetResourceEntryCallback& callback) { | 389 const GetResourceEntryCallback& callback) { |
390 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 390 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
391 DCHECK(!callback.is_null()); | 391 DCHECK(!callback.is_null()); |
392 | 392 |
393 runner_->StartOperationWithRetry( | 393 sender_->StartRequestWithRetry( |
394 new CopyHostedDocumentOperation( | 394 new CopyHostedDocumentOperation( |
395 runner_.get(), | 395 sender_.get(), |
396 url_request_context_getter_, | 396 url_request_context_getter_, |
397 url_generator_, | 397 url_generator_, |
398 base::Bind(&ParseResourceEntryAndRun, callback), | 398 base::Bind(&ParseResourceEntryAndRun, callback), |
399 resource_id, | 399 resource_id, |
400 new_name)); | 400 new_name)); |
401 } | 401 } |
402 | 402 |
403 void GDataWapiService::RenameResource( | 403 void GDataWapiService::RenameResource( |
404 const std::string& resource_id, | 404 const std::string& resource_id, |
405 const std::string& new_name, | 405 const std::string& new_name, |
406 const EntryActionCallback& callback) { | 406 const EntryActionCallback& callback) { |
407 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 407 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
408 DCHECK(!callback.is_null()); | 408 DCHECK(!callback.is_null()); |
409 | 409 |
410 runner_->StartOperationWithRetry( | 410 sender_->StartRequestWithRetry( |
411 new RenameResourceOperation(runner_.get(), | 411 new RenameResourceOperation(sender_.get(), |
412 url_request_context_getter_, | 412 url_request_context_getter_, |
413 url_generator_, | 413 url_generator_, |
414 callback, | 414 callback, |
415 resource_id, | 415 resource_id, |
416 new_name)); | 416 new_name)); |
417 } | 417 } |
418 | 418 |
419 void GDataWapiService::TouchResource( | 419 void GDataWapiService::TouchResource( |
420 const std::string& resource_id, | 420 const std::string& resource_id, |
421 const base::Time& modified_date, | 421 const base::Time& modified_date, |
(...skipping 12 matching lines...) Expand all Loading... |
434 base::Passed(scoped_ptr<ResourceEntry>()))); | 434 base::Passed(scoped_ptr<ResourceEntry>()))); |
435 } | 435 } |
436 | 436 |
437 void GDataWapiService::AddResourceToDirectory( | 437 void GDataWapiService::AddResourceToDirectory( |
438 const std::string& parent_resource_id, | 438 const std::string& parent_resource_id, |
439 const std::string& resource_id, | 439 const std::string& resource_id, |
440 const EntryActionCallback& callback) { | 440 const EntryActionCallback& callback) { |
441 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 441 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
442 DCHECK(!callback.is_null()); | 442 DCHECK(!callback.is_null()); |
443 | 443 |
444 runner_->StartOperationWithRetry( | 444 sender_->StartRequestWithRetry( |
445 new AddResourceToDirectoryOperation(runner_.get(), | 445 new AddResourceToDirectoryOperation(sender_.get(), |
446 url_request_context_getter_, | 446 url_request_context_getter_, |
447 url_generator_, | 447 url_generator_, |
448 callback, | 448 callback, |
449 parent_resource_id, | 449 parent_resource_id, |
450 resource_id)); | 450 resource_id)); |
451 } | 451 } |
452 | 452 |
453 void GDataWapiService::RemoveResourceFromDirectory( | 453 void GDataWapiService::RemoveResourceFromDirectory( |
454 const std::string& parent_resource_id, | 454 const std::string& parent_resource_id, |
455 const std::string& resource_id, | 455 const std::string& resource_id, |
456 const EntryActionCallback& callback) { | 456 const EntryActionCallback& callback) { |
457 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 457 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
458 DCHECK(!callback.is_null()); | 458 DCHECK(!callback.is_null()); |
459 | 459 |
460 runner_->StartOperationWithRetry( | 460 sender_->StartRequestWithRetry( |
461 new RemoveResourceFromDirectoryOperation(runner_.get(), | 461 new RemoveResourceFromDirectoryOperation(sender_.get(), |
462 url_request_context_getter_, | 462 url_request_context_getter_, |
463 url_generator_, | 463 url_generator_, |
464 callback, | 464 callback, |
465 parent_resource_id, | 465 parent_resource_id, |
466 resource_id)); | 466 resource_id)); |
467 } | 467 } |
468 | 468 |
469 void GDataWapiService::InitiateUploadNewFile( | 469 void GDataWapiService::InitiateUploadNewFile( |
470 const base::FilePath& drive_file_path, | 470 const base::FilePath& drive_file_path, |
471 const std::string& content_type, | 471 const std::string& content_type, |
472 int64 content_length, | 472 int64 content_length, |
473 const std::string& parent_resource_id, | 473 const std::string& parent_resource_id, |
474 const std::string& title, | 474 const std::string& title, |
475 const InitiateUploadCallback& callback) { | 475 const InitiateUploadCallback& callback) { |
476 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 476 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
477 DCHECK(!callback.is_null()); | 477 DCHECK(!callback.is_null()); |
478 DCHECK(!parent_resource_id.empty()); | 478 DCHECK(!parent_resource_id.empty()); |
479 | 479 |
480 runner_->StartOperationWithRetry( | 480 sender_->StartRequestWithRetry( |
481 new InitiateUploadNewFileOperation(runner_.get(), | 481 new InitiateUploadNewFileOperation(sender_.get(), |
482 url_request_context_getter_, | 482 url_request_context_getter_, |
483 url_generator_, | 483 url_generator_, |
484 callback, | 484 callback, |
485 drive_file_path, | 485 drive_file_path, |
486 content_type, | 486 content_type, |
487 content_length, | 487 content_length, |
488 parent_resource_id, | 488 parent_resource_id, |
489 title)); | 489 title)); |
490 } | 490 } |
491 | 491 |
492 void GDataWapiService::InitiateUploadExistingFile( | 492 void GDataWapiService::InitiateUploadExistingFile( |
493 const base::FilePath& drive_file_path, | 493 const base::FilePath& drive_file_path, |
494 const std::string& content_type, | 494 const std::string& content_type, |
495 int64 content_length, | 495 int64 content_length, |
496 const std::string& resource_id, | 496 const std::string& resource_id, |
497 const std::string& etag, | 497 const std::string& etag, |
498 const InitiateUploadCallback& callback) { | 498 const InitiateUploadCallback& callback) { |
499 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 499 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
500 DCHECK(!callback.is_null()); | 500 DCHECK(!callback.is_null()); |
501 DCHECK(!resource_id.empty()); | 501 DCHECK(!resource_id.empty()); |
502 | 502 |
503 runner_->StartOperationWithRetry( | 503 sender_->StartRequestWithRetry( |
504 new InitiateUploadExistingFileOperation(runner_.get(), | 504 new InitiateUploadExistingFileOperation(sender_.get(), |
505 url_request_context_getter_, | 505 url_request_context_getter_, |
506 url_generator_, | 506 url_generator_, |
507 callback, | 507 callback, |
508 drive_file_path, | 508 drive_file_path, |
509 content_type, | 509 content_type, |
510 content_length, | 510 content_length, |
511 resource_id, | 511 resource_id, |
512 etag)); | 512 etag)); |
513 } | 513 } |
514 | 514 |
515 void GDataWapiService::ResumeUpload( | 515 void GDataWapiService::ResumeUpload( |
516 const base::FilePath& drive_file_path, | 516 const base::FilePath& drive_file_path, |
517 const GURL& upload_url, | 517 const GURL& upload_url, |
518 int64 start_position, | 518 int64 start_position, |
519 int64 end_position, | 519 int64 end_position, |
520 int64 content_length, | 520 int64 content_length, |
521 const std::string& content_type, | 521 const std::string& content_type, |
522 const base::FilePath& local_file_path, | 522 const base::FilePath& local_file_path, |
523 const UploadRangeCallback& callback, | 523 const UploadRangeCallback& callback, |
524 const ProgressCallback& progress_callback) { | 524 const ProgressCallback& progress_callback) { |
525 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 525 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
526 DCHECK(!callback.is_null()); | 526 DCHECK(!callback.is_null()); |
527 | 527 |
528 runner_->StartOperationWithRetry( | 528 sender_->StartRequestWithRetry( |
529 new ResumeUploadOperation(runner_.get(), | 529 new ResumeUploadOperation(sender_.get(), |
530 url_request_context_getter_, | 530 url_request_context_getter_, |
531 callback, | 531 callback, |
532 progress_callback, | 532 progress_callback, |
533 drive_file_path, | 533 drive_file_path, |
534 upload_url, | 534 upload_url, |
535 start_position, | 535 start_position, |
536 end_position, | 536 end_position, |
537 content_length, | 537 content_length, |
538 content_type, | 538 content_type, |
539 local_file_path)); | 539 local_file_path)); |
540 } | 540 } |
541 | 541 |
542 void GDataWapiService::GetUploadStatus( | 542 void GDataWapiService::GetUploadStatus( |
543 const base::FilePath& drive_file_path, | 543 const base::FilePath& drive_file_path, |
544 const GURL& upload_url, | 544 const GURL& upload_url, |
545 int64 content_length, | 545 int64 content_length, |
546 const UploadRangeCallback& callback) { | 546 const UploadRangeCallback& callback) { |
547 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 547 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
548 DCHECK(!callback.is_null()); | 548 DCHECK(!callback.is_null()); |
549 | 549 |
550 runner_->StartOperationWithRetry( | 550 sender_->StartRequestWithRetry( |
551 new GetUploadStatusOperation(runner_.get(), | 551 new GetUploadStatusOperation(sender_.get(), |
552 url_request_context_getter_, | 552 url_request_context_getter_, |
553 callback, | 553 callback, |
554 drive_file_path, | 554 drive_file_path, |
555 upload_url, | 555 upload_url, |
556 content_length)); | 556 content_length)); |
557 } | 557 } |
558 | 558 |
559 void GDataWapiService::AuthorizeApp(const std::string& resource_id, | 559 void GDataWapiService::AuthorizeApp(const std::string& resource_id, |
560 const std::string& app_id, | 560 const std::string& app_id, |
561 const AuthorizeAppCallback& callback) { | 561 const AuthorizeAppCallback& callback) { |
562 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 562 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
563 DCHECK(!callback.is_null()); | 563 DCHECK(!callback.is_null()); |
564 | 564 |
565 runner_->StartOperationWithRetry( | 565 sender_->StartRequestWithRetry( |
566 new AuthorizeAppOperation( | 566 new AuthorizeAppOperation( |
567 runner_.get(), | 567 sender_.get(), |
568 url_request_context_getter_, | 568 url_request_context_getter_, |
569 url_generator_, | 569 url_generator_, |
570 callback, | 570 callback, |
571 resource_id, | 571 resource_id, |
572 app_id)); | 572 app_id)); |
573 } | 573 } |
574 | 574 |
575 bool GDataWapiService::HasAccessToken() const { | 575 bool GDataWapiService::HasAccessToken() const { |
576 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 576 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
577 | 577 |
578 return runner_->auth_service()->HasAccessToken(); | 578 return sender_->auth_service()->HasAccessToken(); |
579 } | 579 } |
580 | 580 |
581 bool GDataWapiService::HasRefreshToken() const { | 581 bool GDataWapiService::HasRefreshToken() const { |
582 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 582 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
583 | 583 |
584 return runner_->auth_service()->HasRefreshToken(); | 584 return sender_->auth_service()->HasRefreshToken(); |
585 } | 585 } |
586 | 586 |
587 void GDataWapiService::ClearAccessToken() { | 587 void GDataWapiService::ClearAccessToken() { |
588 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 588 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
589 return runner_->auth_service()->ClearAccessToken(); | 589 return sender_->auth_service()->ClearAccessToken(); |
590 } | 590 } |
591 | 591 |
592 void GDataWapiService::ClearRefreshToken() { | 592 void GDataWapiService::ClearRefreshToken() { |
593 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 593 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
594 return runner_->auth_service()->ClearRefreshToken(); | 594 return sender_->auth_service()->ClearRefreshToken(); |
595 } | 595 } |
596 | 596 |
597 void GDataWapiService::OnOAuth2RefreshTokenChanged() { | 597 void GDataWapiService::OnOAuth2RefreshTokenChanged() { |
598 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 598 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
599 if (CanStartOperation()) { | 599 if (CanStartOperation()) { |
600 FOR_EACH_OBSERVER( | 600 FOR_EACH_OBSERVER( |
601 DriveServiceObserver, observers_, OnReadyToPerformOperations()); | 601 DriveServiceObserver, observers_, OnReadyToPerformOperations()); |
602 } else if (!HasRefreshToken()) { | 602 } else if (!HasRefreshToken()) { |
603 FOR_EACH_OBSERVER( | 603 FOR_EACH_OBSERVER( |
604 DriveServiceObserver, observers_, OnRefreshTokenInvalid()); | 604 DriveServiceObserver, observers_, OnRefreshTokenInvalid()); |
605 } | 605 } |
606 } | 606 } |
607 | 607 |
608 } // namespace google_apis | 608 } // namespace google_apis |
OLD | NEW |