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