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