Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / uninstall_app_task.h
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_