- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / register_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_REGISTER_APP_TASK_H_
6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_REGISTER_APP_TASK_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/weak_ptr.h"
10 #include "chrome/browser/google_apis/gdata_errorcode.h"
11 #include "chrome/browser/sync_file_system/sync_callbacks.h"
12 #include "chrome/browser/sync_file_system/sync_task.h"
13
14 namespace drive {
15 class DriveServiceInterface;
16 }
17
18 namespace google_apis {
19 class ResourceEntry;
20 class ResourceList;
21 }
22
23 namespace sync_file_system {
24 namespace drive_backend {
25
26 class FileTracker;
27 class MetadataDatabase;
28 class SyncEngineContext;
29 class TrackerSet;
30
31 class RegisterAppTask : public SyncTask {
32  public:
33   RegisterAppTask(SyncEngineContext* sync_context, const std::string& app_id);
34   virtual ~RegisterAppTask();
35
36   virtual void Run(const SyncStatusCallback& callback) OVERRIDE;
37
38  private:
39   void CreateAppRootFolder(const SyncStatusCallback& callback);
40   void DidCreateAppRootFolder(const SyncStatusCallback& callback,
41                               int64 change_id,
42                               google_apis::GDataErrorCode error,
43                               scoped_ptr<google_apis::ResourceEntry> entry);
44   void DidUpdateDatabase(const SyncStatusCallback& callback,
45                          const std::string& file_id,
46                          SyncStatusCode status);
47   void DidPrepareForRegister(const SyncStatusCallback& callback,
48                              SyncStatusCode status);
49   bool FilterCandidates(const TrackerSet& trackers,
50                         FileTracker* candidate);
51   void RegisterAppIntoDatabase(const FileTracker& tracker,
52                                const SyncStatusCallback& callback);
53
54   MetadataDatabase* metadata_database();
55   drive::DriveServiceInterface* drive_service();
56
57   SyncEngineContext* sync_context_;  // Not owned.
58
59   int create_folder_retry_count_;
60   std::string app_id_;
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_