15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved.
25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be
35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file.
45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/sync_file_system/drive_backend/drive_service_wrapper.h"
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <string>
85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/memory/weak_ptr.h"
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/drive/drive_service_interface.h"
115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace sync_file_system {
135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace drive_backend {
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuDriveServiceWrapper::DriveServiceWrapper(
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    drive::DriveServiceInterface* drive_service)
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    : drive_service_(drive_service) {
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  DCHECK(drive_service_);
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::AddNewDirectory(
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& parent_resource_id,
235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& directory_title,
245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const drive::DriveServiceInterface::AddNewDirectoryOptions& options,
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const google_apis::FileResourceCallback& callback) {
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->AddNewDirectory(parent_resource_id,
285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                  directory_title,
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                  options,
305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                  callback);
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::DeleteResource(
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& resource_id,
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& etag,
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const google_apis::EntryActionCallback& callback) {
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->DeleteResource(resource_id,
395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                 etag,
405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                 callback);
415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::DownloadFile(
445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const base::FilePath& local_cache_path,
455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& resource_id,
465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const google_apis::DownloadActionCallback& download_action_callback,
475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const google_apis::GetContentCallback& get_content_callback,
485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const google_apis::ProgressCallback& progress_callback) {
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->DownloadFile(local_cache_path,
515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                               resource_id,
525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                               download_action_callback,
535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                               get_content_callback,
545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                               progress_callback);
555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::GetAboutResource(
585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const google_apis::AboutResourceCallback& callback) {
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->GetAboutResource(callback);
615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::GetChangeList(
645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    int64 start_changestamp,
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    const google_apis::ChangeListCallback& callback) {
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->GetChangeList(start_changestamp, callback);
685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::GetRemainingChangeList(
715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const GURL& next_link,
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    const google_apis::ChangeListCallback& callback) {
7346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->GetRemainingChangeList(next_link, callback);
755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::GetRemainingFileList(
785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const GURL& next_link,
7946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const google_apis::FileListCallback& callback) {
8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->GetRemainingFileList(next_link, callback);
825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
8446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void DriveServiceWrapper::GetFileResource(
855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& resource_id,
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const google_apis::FileResourceCallback& callback) {
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
8846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  drive_service_->GetFileResource(resource_id, callback);
895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
9146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void DriveServiceWrapper::GetFileListInDirectory(
925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& directory_resource_id,
9346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const google_apis::FileListCallback& callback) {
9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  drive_service_->GetFileListInDirectory(directory_resource_id, callback);
96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
97010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::RemoveResourceFromDirectory(
995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& parent_resource_id,
1005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& resource_id,
1015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const google_apis::EntryActionCallback& callback) {
10246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
1035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->RemoveResourceFromDirectory(
1045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      parent_resource_id, resource_id, callback);
1055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
1065c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
1075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DriveServiceWrapper::SearchByTitle(
1085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& title,
1095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    const std::string& directory_resource_id,
11046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const google_apis::FileListCallback& callback) {
11146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
1125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive_service_->SearchByTitle(
1135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      title, directory_resource_id, callback);
1145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
1155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
1165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace drive_backend
1175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace sync_file_system
118