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