// 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),
    RuntimeEnabled=ServiceWorker,
    Exposed=ServiceWorker,
    RaisesException=Constructor,
    GarbageCollected,
] 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);

    // The following are not defined in the spec.
    // FIXME: We should implement Headers.prototype[Symbol.iterator] instead of
    // forEach and size.
    // https://www.w3.org/Bugs/Public/show_bug.cgi?id=26102
    readonly attribute unsigned long size;
    void forEach(HeadersForEachCallback callback, optional any thisArg);
};
