register_app_task.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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
14namespace drive {
15class DriveServiceInterface;
16}
17
18namespace google_apis {
19class ResourceEntry;
20class ResourceList;
21}
22
23namespace sync_file_system {
24namespace drive_backend {
25
26class FileTracker;
27class MetadataDatabase;
28class SyncEngineContext;
29class TrackerSet;
30
31class 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_
71