folder_creator.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_vector.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/sync_callbacks.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "google_apis/drive/gdata_errorcode.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace drive { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DriveServiceInterface; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace google_apis { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceEntry; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceList; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace sync_file_system { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace drive_backend { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MetadataDatabase; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SyncEngineContext; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FolderCreator { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef base::Callback<void(const std::string& file_id, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncStatusCode status)> FileIDCallback; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FolderCreator(drive::DriveServiceInterface* drive_service, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetadataDatabase* metadata_database, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& parent_folder_id, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& title); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~FolderCreator(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Run(const FileIDCallback& callback); 43 44 private: 45 void DidCreateFolder(const FileIDCallback& callback, 46 google_apis::GDataErrorCode error, 47 scoped_ptr<google_apis::ResourceEntry> entry); 48 void DidListFolders(const FileIDCallback& callback, 49 ScopedVector<google_apis::ResourceEntry> candidates, 50 google_apis::GDataErrorCode error, 51 scoped_ptr<google_apis::ResourceList> resource_list); 52 void DidUpdateDatabase(const std::string& file_id, 53 const FileIDCallback& callback, 54 SyncStatusCode status); 55 56 drive::DriveServiceInterface* drive_service_; 57 MetadataDatabase* metadata_database_; 58 59 const std::string parent_folder_id_; 60 const std::string title_; 61 62 base::WeakPtrFactory<FolderCreator> weak_ptr_factory_; 63 64 DISALLOW_COPY_AND_ASSIGN(FolderCreator); 65}; 66 67} // namespace drive_backend 68} // namespace sync_file_system 69 70#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_ 71