drive_backend_util.h revision f2477e01787aa58f445919b809d89e252beef54f
1184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke// Copyright 2013 The Chromium Authors. All rights reserved.
2184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke// Use of this source code is governed by a BSD-style license that can be
3184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke// found in the LICENSE file.
4184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
5184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
6184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
7184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
8184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke#include <string>
9184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
10184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke#include "base/memory/scoped_ptr.h"
11184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke#include "base/memory/scoped_vector.h"
12184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
13184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke#include "webkit/common/blob/scoped_file.h"
14184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
15379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsbergnamespace google_apis {
16184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzkeclass ChangeResource;
17379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsbergclass FileResource;
18184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzkeclass ResourceEntry;
19184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke}
20184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
21184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzkenamespace leveldb {
226b52e82768b68dd75bfda9637f0154c5425171edChia-I Wuclass WriteBatch;
236b52e82768b68dd75bfda9637f0154c5425171edChia-I Wu}
24379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsberg
2558dc1b28d1ef4d1931c52b079d304f2e1546329dKristian Høgsbergnamespace sync_file_system {
266b52e82768b68dd75bfda9637f0154c5425171edChia-I Wunamespace drive_backend {
276b52e82768b68dd75bfda9637f0154c5425171edChia-I Wu
2858dc1b28d1ef4d1931c52b079d304f2e1546329dKristian Høgsbergvoid PutServiceMetadataToBatch(const ServiceMetadata& service_metadata,
296b52e82768b68dd75bfda9637f0154c5425171edChia-I Wu                               leveldb::WriteBatch* batch);
306b52e82768b68dd75bfda9637f0154c5425171edChia-I Wuvoid PutFileToBatch(const FileMetadata& file, leveldb::WriteBatch* batch);
316b52e82768b68dd75bfda9637f0154c5425171edChia-I Wuvoid PutTrackerToBatch(const FileTracker& tracker, leveldb::WriteBatch* batch);
326b52e82768b68dd75bfda9637f0154c5425171edChia-I Wu
336b52e82768b68dd75bfda9637f0154c5425171edChia-I Wuvoid PopulateFileDetailsByFileResource(
346b52e82768b68dd75bfda9637f0154c5425171edChia-I Wu    const google_apis::FileResource& file_resource,
356b52e82768b68dd75bfda9637f0154c5425171edChia-I Wu    FileDetails* details);
366b52e82768b68dd75bfda9637f0154c5425171edChia-I Wuscoped_ptr<FileMetadata> CreateFileMetadataFromFileResource(
37379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsberg    int64 change_id,
38184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke    const google_apis::FileResource& resource);
39184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzkescoped_ptr<FileMetadata> CreateFileMetadataFromChangeResource(
40184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke    const google_apis::ChangeResource& change);
416b52e82768b68dd75bfda9637f0154c5425171edChia-I Wu
42184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke// Creates a temporary file in |dir_path|.  This must be called on an
43379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsberg// IO-allowed thread.
44379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsbergwebkit_blob::ScopedFile CreateTemporaryFile();
45184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
46184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzkestd::string FileKindToString(FileKind file_kind);
47184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
48184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzkebool HasFileAsParent(const FileDetails& details, const std::string& file_id);
49184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
501aaec8c60985ffe03af265bf8f659ee0319926caKristian Høgsbergstd::string GetMimeTypeFromTitle(const base::FilePath& title);
51184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
52379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsbergscoped_ptr<google_apis::ResourceEntry> GetOldestCreatedFolderResource(
53379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsberg    ScopedVector<google_apis::ResourceEntry> list);
54184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke
55184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke}  // namespace drive_backend
56184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke}  // namespace sync_file_system
57379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsberg
58379eb47ea61c87c9ac071fa6d93e49ae3f02ac2cKristian Høgsberg#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
59184bb09ff5cf2715dfee91e25ec20cbaa2e4445cBenjamin Franzke