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 |