summaryrefslogtreecommitdiffstats
path: root/components/drive/drive.proto
blob: 7a99598cd4cddf2a1ac9fe111ff8e72f857ccee3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Protocol buffer definitions for representing Drive files and directories,
// and serializing them for the resource metadata database.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package drive;

// Represents base::PlatformFileInfo.
message PlatformFileInfoProto {
  optional int64 size = 1;
  optional bool is_directory = 2;
  optional bool is_symbolic_link = 3;
  optional int64 last_modified = 4;
  optional int64 last_accessed = 5;
  optional int64 creation_time = 6;
}

// Represents a property for a file.
message Property {
  optional string key = 1;
  optional string value = 2;

  // Visibility of the property. Either restricted to the same client, or
  // public.
  enum Visibility {
    PRIVATE = 0;
    PUBLIC = 1;
  }

  optional Visibility visibility = 3;
}

// File specific info, which is a part of ResourceEntry.
message FileSpecificInfo {
  // The argument with ID 1 (thumbnail_url) had been used, but got deleted.

  // This URL is used for opening hosted documents with Google Drive's web
  // interface.
  optional string alternate_url = 2;

  // Content mime type like "text/plain".
  optional string content_mime_type = 3;

  // The MD5 of contents of a regular file. Hosted files don't have MD5.
  optional string md5 = 4;

  // File extension, including the dot, used for hosted documents
  // (ex. ".gsheet" for hosted spreadsheets).
  optional string document_extension = 5;

  // True if the file is a hosted document (i.e. document hosted on
  // drive.google.com such as documents, spreadsheets, and presentations).
  optional bool is_hosted_document = 6;

  // The argument with ID 7 had been used, but got deleted.

  // Width of the media if the file is an image.
  optional int64 image_width = 8;

  // Height of the media if the file is an image.
  optional int64 image_height = 9;

  // Rotation of the image in clockwise degrees (if an image).
  optional int64 image_rotation = 10;

  // Cache related states.
  optional FileCacheEntry cache_state = 11;
}

// Directory specific info, which is a part of ResourceEntry.
message DirectorySpecificInfo {
  // The changestamp of this directory. This value can be larger than the
  // changestamp of ResourceMetadata, if this directory was
  // "fast-fetched". See crbug.com/178348 for details about the "fast-fetch"
  // feature.
  optional int64 changestamp = 1;
}

// Represents metadata of a resource (file or directory) on Drive.
message ResourceEntry {
  optional PlatformFileInfoProto file_info = 1;
  // Base name of the entry. The base name is used for file paths. Usually
  // identical to |title|, but some extra number is inserted if multiple
  // entries with the same title exist in the same directory, to ensure that
  // file paths are unique. For instance, if two files titled "foo.jpg" exist
  // in the same directory, which is allowed on drive.google.com, one of them
  // will have a base name of "foo (2).jpg".
  optional string base_name = 2;

  // Title of the entry. See the comment at |base_name|.
  optional string title = 3;

  // Resource ID of the entry. Guaranteed to be unique.
  optional string resource_id = 4;

  // Local ID of the entry.
  optional string local_id = 15;

  // Local ID of the parent entry.
  optional string parent_local_id = 7;

  // This field is used for processing the change list from the
  // server. Deleted entries won't be stored in ResourceMetadata.
  optional bool deleted = 11;

  // True if the entry is labeled with "shared-with-me", i.e., owned by someone
  // else initially and later shared to the current user.
  optional bool shared_with_me = 14;

  // True if the entry is labeled "shared". Either the entry itself or its
  // ancestor is shared (to the user from / by the user to) other accounts.
  optional bool shared = 17;

  // File specific information, such as MD5.
  optional FileSpecificInfo file_specific_info = 9;

  // Directory specific information, such as changestamp.
  optional DirectorySpecificInfo directory_specific_info = 13;

  // Used to remember whether this entry is edited locally or not.
  enum EditState {
    CLEAN = 0;    // No local edit.
    DIRTY = 1;    // Edited locally.
    SYNCING = 2;  // Local change is being synced to the server.
  }

  // Indicates whether this entry's metadata is edited locally or not.
  optional EditState metadata_edit_state = 16;

  // The time of the last modification.
  optional int64 modification_date = 18;

  // List of new properties which are not synced yet via Drive API. Note, that
  // currently existing properties are never fetched via Drive API, as they are
  // never used. That would cause growing the proto size for no reason.
  repeated Property new_properties = 19;
}

// Container for the header part of ResourceMetadata.
message ResourceMetadataHeader {
  // Monotonically increasing version number, which is changed when
  // incompatible change is made to the DB format. kDBVersion in
  // drive_resource_metadata_storage.h defines the current version.
  optional int32 version = 1;
  optional int64 largest_changestamp = 2;
}

// Message to store information of an existing cache file.
message FileCacheEntry {
  // MD5 of the cache file.
  optional string md5 = 1;

  // True if the file is present locally.
  optional bool is_present = 2;

  // True if the file is pinned (i.e. available offline).
  optional bool is_pinned = 3;

  // True if the file is dirty (i.e. modified locally).
  optional bool is_dirty = 4;

  // When adding a new state, be sure to update TestFileCacheState and test
  // functions defined in test_util.cc.
}