metadata_db_migration_util.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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_METADATA_DB_MIGRATION_UTIL_H_ 6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DB_MIGRATION_UTIL_H_ 7 8#include <string> 9 10#include "chrome/browser/sync_file_system/sync_file_system.pb.h" 11#include "chrome/browser/sync_file_system/sync_status_code.h" 12#include "third_party/leveldatabase/src/include/leveldb/db.h" 13 14class GURL; 15 16namespace sync_file_system { 17namespace drive_backend { 18 19// Parses a filesystem URL which contains 'drive' as a service name 20// (a.k.a. V0-format filesystem URL). 21// 22// When you parse V0-format filesystem URL, you should use this function instead 23// of DeserializeSyncableFileSystemURL() since 'drive' service name is no longer 24// used and the deserializer cannot parse the unregistered service name. 25// 26// EXAMPLE: 27// Assume following argument is given. 28// url: 'filesystem:http://www.example.com/external/drive/foo/bar' 29// returns 30// origin: 'http://www.example.com/' 31// path: 'foo/bar' 32bool ParseV0FormatFileSystemURL(const GURL& url, 33 GURL* origin, 34 base::FilePath* path); 35 36// Adds "file:" prefix to WAPI resource ID. 37// EXAMPLE: "xxx" => "file:xxx" 38std::string AddWapiFilePrefix(const std::string& resource_id); 39 40// Adds "folder:" prefix to WAPI resource ID. 41// EXAMPLE: "xxx" => "folder:xxx" 42std::string AddWapiFolderPrefix(const std::string& resource_id); 43 44// Adds a prefix corresponding to the given |type|. 45std::string AddWapiIdPrefix(const std::string& resource_id, 46 DriveMetadata_ResourceType type); 47 48// Removes a prefix from WAPI resource ID. 49// EXAMPLE: 50// "file:xxx" => "xxx" 51// "folder:yyy" => "yyy" 52// "zzz" => "zzz" 53std::string RemoveWapiIdPrefix(const std::string& resource_id); 54 55// Migrate |db| schema from version 0 to version 1. 56SyncStatusCode MigrateDatabaseFromV0ToV1(leveldb::DB* db); 57 58// Migrate |db| schema from version 1 to version 2. 59SyncStatusCode MigrateDatabaseFromV1ToV2(leveldb::DB* db); 60 61// Rollback |db| schema from version 4 to version 3. 62SyncStatusCode MigrateDatabaseFromV4ToV3(leveldb::DB* db); 63 64} // namespace drive_backend 65} // namespace sync_file_system 66 67#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DB_MIGRATION_UTIL_H_ 68