Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / drive_backend_util.h
index 03ada06..6bf5f63 100644 (file)
@@ -5,38 +5,83 @@
 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
 
+#include <string>
+
+#include "base/bind.h"
+#include "base/callback.h"
 #include "base/memory/scoped_ptr.h"
+#include "base/memory/scoped_vector.h"
+#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
+#include "chrome/browser/sync_file_system/sync_status_code.h"
+#include "google_apis/drive/gdata_errorcode.h"
+#include "storage/common/blob/scoped_file.h"
 
 namespace google_apis {
 class ChangeResource;
 class FileResource;
-}
-
-namespace leveldb {
-class WriteBatch;
+class ResourceEntry;
 }
 
 namespace sync_file_system {
 namespace drive_backend {
 
-class FileDetails;
-class FileMetadata;
-class FileTracker;
-class ServiceMetadata;
-
-void PutServiceMetadataToBatch(const ServiceMetadata& service_metadata,
-                               leveldb::WriteBatch* batch);
-void PutFileToBatch(const FileMetadata& file, leveldb::WriteBatch* batch);
-void PutTrackerToBatch(const FileTracker& tracker, leveldb::WriteBatch* batch);
-
-void PopulateFileDetailsByFileResource(
-    const google_apis::FileResource& file_resource,
-    FileDetails* details);
-scoped_ptr<FileMetadata> CreateFileMetadataFromFileResource(
-    int64 change_id,
-    const google_apis::FileResource& resource);
-scoped_ptr<FileMetadata> CreateFileMetadataFromChangeResource(
-    const google_apis::ChangeResource& change);
+class LevelDBWrapper;
+
+void PutVersionToDB(int64 version, LevelDBWrapper* db);
+
+void PutServiceMetadataToDB(const ServiceMetadata& service_metadata,
+                            LevelDBWrapper* db);
+void PutFileMetadataToDB(const FileMetadata& file, LevelDBWrapper* db);
+void PutFileTrackerToDB(const FileTracker& tracker, LevelDBWrapper* db);
+
+void PutFileMetadataDeletionToDB(const std::string& file_id,
+                                 LevelDBWrapper* db);
+void PutFileTrackerDeletionToDB(int64 tracker_id, LevelDBWrapper* db);
+
+bool HasFileAsParent(const FileDetails& details, const std::string& file_id);
+
+bool IsAppRoot(const FileTracker& tracker);
+
+std::string GetTrackerTitle(const FileTracker& tracker);
+
+SyncStatusCode GDataErrorCodeToSyncStatusCode(
+    google_apis::GDataErrorCode error);
+
+// Returns true if |str| starts with |prefix|, and removes |prefix| from |str|.
+// If |out| is not NULL, the result is stored in it.
+bool RemovePrefix(const std::string& str, const std::string& prefix,
+                  std::string* out);
+
+scoped_ptr<ServiceMetadata> InitializeServiceMetadata(LevelDBWrapper* db);
+
+template <typename Src, typename Dest>
+void AppendContents(const Src& src, Dest* dest) {
+  dest->insert(dest->end(), src.begin(), src.end());
+}
+
+template <typename Container>
+const typename Container::mapped_type& LookUpMap(
+    const Container& container,
+    const typename Container::key_type& key,
+    const typename Container::mapped_type& default_value) {
+  typename Container::const_iterator found = container.find(key);
+  if (found == container.end())
+    return default_value;
+  return found->second;
+}
+
+template <typename R, typename S, typename T>
+R ComposeFunction(const base::Callback<T()>& g,
+                  const base::Callback<R(S)>& f) {
+  return f.Run(g.Run());
+}
+
+template <typename R, typename S, typename T>
+base::Callback<R()> CreateComposedFunction(
+    const base::Callback<T()>& g,
+    const base::Callback<R(S)>& f) {
+  return base::Bind(&ComposeFunction<R, S, T>, g, f);
+}
 
 }  // namespace drive_backend
 }  // namespace sync_file_system