Chromium Code Reviews| Index: Source/modules/serviceworkers/HeaderMap.cpp |
| diff --git a/Source/modules/serviceworkers/HeaderMap.cpp b/Source/modules/serviceworkers/HeaderMap.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5d33ac92e09bd29b5056d3c4f5c8552223e74bb0 |
| --- /dev/null |
| +++ b/Source/modules/serviceworkers/HeaderMap.cpp |
| @@ -0,0 +1,78 @@ |
| +// 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. |
| + |
| +#include "config.h" |
| +#include "modules/serviceworkers/HeaderMap.h" |
| + |
| +#include "modules/serviceworkers/HeaderMapForEachCallback.h" |
| +#include "wtf/PassRefPtr.h" |
| +#include "wtf/RefPtr.h" |
| +#include "wtf/text/WTFString.h" |
| + |
| +namespace WebCore { |
| + |
| +PassRefPtr<HeaderMap> HeaderMap::create() |
| +{ |
| + return adoptRef(new HeaderMap); |
| +} |
| + |
| +unsigned long HeaderMap::size() const |
| +{ |
| + return m_headers.size(); |
| +} |
| + |
| +void HeaderMap::clear() |
| +{ |
| + m_headers.clear(); |
| +} |
| + |
| +bool HeaderMap::remove(const String& key) |
| +{ |
| + if (!has(key)) |
| + return false; |
| + m_headers.remove(key); |
| + return true; |
| +} |
| + |
| +String HeaderMap::get(const String& key) |
| +{ |
| + return m_headers.get(key); |
| +} |
| + |
| +bool HeaderMap::has(const String& key) |
| +{ |
| + return m_headers.find(key) != m_headers.end(); |
| +} |
| + |
| +void HeaderMap::set(const String& key, const String& value) |
| +{ |
| + m_headers.set(key, value); |
| +} |
| + |
| +void HeaderMap::forEach(PassOwnPtr<HeaderMapForEachCallback> callback, ScriptValue& thisArg) |
| +{ |
| + forEachInternal(callback, &thisArg); |
| +} |
| + |
| +void HeaderMap::forEach(PassOwnPtr<HeaderMapForEachCallback> callback) |
| +{ |
| + forEachInternal(callback, 0); |
| +} |
| + |
| +HeaderMap::HeaderMap() |
| +{ |
| + ScriptWrappable::init(this); |
| +} |
| + |
| +void HeaderMap::forEachInternal(PassOwnPtr<HeaderMapForEachCallback> callback, ScriptValue* thisArg) |
| +{ |
| + for (HashMap<String, String>::const_iterator it = m_headers.begin(); it != m_headers.end(); ++it) { |
|
jsbell
2014/05/23 20:59:49
Do we need to terminate the loop if the callback t
kinuko
2014/05/26 05:45:13
Um, maybe... done.
|
| + if (thisArg) |
| + callback->handleItem(*thisArg, it->value, it->key, this); |
| + else |
| + callback->handleItem(it->value, it->key, this); |
| + } |
| +} |
| + |
| +} // namespace WebCore |