Home | History | Annotate | Download | only in drive_backend
      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 <string>
      9 
     10 #include "base/memory/scoped_ptr.h"
     11 #include "base/memory/weak_ptr.h"
     12 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h"
     13 #include "chrome/browser/sync_file_system/sync_callbacks.h"
     14 #include "google_apis/drive/gdata_errorcode.h"
     15 
     16 namespace drive {
     17 class DriveServiceInterface;
     18 }
     19 
     20 namespace google_apis {
     21 class ResourceEntry;
     22 class ResourceList;
     23 }
     24 
     25 namespace sync_file_system {
     26 namespace drive_backend {
     27 
     28 class FileTracker;
     29 class FolderCreator;
     30 class MetadataDatabase;
     31 class SyncEngineContext;
     32 class TrackerIDSet;
     33 
     34 class RegisterAppTask : public ExclusiveTask {
     35  public:
     36   RegisterAppTask(SyncEngineContext* sync_context, const std::string& app_id);
     37   virtual ~RegisterAppTask();
     38 
     39   bool CanFinishImmediately();
     40   virtual void RunExclusive(const SyncStatusCallback& callback) OVERRIDE;
     41 
     42  private:
     43   void CreateAppRootFolder(const SyncStatusCallback& callback);
     44   void DidCreateAppRootFolder(const SyncStatusCallback& callback,
     45                               const std::string& file_id,
     46                               SyncStatusCode status);
     47   bool FilterCandidates(const TrackerIDSet& trackers,
     48                         FileTracker* candidate);
     49   void RegisterAppIntoDatabase(const FileTracker& tracker,
     50                                const SyncStatusCallback& callback);
     51 
     52   MetadataDatabase* metadata_database();
     53   drive::DriveServiceInterface* drive_service();
     54 
     55   SyncEngineContext* sync_context_;  // Not owned.
     56 
     57   int create_folder_retry_count_;
     58   std::string app_id_;
     59 
     60   scoped_ptr<FolderCreator> folder_creator_;
     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