// Copyright 2014 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";

option optimize_for = LITE_RUNTIME;

package content.proto;

message CacheStorageIndex {
  message Cache {
    required string name = 1;
    optional string cache_dir = 2;
    optional int64 size = 3;
    optional string padding_key = 4;
    optional int64 padding = 5;
    optional int32 padding_version = 6;
  }
  repeated Cache cache = 1;
  optional string origin = 2;
}

message CacheHeaderMap {
  required string name = 1;
  required string value = 2;
}

message CacheRequest {
  required string method = 1;
  repeated CacheHeaderMap headers = 2;
}

message CacheResponse {
  enum ResponseType {
    BASIC_TYPE = 0;
    CORS_TYPE = 1;
    DEFAULT_TYPE = 2;
    ERROR_TYPE = 3;
    OPAQUE_TYPE = 4;
    OPAQUE_REDIRECT_TYPE = 5;
  }

  required int32 status_code = 1;
  required string status_text = 2;
  required ResponseType response_type = 3;
  repeated CacheHeaderMap headers = 4;
  optional string url = 5 [deprecated = true];
  optional int64 response_time = 6;
  repeated string cors_exposed_header_names = 7;
  repeated string url_list = 8;
}

message CacheMetadata {
  required CacheRequest request = 1;
  required CacheResponse response = 2;
  optional int64 entry_time = 3;
}
