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

// http://fetch.spec.whatwg.org/#headers-class
typedef Dictionary OpenEndedDictionary;
[
    Constructor,
    Constructor(Headers input),
    Constructor(OpenEndedDictionary input),
    Constructor(sequence<sequence<ByteString>> input),
    Exposed=(Window,Worker),
    RaisesException=Constructor,
    GarbageCollected,
    TypeChecking=Interface,
] interface Headers {
    [RaisesException] void append(ByteString name, ByteString value);
    [ImplementedAs=remove, RaisesException] void delete(ByteString key);
    [RaisesException] ByteString? get(ByteString key);
    [RaisesException] sequence<ByteString> getAll(ByteString name);
    [RaisesException] boolean has(ByteString key);
    [RaisesException] void set(ByteString key, ByteString value);
    iterable<ByteString, ByteString>;
};
