// 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
// FIXME: Fetch spec has renamed this to just 'Headers'
// FIXME: This should be defined as MapClass(DOMString, DOMString)
// once binding code supports it (http://crbug.com/347435).
[
    Constructor,
    RuntimeEnabled=ServiceWorker,
    Exposed=ServiceWorker
] interface HeaderMap {
    readonly attribute unsigned long size;

    // FIXME: Define keys, values, entries.
    // FIXME: Some of the method definitions (like set) don't strictly
    // follow the MapClass's ones (http://heycam.github.io/webidl/#MapClass),
    // as this is supposed to be a transient implementation until we have real
    // MapClass.

    void clear();
    [ImplementedAs=remove] boolean delete(DOMString key);
    DOMString get(DOMString key);
    boolean has(DOMString key);
    void set(DOMString key, DOMString value);
    void forEach(HeaderMapForEachCallback callback, optional any thisArg);
};
