// 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
[
    Constructor,
    Constructor(Headers input),
    Constructor(Dictionary input),
    RuntimeEnabled=ServiceWorker,
    Exposed=ServiceWorker,
    RaisesException=Constructor,
    WillBeGarbageCollected,
] 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);
};
