1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file. 4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#ifndef Headers_h 6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define Headers_h 7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptWrappable.h" 9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "modules/serviceworkers/FetchHeaderList.h" 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/Forward.h" 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/PassOwnPtr.h" 12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 14197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 15197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass Dictionary; 16197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass ExceptionState; 17197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass HeadersForEachCallback; 18197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass ScriptValue; 19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 20197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// http://fetch.spec.whatwg.org/#headers-class 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass Headers FINAL : public GarbageCollected<Headers>, public ScriptWrappable { 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DEFINE_WRAPPERTYPEINFO(); 23197021e6b966cfb06891637935ef33fff06433d1Ben Murdochpublic: 24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum Guard { ImmutableGuard, RequestGuard, RequestNoCORSGuard, ResponseGuard, NoneGuard }; 25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static Headers* create(); 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static Headers* create(ExceptionState&); 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static Headers* create(const Headers*, ExceptionState&); 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static Headers* create(const Dictionary&, ExceptionState&); 30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // Shares the FetchHeaderList. Called when creating a Request or Response. 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static Headers* create(FetchHeaderList*); 33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Headers* createCopy() const; 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // Headers.idl implementation. 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void append(const String& name, const String& value, ExceptionState&); 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void remove(const String& key, ExceptionState&); 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch String get(const String& key, ExceptionState&); 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Vector<String> getAll(const String& key, ExceptionState&); 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool has(const String& key, ExceptionState&); 42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void set(const String& key, const String& value, ExceptionState&); 43197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch unsigned long size() const; 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void forEach(HeadersForEachCallback*, const ScriptValue&); 457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void forEach(HeadersForEachCallback*); 46197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setGuard(Guard guard) { m_guard = guard; } 48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Guard guard() const { return m_guard; } 49197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 50197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // These methods should only be called when size() would return 0. 51197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void fillWith(const Headers*, ExceptionState&); 52197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void fillWith(const Dictionary&, ExceptionState&); 53197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 54197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void trace(Visitor*); 55197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 56197021e6b966cfb06891637935ef33fff06433d1Ben Murdochprivate: 57197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Headers(); 58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // Shares the FetchHeaderList. Called when creating a Request or Response. 59197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch explicit Headers(FetchHeaderList*); 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void forEachInternal(HeadersForEachCallback*, const ScriptValue*); 61197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Member<FetchHeaderList> m_headerList; 63197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Guard m_guard; 64197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}; 65197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 66c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 67197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 68197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif // Headers_h 69