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.
5 // Protocol buffer definitions for representing Drive files and directories,
6 // and serializing them for the resource metadata database.
10 option optimize_for = LITE_RUNTIME;
14 // Represents base::PlatformFileInfo.
15 message 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;
24 // Represents a property for a file.
26 optional string key = 1;
27 optional string value = 2;
29 // Visibility of the property. Either restricted to the same client, or
36 optional Visibility visibility = 3;
39 // File specific info, which is a part of ResourceEntry.
40 message FileSpecificInfo {
41 // The argument with ID 1 (thumbnail_url) had been used, but got deleted.
43 // This URL is used for opening hosted documents with Google Drive's web
45 optional string alternate_url = 2;
47 // Content mime type like "text/plain".
48 optional string content_mime_type = 3;
50 // The MD5 of contents of a regular file. Hosted files don't have MD5.
51 optional string md5 = 4;
53 // File extension, including the dot, used for hosted documents
54 // (ex. ".gsheet" for hosted spreadsheets).
55 optional string document_extension = 5;
57 // True if the file is a hosted document (i.e. document hosted on
58 // drive.google.com such as documents, spreadsheets, and presentations).
59 optional bool is_hosted_document = 6;
61 // The argument with ID 7 had been used, but got deleted.
63 // Width of the media if the file is an image.
64 optional int64 image_width = 8;
66 // Height of the media if the file is an image.
67 optional int64 image_height = 9;
69 // Rotation of the image in clockwise degrees (if an image).
70 optional int64 image_rotation = 10;
72 // Cache related states.
73 optional FileCacheEntry cache_state = 11;
76 // Directory specific info, which is a part of ResourceEntry.
77 message DirectorySpecificInfo {
78 // The changestamp of this directory. This value can be larger than the
79 // changestamp of ResourceMetadata, if this directory was
80 // "fast-fetched". See crbug.com/178348 for details about the "fast-fetch"
82 optional int64 changestamp = 1;
85 // Represents metadata of a resource (file or directory) on Drive.
86 message ResourceEntry {
87 optional PlatformFileInfoProto file_info = 1;
88 // Base name of the entry. The base name is used for file paths. Usually
89 // identical to |title|, but some extra number is inserted if multiple
90 // entries with the same title exist in the same directory, to ensure that
91 // file paths are unique. For instance, if two files titled "foo.jpg" exist
92 // in the same directory, which is allowed on drive.google.com, one of them
93 // will have a base name of "foo (2).jpg".
94 optional string base_name = 2;
96 // Title of the entry. See the comment at |base_name|.
97 optional string title = 3;
99 // Resource ID of the entry. Guaranteed to be unique.
100 optional string resource_id = 4;
102 // Local ID of the entry.
103 optional string local_id = 15;
105 // Local ID of the parent entry.
106 optional string parent_local_id = 7;
108 // This field is used for processing the change list from the
109 // server. Deleted entries won't be stored in ResourceMetadata.
110 optional bool deleted = 11;
112 // True if the entry is labeled with "shared-with-me", i.e., owned by someone
113 // else initially and later shared to the current user.
114 optional bool shared_with_me = 14;
116 // True if the entry is labeled "shared". Either the entry itself or its
117 // ancestor is shared (to the user from / by the user to) other accounts.
118 optional bool shared = 17;
120 // File specific information, such as MD5.
121 optional FileSpecificInfo file_specific_info = 9;
123 // Directory specific information, such as changestamp.
124 optional DirectorySpecificInfo directory_specific_info = 13;
126 // Used to remember whether this entry is edited locally or not.
128 CLEAN = 0; // No local edit.
129 DIRTY = 1; // Edited locally.
130 SYNCING = 2; // Local change is being synced to the server.
133 // Indicates whether this entry's metadata is edited locally or not.
134 optional EditState metadata_edit_state = 16;
136 // The time of the last modification.
137 optional int64 modification_date = 18;
139 // List of new properties which are not synced yet via Drive API. Note, that
140 // currently existing properties are never fetched via Drive API, as they are
141 // never used. That would cause growing the proto size for no reason.
142 repeated Property new_properties = 19;
145 // Container for the header part of ResourceMetadata.
146 message ResourceMetadataHeader {
147 // Monotonically increasing version number, which is changed when
148 // incompatible change is made to the DB format. kDBVersion in
149 // drive_resource_metadata_storage.h defines the current version.
150 optional int32 version = 1;
151 optional int64 largest_changestamp = 2;
154 // Message to store information of an existing cache file.
155 message FileCacheEntry {
156 // MD5 of the cache file.
157 optional string md5 = 1;
159 // True if the file is present locally.
160 optional bool is_present = 2;
162 // True if the file is pinned (i.e. available offline).
163 optional bool is_pinned = 3;
165 // True if the file is dirty (i.e. modified locally).
166 optional bool is_dirty = 4;
168 // When adding a new state, be sure to update TestFileCacheState and test
169 // functions defined in test_util.cc.