summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/drive/drive.proto
blob: 336bbb7d2ec63b23a1ef134df766f1b2447d9f57 (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
// 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 serializing Drive files and directories.

syntax = "proto2";

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;
}

// File specific info, which is a part of DriveEntryProto.
message DriveFileSpecificInfo {
  // This URL points to a thumbnail image. The thumbnail URL is not permanent
  // as it's not protected by authentication. See crbug.com/127697 for how
  // stale thumbnail URLs are handled.
  optional string thumbnail_url = 1;

  // This URL is used for opening hosted documents with Google Docs'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.
  optional string file_md5 = 4;

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

  // True if the file is a hosted document.
  optional bool is_hosted_document = 6;

  // This URL points to a page containing Share UI for this document.
  optional string share_url = 7;
}

// Represents DriveEntry, DriveFile, and DriveDirectory without children.
message DriveEntryProto {
  optional PlatformFileInfoProto file_info = 1;
  optional string base_name = 2;
  optional string title = 3;
  optional string resource_id = 4;
  optional string edit_url = 5;
  optional string content_url = 6;
  optional string parent_resource_id = 7;
  // For a file, this is "resumable-edit-media" URL, used to update an
  // existing file. For a directory, this is "resumable-create-media" URL,
  // used to upload a new file to that directory. See
  // https://developers.google.com/google-apps/documents-list/
  optional string upload_url = 8;
  // This stores a DriveEntryKind defined in drive_entry_kinds.h.
  optional int32 kind = 12;
  // This field is used for processing the feeds from the server. Deleted
  // entries won't be stored in the metadata storage.
  optional bool deleted = 11;

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

// Represents DriveDirectory. This message type is defined to keep children
// separate from DriveEntryProto. This design allows us to get the metadata
// of a directory efficiently as DriveEntryProto, without carrying the
// metadata of children.
//
// TODO(satorux): With the new metadata storage system, we plan to store
// children as pairs of base name and resource ID. We should remove this
// message type once we get there.
message DriveDirectoryProto {
  optional DriveEntryProto drive_entry = 1;
  repeated DriveDirectoryProto child_directories = 7;
  repeated DriveEntryProto child_files = 9;
}

// Container for the root directory and the largest changestamp.
// TODO(satorux): Remove this: crbug.com/137862
message DriveRootDirectoryProto {
  optional DriveDirectoryProto drive_directory = 1;
  optional int64 largest_changestamp = 4;
  // Monotonically increasing version number, which is changed when
  // incompatible change is made in the proto file.
  // kProtoVersion in drive_files.h defines the current version.
  optional int32 version = 3;
}

// Message to store information of an existing cache file.
// Cache files are stored in 'tmp' or 'persistent' directory under the
// root cache directory. See DriveCache::GetCacheRootPath().
message DriveCacheEntry {
  // MD5 of the cache file. "local" if the file is locally modified.
  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;

  // True if the file is a mounted archive file.
  optional bool is_mounted = 5;

  // True if the file is in the persistent directory.
  optional bool is_persistent = 6;

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