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_UNINSTALL_APP_TASK_H_
      6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_UNINSTALL_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/remote_file_sync_service.h"
     14 #include "chrome/browser/sync_file_system/sync_callbacks.h"
     15 #include "google_apis/drive/gdata_errorcode.h"
     16 
     17 namespace drive {
     18 class DriveServiceInterface;
     19 }
     20 
     21 namespace google_apis {
     22 class ResourceEntry;
     23 class ResourceList;
     24 }
     25 
     26 namespace sync_file_system {
     27 namespace drive_backend {
     28 
     29 class FileTracker;
     30 class MetadataDatabase;
     31 class SyncEngineContext;
     32 class TrackerSet;
     33 
     34 class UninstallAppTask : public ExclusiveTask {
     35  public:
     36   typedef RemoteFileSyncService::UninstallFlag UninstallFlag;
     37   UninstallAppTask(SyncEngineContext* sync_context,
     38                    const std::string& app_id,
     39                    UninstallFlag uninstall_flag);
     40   virtual ~UninstallAppTask();
     41 
     42   virtual void RunExclusive(const SyncStatusCallback& callback) OVERRIDE;
     43 
     44  private:
     45   void DidDeleteAppRoot(const SyncStatusCallback& callback,
     46                         int64 change_id,
     47                         google_apis::GDataErrorCode error);
     48 
     49   bool IsContextReady();
     50   MetadataDatabase* metadata_database();
     51   drive::DriveServiceInterface* drive_service();
     52 
     53   SyncEngineContext* sync_context_;  // Not owned.
     54 
     55   std::string app_id_;
     56   UninstallFlag uninstall_flag_;
     57   int64 app_root_tracker_id_;
     58 
     59   base::WeakPtrFactory<UninstallAppTask> weak_ptr_factory_;
     60 
     61   DISALLOW_COPY_AND_ASSIGN(UninstallAppTask);
     62 };
     63 
     64 }  // namespace drive_backend
     65 }  // namespace sync_file_system
     66 
     67 #endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_UNINSTALL_APP_TASK_H_
     68