123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- // 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;
- optional bool is_team_drive_root = 7;
- }
- // 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 {
- PRIVATE = 0;
- PUBLIC = 1;
- }
- optional Visibility visibility = 3;
- }
- // Capabilities (current permissions) info for an entry.
- message CapabilitiesInfo {
- // Whether the current user can copy this file. For a Team Drive root, whether
- // the current user can copy files in this Team Drive.
- optional bool can_copy = 1;
- // Whether the current user can delete this file. For a Team Drive root,
- // whether the current user can delete the Team Drive.
- optional bool can_delete = 2;
- // Whether the current user can rename this file. For a Team Drive root,
- // whether the current user can rename the Team Drive.
- optional bool can_rename = 3;
- // Whether the current user can add children to this folder. For a Team Drive
- // root, whether the current user can add children to folders in this Team
- // Drive. This is always false when the item is not a folder or a Team Drive.
- optional bool can_add_children = 4;
- // Whether the current user can modify the sharing settings for this file. For
- // a Team Drive root, whether the current user can share files or folders in
- // this Team Drive.
- optional bool can_share = 5;
- }
- // File specific info, which is a part of ResourceEntry.
- message FileSpecificInfo {
- // The argument with ID 1 (thumbnail_url) had been used, but got deleted.
- // The argument with ID 2 (alternate_url) had been used, but got deleted.
- // 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.
- // 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;
- }
- // Represents metadata for a single team drive, store in the root entry.
- message TeamDriveRootSpecificInfo {
- // The individual start page token for this team drive.
- optional string start_page_token = 1;
- }
- // 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.
- // TODO(slangley): Remove changestamp once migration code can be removed.
- optional int64 changestamp = 1 [deprecated = true];
- // The start page token of this directory. This value may not match the
- // start_page_token of ResourceMetadata if the directory was "fast-fetched".
- optional string start_page_token = 2;
- // The last time we read this directory from the server when fast fetching.
- // This is used on initial load when we do not have the full list of files
- // fetched from the server to prevent repeated reading of the directory file
- // list.
- optional int64 last_read_time_ms = 3;
- }
- // Represents metadata of a resource (file or directory) on Drive.
- // Next Entry: 24
- 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 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;
- // The capabilities (current permissions) for this file/folder/team drive.
- optional CapabilitiesInfo capabilities_info = 24;
- // File specific information, such as MD5.
- optional FileSpecificInfo file_specific_info = 9;
- // Directory specific information, such as changestamp.
- optional DirectorySpecificInfo directory_specific_info = 13;
- // Team Drive root specific information, if this entry is a team drive root.
- optional TeamDriveRootSpecificInfo team_drive_root_specific_info = 23;
- // 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. This is a timestamp used for conflict
- // resolution and can not be modified arbitrarily by users, in contrast to
- // PlatformFileInfoProto.last_modified and last_modified_by_me.
- 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;
- // The time of the last modification by the user. When the file is modified
- // by other users, this timestamp is not updated.
- // This timestamp is similar to last_modified in PlatformFileInfoProto rather
- // than modification_date; it will be set to the same value as last_modified
- // if the operation is done by the user. This field is here, not in
- // PlatformFileInfoProto, just because this field does not have a
- // corresponding field in base::File::Info.
- optional int64 last_modified_by_me = 21;
- // This URL is used for opening hosted documents with Google Drive's web
- // interface.
- optional string alternate_url = 22;
- }
- // 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
- // resource_metadata_storage.h defines the current version.
- optional int32 version = 1;
- // TODO(slangley): Remove changestamp once migration code can be removed.
- optional int64 largest_changestamp = 2 [deprecated = true];
- // The argument with ID 3 (starred_property_initialized) had been used, but
- // got deleted.
- reserved 3;
- // The start_page_token for the users default corpus changelist.
- optional string start_page_token = 4;
- }
- // 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.
- }
|