drive.proto revision 58537e28ecd584eab876aee8be7156509866d23a
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  // The argument with ID 7 had been used, but got deleted. Next ID to use: 8.
50}
51
52// Directory specific info, which is a part of ResourceEntry.
53message DirectorySpecificInfo {
54  // The changestamp of this directory. This value can be larger than the
55  // changestamp of ResourceMetadata, if this directory was
56  // "fast-fetched". See crbug.com/178348 for details about the "fast-fetch"
57  // feature.
58  optional int64 changestamp = 1;
59}
60
61// Represents metadata of a resource (file or directory) on Drive.
62message ResourceEntry {
63  optional PlatformFileInfoProto file_info = 1;
64  // Base name of the entry. The base name is used for file paths. Usually
65  // identical to |title|, but some extra number is inserted if multiple
66  // entries with the same title exist in the same directory, to ensure that
67  // file paths are unique. For instance, if two files titled "foo.jpg" exist
68  // in the same directory, which is allowed on drive.google.com, one of them
69  // will have a base name of "foo (2).jpg".
70  optional string base_name = 2;
71
72  // Title of the entry. See the comment at |base_name|.
73  optional string title = 3;
74
75  // Resource ID of the entry. Guaranteed to be unique.
76  optional string resource_id = 4;
77
78  // Local ID of the parent entry.
79  optional string parent_local_id = 7;
80
81  // This field is used for processing the change list from the
82  // server. Deleted entries won't be stored in ResourceMetadata.
83  optional bool deleted = 11;
84
85  // True if the entry is labeled with "shared-with-me".
86  optional bool shared_with_me = 14;
87
88  // File specific information, such as MD5.
89  optional FileSpecificInfo file_specific_info = 9;
90
91  // Directory specific information, such as changestamp.
92  optional DirectorySpecificInfo directory_specific_info = 13;
93}
94
95// Container for the header part of ResourceMetadata.
96message ResourceMetadataHeader {
97  // Monotonically increasing version number, which is changed when
98  // incompatible change is made to the DB format. kDBVersion in
99  // drive_resource_metadata_storage.h defines the current version.
100  optional int32 version = 1;
101  optional int64 largest_changestamp = 2;
102}
103
104// Message to store information of an existing cache file.
105message FileCacheEntry {
106  // MD5 of the cache file.
107  optional string md5 = 1;
108
109  // True if the file is present locally.
110  optional bool is_present = 2;
111
112  // True if the file is pinned (i.e. available offline).
113  optional bool is_pinned = 3;
114
115  // True if the file is dirty (i.e. modified locally).
116  optional bool is_dirty = 4;
117
118  // When adding a new state, be sure to update TestFileCacheState and test
119  // functions defined in test_util.cc.
120}
121