Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / metadata_db_migration_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_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 // Rollback |db| schema from version 4 to version 3.
62 SyncStatusCode 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_