drive.proto revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
1// Copyright (c) 2012 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// Protocol buffer definitions for representing Drive files and directories,
6// and serializing them for the resource metadata database.
7
8syntax = "proto2";
9
10option optimize_for = LITE_RUNTIME;
11
12package drive;
13
14// Represents base::PlatformFileInfo.
15message PlatformFileInfoProto {
16  optional int64 size = 1;
17  optional bool is_directory = 2;
18  optional bool is_symbolic_link = 3;
19  optional int64 last_modified = 4;
20  optional int64 last_accessed = 5;
21  optional int64 creation_time = 6;
22}
23
24// File specific info, which is a part of ResourceEntry.
25message FileSpecificInfo {
26  // This URL points to a thumbnail image. The thumbnail URL is not permanent
27  // as it's not protected by authentication. See crbug.com/127697 for how
28  // stale thumbnail URLs are handled.
29  optional string thumbnail_url = 1;
30
31  // This URL is used for opening hosted documents with Google Drive's web
32  // interface.
33  optional string alternate_url = 2;
34
35  // Content mime type like "text/plain".
36  optional string content_mime_type = 3;
37
38  // The MD5 of contents of a regular file. Hosted files don't have MD5.
39  optional string md5 = 4;
40
41  // File extension, including the dot, used for hosted documents
42  // (ex. ".gsheet" for hosted spreadsheets).
43  optional string document_extension = 5;
44
45  // True if the file is a hosted document (i.e. document hosted on
46  // drive.google.com such as documents, spreadsheets, and presentations).
47  optional bool is_hosted_document = 6;
48}
49
50// Directory specific info, which is a part of ResourceEntry.
51message DirectorySpecificInfo {
52  // The changestamp of this directory. This value can be larger than the
53  // changestamp of ResourceMetadata, if this directory was
54  // "fast-fetched". See crbug.com/178348 for details about the "fast-fetch"
55  // feature.
56  optional int64 changestamp = 1;
57}
58
59// Represents metadata of a resource (file or directory) on Drive.
60message ResourceEntry {
61  optional PlatformFileInfoProto file_info = 1;
62  // Base name of the entry. The base name is used for file paths. Usually
63  // identical to |title|, but some extra number is inserted if multiple
64  // entries with the same title exist in the same directory, to ensure that
65  // file paths are unique. For instance, if two files titled "foo.jpg" exist
66  // in the same directory, which is allowed on drive.google.com, one of them
67  // will have a base name of "foo (2).jpg".
68  optional string base_name = 2;
69
70  // Title of the entry. See the comment at |base_name|.
71  optional string title = 3;
72
73  // Resource ID of the entry. Guaranteed to be unique.
74  optional string resource_id = 4;
75
76  // Resource ID of the parent entry. Every entry is guaranteed to have the
77  // single parent resource ID in ResourceMetadata. This requirement is
78  // needed to represent contents in Drive as a file system tree, and
79  // achieved as follows:
80  //
81  // 1) Entries without parents are allowed on drive.google.com. These
82  // entries are collected to "drive/other", and have the resource ID of
83  // "drive/other" as the parent resource ID.
84  //
85  // 2) Entries with multiple parents are allowed on drive.google.com. For
86  // these entries, the first parent resource ID is chosen.
87  optional string parent_resource_id = 7;
88
89  // This field is used for processing the change list from the
90  // server. Deleted entries won't be stored in ResourceMetadata.
91  optional bool deleted = 11;
92
93  // True if the entry is labeled with "shared-with-me".
94  optional bool shared_with_me = 14;
95
96  // File specific information, such as MD5.
97  optional FileSpecificInfo file_specific_info = 9;
98
99  // Directory specific information, such as changestamp.
100  optional DirectorySpecificInfo directory_specific_info = 13;
101}
102
103// Container for the header part of ResourceMetadata.
104message ResourceMetadataHeader {
105  // Monotonically increasing version number, which is changed when
106  // incompatible change is made to the DB format. kDBVersion in
107  // drive_resource_metadata_storage.h defines the current version.
108  optional int32 version = 1;
109  optional int64 largest_changestamp = 2;
110}
111
112// Message to store information of an existing cache file.
113message FileCacheEntry {
114  // MD5 of the cache file. "local" if the file is locally modified.
115  optional string md5 = 1;
116
117  // True if the file is present locally.
118  optional bool is_present = 2;
119
120  // True if the file is pinned (i.e. available offline).
121  optional bool is_pinned = 3;
122
123  // True if the file is dirty (i.e. modified locally).
124  optional bool is_dirty = 4;
125
126  // TODO(hashimoto): Remove this block after DB merge. crbug.com/234487
127  // True if the file is in the persistent directory.
128  // optional bool is_persistent = 6;
129
130  // When adding a new state, be sure to update TestFileCacheState and test
131  // functions defined in drive_test_util.cc.
132}
133