register_app_task.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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_REGISTER_APP_TASK_H_ 6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_REGISTER_APP_TASK_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "base/memory/weak_ptr.h" 10#include "chrome/browser/sync_file_system/sync_callbacks.h" 11#include "chrome/browser/sync_file_system/sync_task.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 FileTracker; 27class FolderCreator; 28class MetadataDatabase; 29class SyncEngineContext; 30class TrackerSet; 31 32class RegisterAppTask : public SyncTask { 33 public: 34 RegisterAppTask(SyncEngineContext* sync_context, const std::string& app_id); 35 virtual ~RegisterAppTask(); 36 37 virtual void Run(const SyncStatusCallback& callback) OVERRIDE; 38 39 private: 40 void CreateAppRootFolder(const SyncStatusCallback& callback); 41 void DidCreateAppRootFolder(const SyncStatusCallback& callback, 42 const std::string& file_id, 43 SyncStatusCode status); 44 bool FilterCandidates(const TrackerSet& trackers, 45 FileTracker* candidate); 46 void RegisterAppIntoDatabase(const FileTracker& tracker, 47 const SyncStatusCallback& callback); 48 49 MetadataDatabase* metadata_database(); 50 drive::DriveServiceInterface* drive_service(); 51 52 SyncEngineContext* sync_context_; // Not owned. 53 54 int create_folder_retry_count_; 55 std::string app_id_; 56 57 scoped_ptr<FolderCreator> folder_creator_; 58 59 base::WeakPtrFactory<RegisterAppTask> weak_ptr_factory_; 60 61 DISALLOW_COPY_AND_ASSIGN(RegisterAppTask); 62}; 63 64} // namespace drive_backend 65} // namespace sync_file_system 66 67#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_REGISTER_APP_TASK_H_ 68