drive_backend_util.h revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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_DRIVE_BACKEND_UTIL_H_ 6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_ 7 8#include <string> 9 10#include "base/memory/scoped_ptr.h" 11#include "base/memory/scoped_vector.h" 12#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 13#include "chrome/browser/sync_file_system/sync_status_code.h" 14#include "google_apis/drive/gdata_errorcode.h" 15#include "webkit/common/blob/scoped_file.h" 16 17namespace google_apis { 18class ChangeResource; 19class FileResource; 20class ResourceEntry; 21} 22 23namespace leveldb { 24class WriteBatch; 25} 26 27namespace sync_file_system { 28namespace drive_backend { 29 30void PutServiceMetadataToBatch(const ServiceMetadata& service_metadata, 31 leveldb::WriteBatch* batch); 32void PutFileMetadataToBatch(const FileMetadata& file, 33 leveldb::WriteBatch* batch); 34void PutFileTrackerToBatch(const FileTracker& tracker, 35 leveldb::WriteBatch* batch); 36 37void PutFileMetadataDeletionToBatch(const std::string& file_id, 38 leveldb::WriteBatch* batch); 39void PutFileTrackerDeletionToBatch(int64 tracker_id, 40 leveldb::WriteBatch* batch); 41 42void PopulateFileDetailsByFileResource( 43 const google_apis::FileResource& file_resource, 44 FileDetails* details); 45scoped_ptr<FileMetadata> CreateFileMetadataFromFileResource( 46 int64 change_id, 47 const google_apis::FileResource& resource); 48scoped_ptr<FileMetadata> CreateFileMetadataFromChangeResource( 49 const google_apis::ChangeResource& change); 50scoped_ptr<FileMetadata> CreateDeletedFileMetadata( 51 int64 change_id, 52 const std::string& file_id); 53 54// Creates a temporary file in |dir_path|. This must be called on an 55// IO-allowed task runner, and the runner must be given as |file_task_runner|. 56webkit_blob::ScopedFile CreateTemporaryFile( 57 base::TaskRunner* file_task_runner); 58 59std::string FileKindToString(FileKind file_kind); 60 61bool HasFileAsParent(const FileDetails& details, const std::string& file_id); 62 63std::string GetMimeTypeFromTitle(const base::FilePath& title); 64 65SyncStatusCode GDataErrorCodeToSyncStatusCode( 66 google_apis::GDataErrorCode error); 67 68scoped_ptr<FileTracker> CloneFileTracker(const FileTracker* obj); 69 70template <typename Src, typename Dest> 71void AppendContents(const Src& src, Dest* dest) { 72 dest->insert(dest->end(), src.begin(), src.end()); 73} 74 75template <typename Container> 76const typename Container::mapped_type& LookUpMap( 77 const Container& container, 78 const typename Container::key_type& key, 79 const typename Container::mapped_type& default_value) { 80 typename Container::const_iterator found = container.find(key); 81 if (found == container.end()) 82 return default_value; 83 return found->second; 84} 85 86} // namespace drive_backend 87} // namespace sync_file_system 88 89#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_ 90