15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FAKE_DRIVE_SERVICE_HELPER_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FAKE_DRIVE_SERVICE_HELPER_H_ 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <string> 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/files/scoped_temp_dir.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/drive/drive_uploader.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/drive/fake_drive_service.h" 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/gdata_wapi_parser.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace base { 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FilePath; 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace sync_file_system { 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace drive_backend { 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FakeDriveServiceHelper { 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FakeDriveServiceHelper(drive::FakeDriveService* fake_drive_service, 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) drive::DriveUploaderInterface* drive_uploader, 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& sync_root_folder_title); 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~FakeDriveServiceHelper(); 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode AddOrphanedFolder( 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& title, 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string* folder_id); 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode AddFolder( 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& parent_folder_id, 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& title, 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string* folder_id); 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode AddFile( 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& parent_folder_id, 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& title, 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& content, 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string* file_id); 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode UpdateFile( 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& file_id, 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& content); 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) google_apis::GDataErrorCode DeleteResource( 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& file_id); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) google_apis::GDataErrorCode TrashResource( 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& file_id); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) google_apis::GDataErrorCode UpdateModificationTime( 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& file_id, 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::Time& modification_time); 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) google_apis::GDataErrorCode RenameResource( 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& file_id, 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& new_title); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) google_apis::GDataErrorCode AddResourceToDirectory( 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& parent_folder_id, 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& file_id); 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) google_apis::GDataErrorCode RemoveResourceFromDirectory( 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& parent_folder_id, 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& file_id); 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode GetSyncRootFolderID( 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string* sync_root_folder_id); 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode ListFilesInFolder( 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& folder_id, 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ScopedVector<google_apis::ResourceEntry>* entries); 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode SearchByTitle( 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& folder_id, 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& title, 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ScopedVector<google_apis::ResourceEntry>* entries); 6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) google_apis::GDataErrorCode GetFileResource( 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& file_id, 7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) scoped_ptr<google_apis::FileResource>* entry); 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode ReadFile( 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& file_id, 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string* file_content); 758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) google_apis::GDataErrorCode GetAboutResource( 768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) scoped_ptr<google_apis::AboutResource>* about_resource); 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FilePath base_dir_path() { return base_dir_.path(); } 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch google_apis::GDataErrorCode CompleteListing( 8246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) scoped_ptr<google_apis::FileList> list, 8346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) ScopedVector<google_apis::ResourceEntry>* entries); 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void Initialize(); 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FilePath WriteToTempFile(const std::string& content); 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::ScopedTempDir base_dir_; 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FilePath temp_dir_; 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Not own. 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch drive::FakeDriveService* fake_drive_service_; 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch drive::DriveUploaderInterface* drive_uploader_; 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string sync_root_folder_title_; 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace drive_backend 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace sync_file_system 101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FAKE_DRIVE_SERVICE_HELPER_H_ 103