Upstream version 6.35.121.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / drive_backend_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_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
17 namespace google_apis {
18 class ChangeResource;
19 class FileResource;
20 class ResourceEntry;
21 }
22
23 namespace leveldb {
24 class WriteBatch;
25 }
26
27 namespace sync_file_system {
28 namespace drive_backend {
29
30 void PutServiceMetadataToBatch(const ServiceMetadata& service_metadata,
31                                leveldb::WriteBatch* batch);
32 void PutFileMetadataToBatch(const FileMetadata& file,
33                             leveldb::WriteBatch* batch);
34 void PutFileTrackerToBatch(const FileTracker& tracker,
35                            leveldb::WriteBatch* batch);
36
37 void PutFileMetadataDeletionToBatch(const std::string& file_id,
38                                     leveldb::WriteBatch* batch);
39 void PutFileTrackerDeletionToBatch(int64 tracker_id,
40                                    leveldb::WriteBatch* batch);
41
42 void PopulateFileDetailsByFileResource(
43     const google_apis::FileResource& file_resource,
44     FileDetails* details);
45 scoped_ptr<FileMetadata> CreateFileMetadataFromFileResource(
46     int64 change_id,
47     const google_apis::FileResource& resource);
48 scoped_ptr<FileMetadata> CreateFileMetadataFromChangeResource(
49     const google_apis::ChangeResource& change);
50 scoped_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|.
56 webkit_blob::ScopedFile CreateTemporaryFile(
57     base::TaskRunner* file_task_runner);
58
59 std::string FileKindToString(FileKind file_kind);
60
61 bool HasFileAsParent(const FileDetails& details, const std::string& file_id);
62
63 std::string GetMimeTypeFromTitle(const base::FilePath& title);
64
65 scoped_ptr<google_apis::ResourceEntry> GetOldestCreatedFolderResource(
66     ScopedVector<google_apis::ResourceEntry> list);
67
68 SyncStatusCode GDataErrorCodeToSyncStatusCode(
69     google_apis::GDataErrorCode error);
70
71 scoped_ptr<FileTracker> CloneFileTracker(const FileTracker* obj);
72
73 template <typename Src, typename Dest>
74 void AppendContents(const Src& src, Dest* dest) {
75   dest->insert(dest->end(), src.begin(), src.end());
76 }
77
78 template <typename Container>
79 const typename Container::mapped_type& LookUpMap(
80     const Container& container,
81     const typename Container::key_type& key,
82     const typename Container::mapped_type& default_value) {
83   typename Container::const_iterator found = container.find(key);
84   if (found == container.end())
85     return default_value;
86   return found->second;
87 }
88
89 }  // namespace drive_backend
90 }  // namespace sync_file_system
91
92 #endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_