summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/drive/drive.proto
blob: 9d51409005da87eb0f7834661a507db9e1a94c2a (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
// 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;
}

// File specific info, which is a part of ResourceEntry.
message FileSpecificInfo {
  // 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 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. Next ID to use: 8.
}

// 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 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".
  optional bool shared_with_me = 14;

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

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

// 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.
}