folder_creator.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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_FOLDER_CREATOR_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "base/memory/scoped_vector.h"
12#include "base/memory/weak_ptr.h"
13#include "chrome/browser/sync_file_system/sync_callbacks.h"
14#include "google_apis/drive/gdata_errorcode.h"
15
16namespace drive {
17class DriveServiceInterface;
18}
19
20namespace google_apis {
21class FileList;
22class FileResource;
23class ResourceEntry;
24}
25
26namespace sync_file_system {
27namespace drive_backend {
28
29class MetadataDatabase;
30class SyncEngineContext;
31
32class FolderCreator {
33 public:
34  typedef base::Callback<void(const std::string& file_id,
35                              SyncStatusCode status)> FileIDCallback;
36
37  FolderCreator(drive::DriveServiceInterface* drive_service,
38                MetadataDatabase* metadata_database,
39                const std::string& parent_folder_id,
40                const std::string& title);
41  ~FolderCreator();
42
43  void Run(const FileIDCallback& callback);
44
45 private:
46  void DidCreateFolder(const FileIDCallback& callback,
47                       google_apis::GDataErrorCode error,
48                       scoped_ptr<google_apis::FileResource> entry);
49  void DidListFolders(const FileIDCallback& callback,
50                      ScopedVector<google_apis::FileResource> candidates,
51                      google_apis::GDataErrorCode error,
52                      scoped_ptr<google_apis::FileList> file_list);
53
54  drive::DriveServiceInterface* drive_service_;
55  MetadataDatabase* metadata_database_;
56
57  const std::string parent_folder_id_;
58  const std::string title_;
59
60  base::WeakPtrFactory<FolderCreator> weak_ptr_factory_;
61
62  DISALLOW_COPY_AND_ASSIGN(FolderCreator);
63};
64
65}  // namespace drive_backend
66}  // namespace sync_file_system
67
68#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FOLDER_CREATOR_H_
69