blob: 54e296400ec4a247baebcfe025f3c0ee92052500 [file] [log] [blame]
// 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 {
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
// 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 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, 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 "starred".
optional bool starred = 20;
// 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;
// True if resources already have been updated after 'starred' property added.
// Otherwise, we have to load them from server.
optional bool starred_property_initialized = 3;
// 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