// 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.
//
// Sync protocol datatype extension for history delete directives.

// If you change or add any fields in this file, update proto_visitors.h and
// potentially proto_enum_conversions.{h, cc}.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package sync_pb;

// All timestamps below are from Sane Time (
// http://www.chromium.org/developers/design-documents/sane-time )
// and are in microseconds since the Unix epoch.

// Properties of history delete directive sync objects.
message HistoryDeleteDirectiveSpecifics {
  // Exactly one of the fields below must be filled in.  Otherwise, this
  // delete directive must be ignored.
  optional GlobalIdDirective global_id_directive = 1;
  optional TimeRangeDirective time_range_directive = 2;
  optional UrlDirective url_directive = 3;
}

message GlobalIdDirective {
  // The global IDs of the navigations to delete.
  repeated int64 global_id = 1;

  // Time range for searching for navigations to delete. Client should delete
  // all navigations to a URL between [start_time_usec, end_time_usec]
  // if one of them matches a |global_id|.
  optional int64 start_time_usec = 2;
  optional int64 end_time_usec = 3;
}

message TimeRangeDirective {
  // Both fields below must be filled in.  Otherwise, this delete directive
  // must be ignored.

  // The time on or after which entries must be deleted.
  optional int64 start_time_usec = 1;
  // The time on or before which entries must be deleted.
  optional int64 end_time_usec = 2;
}

message UrlDirective {
  // Both fields below must be filled in.  Otherwise, this delete directive
  // must be ignored.

  // The URL that should be removed from history.
  optional string url = 1;

  // The time on or before which entries must be deleted.
  // In microseconds since the Unix epoch.
  optional int64 end_time_usec = 2;
}
