Upstream version 10.38.222.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend_v1 / fake_api_util.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_V1_FAKE_API_UTIL_H_
6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_FAKE_API_UTIL_H_
7
8 #include <map>
9 #include <string>
10
11 #include "chrome/browser/sync_file_system/drive_backend_v1/api_util_interface.h"
12 #include "chrome/browser/sync_file_system/sync_file_type.h"
13 #include "google_apis/drive/drive_api_parser.h"
14 #include "google_apis/drive/gdata_wapi_parser.h"
15 #include "google_apis/drive/gdata_wapi_url_generator.h"
16
17 class GURL;
18 class Profile;
19
20 namespace google_apis {
21 class ResourceEntry;
22 }
23
24 namespace sync_file_system {
25 namespace drive_backend {
26
27 class FakeAPIUtil : public APIUtilInterface {
28  public:
29   struct RemoteResource {
30     std::string parent_resource_id;
31     std::string parent_title;
32     std::string title;
33     std::string resource_id;
34     std::string md5_checksum;
35     SyncFileType type;
36     bool deleted;
37     int64 changestamp;
38
39     RemoteResource();
40     RemoteResource(const std::string& parent_resource_id,
41                    const std::string& parent_title,
42                    const std::string& title,
43                    const std::string& resource_id,
44                    const std::string& md5_checksum,
45                    SyncFileType type,
46                    bool deleted,
47                    int64 changestamp);
48     ~RemoteResource();
49   };
50
51   struct RemoteResourceComparator {
52     // Returns lexicographical order referring all members.
53     bool operator()(const RemoteResource& left, const RemoteResource& right);
54   };
55
56   typedef std::map<std::string, RemoteResource> RemoteResourceByResourceId;
57
58   FakeAPIUtil();
59   virtual ~FakeAPIUtil();
60
61   // APIUtilInterface overrides.
62   virtual void AddObserver(APIUtilObserver* observer) OVERRIDE;
63   virtual void RemoveObserver(APIUtilObserver* observer) OVERRIDE;
64   virtual void GetDriveDirectoryForSyncRoot(
65       const ResourceIdCallback& callback) OVERRIDE;
66   virtual void GetDriveDirectoryForOrigin(
67       const std::string& sync_root_resource_id,
68       const GURL& origin,
69       const ResourceIdCallback& callback) OVERRIDE;
70   virtual void GetLargestChangeStamp(
71       const ChangeStampCallback& callback) OVERRIDE;
72   virtual void GetResourceEntry(const std::string& resource_id,
73                                 const ResourceEntryCallback& callback) OVERRIDE;
74   virtual void ListFiles(const std::string& directory_resource_id,
75                          const ResourceListCallback& callback) OVERRIDE;
76   virtual void ListChanges(int64 start_changestamp,
77                            const ResourceListCallback& callback) OVERRIDE;
78   virtual void ContinueListing(const GURL& next_link,
79                                const ResourceListCallback& callback) OVERRIDE;
80   virtual void DownloadFile(const std::string& resource_id,
81                             const std::string& local_file_md5,
82                             const DownloadFileCallback& callback) OVERRIDE;
83   virtual void UploadNewFile(const std::string& directory_resource_id,
84                              const base::FilePath& local_file_path,
85                              const std::string& title,
86                              const UploadFileCallback& callback) OVERRIDE;
87   virtual void UploadExistingFile(const std::string& resource_id,
88                                   const std::string& remote_file_md5,
89                                   const base::FilePath& local_file_path,
90                                   const UploadFileCallback& callback) OVERRIDE;
91   virtual void CreateDirectory(const std::string& parent_resource_id,
92                                const std::string& title,
93                                const ResourceIdCallback& callback) OVERRIDE;
94   virtual bool IsAuthenticated() const OVERRIDE;
95   virtual void DeleteFile(const std::string& resource_id,
96                           const std::string& remote_file_md5,
97                           const GDataErrorCallback& callback) OVERRIDE;
98   virtual void EnsureSyncRootIsNotInMyDrive(
99       const std::string& sync_root_resource_id) OVERRIDE;
100
101   void PushRemoteChange(const std::string& parent_resource_id,
102                         const std::string& parent_title,
103                         const std::string& title,
104                         const std::string& resource_id,
105                         const std::string& md5,
106                         SyncFileType type,
107                         bool deleted);
108
109   const RemoteResourceByResourceId& remote_resources() const {
110     return remote_resources_;
111   }
112
113  private:
114   struct ChangeStampComparator;
115   RemoteResourceByResourceId remote_resources_;
116
117   scoped_ptr<google_apis::ResourceEntry> CreateResourceEntry(
118       const RemoteResource& resource_id) const;
119   GURL ResourceIdToResourceLink(const std::string& resource_id) const;
120
121   int64 largest_changestamp_;
122   google_apis::GDataWapiUrlGenerator url_generator_;
123
124   DISALLOW_COPY_AND_ASSIGN(FakeAPIUtil);
125 };
126
127 }  // namespace drive_backend
128 }  // namespace sync_file_system
129
130 #endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_V1_FAKE_API_UTIL_H_