uninstall_app_task.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_UNINSTALL_APP_TASK_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_UNINSTALL_APP_TASK_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <string>
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/weak_ptr.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/sync_task.h"
13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/sync_file_system/remote_file_sync_service.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync_file_system/sync_callbacks.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "google_apis/drive/gdata_errorcode.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace drive {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DriveServiceInterface;
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace google_apis {
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ResourceEntry;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceList;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace sync_file_system {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace drive_backend {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileTracker;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MetadataDatabase;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SyncEngineContext;
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class TrackerSet;
33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class UninstallAppTask : public SequentialSyncTask {
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  typedef RemoteFileSyncService::UninstallFlag UninstallFlag;
37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  UninstallAppTask(SyncEngineContext* sync_context,
38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   const std::string& app_id,
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                   UninstallFlag uninstall_flag);
40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual ~UninstallAppTask();
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunSequential(const SyncStatusCallback& callback) OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void DidDeleteAppRoot(const SyncStatusCallback& callback,
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        int64 change_id,
47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                        google_apis::GDataErrorCode error);
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsContextReady();
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MetadataDatabase* metadata_database();
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  drive::DriveServiceInterface* drive_service();
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  SyncEngineContext* sync_context_;  // Not owned.
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  std::string app_id_;
567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  UninstallFlag uninstall_flag_;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 app_root_tracker_id_;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::WeakPtrFactory<UninstallAppTask> weak_ptr_factory_;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(UninstallAppTask);
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}  // namespace drive_backend
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace sync_file_system
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_UNINSTALL_APP_TASK_H_
68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)