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