|  | // Copyright 2013 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  | // | 
|  | // Protocol buffer definitions for Drive backend of Syncable FileSystem. | 
|  |  | 
|  | syntax = "proto2"; | 
|  |  | 
|  | option optimize_for = LITE_RUNTIME; | 
|  |  | 
|  | package sync_file_system.drive_backend; | 
|  |  | 
|  | enum FileKind { | 
|  | FILE_KIND_UNSUPPORTED = 0; | 
|  | FILE_KIND_FILE = 1; | 
|  | FILE_KIND_FOLDER = 2; | 
|  | } | 
|  |  | 
|  | enum TrackerKind { | 
|  | TRACKER_KIND_REGULAR = 0; | 
|  | TRACKER_KIND_APP_ROOT = 1; | 
|  | TRACKER_KIND_DISABLED_APP_ROOT = 2; | 
|  | } | 
|  |  | 
|  | message ServiceMetadata { | 
|  | optional int64 largest_change_id = 1; | 
|  | optional int64 sync_root_tracker_id = 2; | 
|  |  | 
|  | // The sequence number of FileTrackers. Must be positive. | 
|  | optional int64 next_tracker_id = 3; | 
|  |  | 
|  | optional bool sync_root_revalidated = 4; | 
|  | } | 
|  |  | 
|  | // Holds details of file/folder metadata. | 
|  | message FileDetails { | 
|  | repeated string parent_folder_ids = 1; | 
|  |  | 
|  | optional string title = 2; | 
|  | optional FileKind file_kind = 3; | 
|  | optional string md5 = 4; | 
|  | optional string etag = 5; | 
|  |  | 
|  | // Creation time and modification time of the resource. | 
|  | // Serialized by Time::ToInternalValue. | 
|  | optional int64 creation_time = 6; | 
|  | optional int64 modification_time = 7; | 
|  |  | 
|  | optional bool missing = 8; | 
|  | optional int64 change_id = 9; | 
|  | } | 
|  |  | 
|  | // Represents a server-side file. | 
|  | message FileMetadata { | 
|  | // File ID of the remote file/folder which the FileMetadata represents. | 
|  | required string file_id = 1; | 
|  |  | 
|  | optional FileDetails details = 2; | 
|  | } | 
|  |  | 
|  | // Represents synced local file. | 
|  | message FileTracker { | 
|  | // A unique sequence number to identify the tracker. Must be positive. | 
|  | required int64 tracker_id = 1; | 
|  |  | 
|  | // Points the parent tracker in the tracker tree.  0 if there's no parent. | 
|  | required int64 parent_tracker_id = 2; | 
|  |  | 
|  | required string file_id = 3; | 
|  |  | 
|  | optional string app_id = 4; | 
|  | optional TrackerKind tracker_kind = 5; | 
|  |  | 
|  | // Available on an active tracker. | 
|  | // Represents detailed file information on last remote-to-local sync. | 
|  | optional FileDetails synced_details = 6; | 
|  |  | 
|  | // True if the file is changed since the last update for this file. | 
|  | optional bool dirty = 7; | 
|  |  | 
|  | // True if the FileTracker is active. | 
|  | // Remote file modification should only be applied to active trackers. | 
|  | // Active FileTracker must have a unique title under its parent. | 
|  | optional bool active = 8; | 
|  |  | 
|  | // Valid only for folders. | 
|  | // True if the folder contents have not yet been fetched. | 
|  | optional bool needs_folder_listing = 9; | 
|  | } |