folder_creator.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_ 6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "base/memory/scoped_vector.h" 10#include "base/memory/weak_ptr.h" 11#include "chrome/browser/sync_file_system/sync_callbacks.h" 12#include "google_apis/drive/gdata_errorcode.h" 13 14namespace drive { 15class DriveServiceInterface; 16} 17 18namespace google_apis { 19class ResourceEntry; 20class ResourceList; 21} 22 23namespace sync_file_system { 24namespace drive_backend { 25 26class MetadataDatabase; 27class SyncEngineContext; 28 29class FolderCreator { 30 public: 31 typedef base::Callback<void(const std::string& file_id, 32 SyncStatusCode status)> FileIDCallback; 33 34 FolderCreator(drive::DriveServiceInterface* drive_service, 35 MetadataDatabase* metadata_database, 36 const std::string& parent_folder_id, 37 const std::string& title); 38 ~FolderCreator(); 39 40 void Run(const FileIDCallback& callback); 41 42 private: 43 void DidCreateFolder(const FileIDCallback& callback, 44 google_apis::GDataErrorCode error, 45 scoped_ptr<google_apis::ResourceEntry> entry); 46 void DidListFolders(const FileIDCallback& callback, 47 ScopedVector<google_apis::ResourceEntry> candidates, 48 google_apis::GDataErrorCode error, 49 scoped_ptr<google_apis::ResourceList> resource_list); 50 void DidUpdateDatabase(const std::string& file_id, 51 const FileIDCallback& callback, 52 SyncStatusCode status); 53 54 drive::DriveServiceInterface* drive_service_; 55 MetadataDatabase* metadata_database_; 56 57 const std::string parent_folder_id_; 58 const std::string title_; 59 60 base::WeakPtrFactory<FolderCreator> weak_ptr_factory_; 61 62 DISALLOW_COPY_AND_ASSIGN(FolderCreator); 63}; 64 65} // namespace drive_backend 66} // namespace sync_file_system 67 68#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_ 69