• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  // The argument with ID 1 (thumbnail_url) had been used, but got deleted.
27
28  // This URL is used for opening hosted documents with Google Drive's web
29  // interface.
30  optional string alternate_url = 2;
31
32  // Content mime type like "text/plain".
33  optional string content_mime_type = 3;
34
35  // The MD5 of contents of a regular file. Hosted files don't have MD5.
36  optional string md5 = 4;
37
38  // File extension, including the dot, used for hosted documents
39  // (ex. ".gsheet" for hosted spreadsheets).
40  optional string document_extension = 5;
41
42  // True if the file is a hosted document (i.e. document hosted on
43  // drive.google.com such as documents, spreadsheets, and presentations).
44  optional bool is_hosted_document = 6;
45
46  // The argument with ID 7 had been used, but got deleted.
47
48  // Width of the media if the file is an image.
49  optional int64 image_width = 8;
50
51  // Height of the media if the file is an image.
52  optional int64 image_height = 9;
53
54  // Rotation of the image in clockwise degrees (if an image).
55  optional int64 image_rotation = 10;
56
57  // Cache related states.
58  optional FileCacheEntry cache_state = 11;
59}
60
61// Directory specific info, which is a part of ResourceEntry.
62message DirectorySpecificInfo {
63  // The changestamp of this directory. This value can be larger than the
64  // changestamp of ResourceMetadata, if this directory was
65  // "fast-fetched". See crbug.com/178348 for details about the "fast-fetch"
66  // feature.
67  optional int64 changestamp = 1;
68}
69
70// Represents metadata of a resource (file or directory) on Drive.
71message ResourceEntry {
72  optional PlatformFileInfoProto file_info = 1;
73  // Base name of the entry. The base name is used for file paths. Usually
74  // identical to |title|, but some extra number is inserted if multiple
75  // entries with the same title exist in the same directory, to ensure that
76  // file paths are unique. For instance, if two files titled "foo.jpg" exist
77  // in the same directory, which is allowed on drive.google.com, one of them
78  // will have a base name of "foo (2).jpg".
79  optional string base_name = 2;
80
81  // Title of the entry. See the comment at |base_name|.
82  optional string title = 3;
83
84  // Resource ID of the entry. Guaranteed to be unique.
85  optional string resource_id = 4;
86
87  // Local ID of the entry.
88  optional string local_id = 15;
89
90  // Local ID of the parent entry.
91  optional string parent_local_id = 7;
92
93  // This field is used for processing the change list from the
94  // server. Deleted entries won't be stored in ResourceMetadata.
95  optional bool deleted = 11;
96
97  // True if the entry is labeled with "shared-with-me", i.e., owned by someone
98  // else initially and later shared to the current user.
99  optional bool shared_with_me = 14;
100
101  // True if the entry is labeled "shared". Either the entry itself or its
102  // ancestor is shared (to the user from / by the user to) other accounts.
103  optional bool shared = 17;
104
105  // File specific information, such as MD5.
106  optional FileSpecificInfo file_specific_info = 9;
107
108  // Directory specific information, such as changestamp.
109  optional DirectorySpecificInfo directory_specific_info = 13;
110
111  // Used to remember whether this entry is edited locally or not.
112  enum EditState {
113    CLEAN = 0;  // No local edit.
114    DIRTY = 1;  // Edited locally.
115    SYNCING = 2;  // Local change is being synced to the server.
116  }
117
118  // Indicates whether this entry's metadata is edited locally or not.
119  optional EditState metadata_edit_state = 16;
120
121  // The time of the last modification.
122  optional int64 modification_date = 18;
123}
124
125// Container for the header part of ResourceMetadata.
126message ResourceMetadataHeader {
127  // Monotonically increasing version number, which is changed when
128  // incompatible change is made to the DB format. kDBVersion in
129  // drive_resource_metadata_storage.h defines the current version.
130  optional int32 version = 1;
131  optional int64 largest_changestamp = 2;
132}
133
134// Message to store information of an existing cache file.
135message FileCacheEntry {
136  // MD5 of the cache file.
137  optional string md5 = 1;
138
139  // True if the file is present locally.
140  optional bool is_present = 2;
141
142  // True if the file is pinned (i.e. available offline).
143  optional bool is_pinned = 3;
144
145  // True if the file is dirty (i.e. modified locally).
146  optional bool is_dirty = 4;
147
148  // When adding a new state, be sure to update TestFileCacheState and test
149  // functions defined in test_util.cc.
150}
151