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 14 class GURL; 15 16 namespace sync_file_system { 17 namespace 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' 32 bool 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" 38 std::string AddWapiFilePrefix(const std::string& resource_id); 39 40 // Adds "folder:" prefix to WAPI resource ID. 41 // EXAMPLE: "xxx" => "folder:xxx" 42 std::string AddWapiFolderPrefix(const std::string& resource_id); 43 44 // Adds a prefix corresponding to the given |type|. 45 std::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" 53 std::string RemoveWapiIdPrefix(const std::string& resource_id); 54 55 // Migrate |db| schema from version 0 to version 1. 56 SyncStatusCode MigrateDatabaseFromV0ToV1(leveldb::DB* db); 57 58 // Migrate |db| schema from version 1 to version 2. 59 SyncStatusCode MigrateDatabaseFromV1ToV2(leveldb::DB* db); 60 61 } // namespace drive_backend 62 } // namespace sync_file_system 63 64 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DB_MIGRATION_UTIL_H_ 65