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