// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

package fuzz_proto;

import "testing/libfuzzer/proto/json.proto";

message FuzzerInput {
  // Using int64 to match internal representation of base::Time and
  // base::TimeTicks.
  required int64 parse_time = 1;
  required int64 serialize_time = 2;
  required int64 now_ticks = 5;
  required BackoffEntryPolicy policy = 3;
  required json_proto.ArrayValue serialized_entry = 4;
}

// Input for the fuzzer to try serializing a BackoffEntry.
// Keep aligned with |net::BackoffEntry::Policy|.
message BackoffEntryPolicy {
  required int64 num_errors_to_ignore = 1;
  required int64 initial_delay_ms = 2;
  required double multiply_factor = 3;
  required double jitter_factor = 4;
  required int64 maximum_backoff_ms = 5;
  required int64 entry_lifetime_ms = 6;
  required bool always_use_initial_delay = 7;
}