// Copyright 2016 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.

syntax = "proto2";

import "precache.proto";

package precache;

// Chrome requires this.
option optimize_for = LITE_RUNTIME;

message TopHost {
  // The host name of a top host.
  optional string hostname = 1;
};

message PrecacheManifestURL {
  // The URL that provides a manifest.
  optional string url = 1;
};

// Information about the precache work that needs to be completed.
message PrecacheUnfinishedWork {
  // Top hosts for which to fetch manifests.
  repeated TopHost top_host = 1;

  optional PrecacheConfigurationSettings config_settings = 2;

  // Manifest URLs remaining to be fetched.
  repeated PrecacheManifestURL manifest = 3;

  // Resource URLs remaining to be fetched.
  repeated PrecacheResource resource = 4;

  // Tally of the total number of bytes contained in URL fetches, including
  // config, manifests, and resources. This the number of bytes as they would be
  // compressed over the network.
  optional uint64 total_bytes = 5;

  // Tally of the total number of bytes received over the network from URL
  // fetches (the same ones as in total_response_bytes_). This includes response
  // headers and intermediate responses such as 30xs.
  optional uint64 network_bytes = 6;

  // The total number of manifest URLs that the precache session started with.
  optional uint64 num_manifest_urls = 7;

  // The internal value of a base::Time object representing the precache
  // session start time. The start time is the time just before when top hosts
  // are requested.
  optional int64 start_time = 8;
};