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_ 131