// 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;
  }
  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;
  optional int64 response_time = 6;
  repeated string cors_exposed_header_names = 7;
}

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