// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module network.mojom;
// Structured header types.
// https://www.rfc-editor.org/rfc/rfc8941
import "mojo/public/mojom/base/byte_string.mojom";
// Corresponds to net::structured_headers::Item.
union StructuredHeadersItem {
// Null type placeholder. Nulls need a value in this union to be sent over
// Mojo, but this value itself is arbitrary, and is ignored.
uint8 null_value;
int64 integer_value;
double decimal_value;
string string_value;
string token_value;
mojo_base.mojom.ByteString byte_sequence_value;
bool boolean_value;
};
// Corresponds to element type of net::structured_headers::Parameters.
struct StructuredHeadersParameter {
string key;
StructuredHeadersItem item;
};
// Corresponds to net::structured_headers::ParameterizedItem.
struct StructuredHeadersParameterizedItem {
StructuredHeadersItem item;
// Parameter order is significant, so a map is not sufficient.
array<StructuredHeadersParameter> parameters;
};
// Corresponds to net::structured_headers::ParameterizedMember.
struct StructuredHeadersParameterizedMember {
array<StructuredHeadersParameterizedItem> member;
bool member_is_inner_list;
array<StructuredHeadersParameter> parameters;
};
// Corresponds to net::structured_headers::DictionaryMember.
struct StructuredHeadersDictionaryMember {
string key;
StructuredHeadersParameterizedMember value;
};
// Corresponds to net::structured_headers::Dictionary.
struct StructuredHeadersDictionary {
// Member order is significant, so a map is not sufficient.
array<StructuredHeadersDictionaryMember> members;
};