Index: Source/platform/exported/WebServiceWorkerResponse.cpp |
diff --git a/Source/platform/exported/WebServiceWorkerResponse.cpp b/Source/platform/exported/WebServiceWorkerResponse.cpp |
index f8232e15f93e48ac23ec3715fd623017ef3db0c4..20944d7877377e6f81448f811ce9270e0dc37528 100644 |
--- a/Source/platform/exported/WebServiceWorkerResponse.cpp |
+++ b/Source/platform/exported/WebServiceWorkerResponse.cpp |
@@ -6,6 +6,7 @@ |
#include "public/platform/WebServiceWorkerResponse.h" |
#include "platform/blob/BlobData.h" |
+#include "platform/network/HTTPHeaderMap.h" |
#include "public/platform/WebHTTPHeaderVisitor.h" |
#include "wtf/HashMap.h" |
@@ -16,8 +17,7 @@ public: |
WebURL url; |
unsigned short status; |
WebString statusText; |
- // FIXME: change headers to a data type that preserves order. |
- HashMap<String, String> headers; |
+ HTTPHeaderMap headers; |
RefPtr<BlobDataHandle> blobDataHandle; |
}; |
@@ -71,10 +71,19 @@ void WebServiceWorkerResponse::setHeader(const WebString& key, const WebString& |
m_private->headers.set(key, value); |
} |
+void WebServiceWorkerResponse::appendHeader(const WebString& key, const WebString& value) |
+{ |
+ HTTPHeaderMap::AddResult addResult = m_private->headers.add(key, value); |
+ if (!addResult.isNewEntry) |
+ addResult.storedValue->value = addResult.storedValue->value + ", " + String(value); |
+} |
+ |
WebVector<WebString> WebServiceWorkerResponse::getHeaderKeys() const |
{ |
Vector<String> keys; |
- copyKeysToVector(m_private->headers, keys); |
+ for (HTTPHeaderMap::const_iterator it = m_private->headers.begin(), end = m_private->headers.end(); it != end; ++it) |
+ keys.append(it->key); |
+ |
return keys; |
} |
@@ -85,7 +94,7 @@ WebString WebServiceWorkerResponse::getHeader(const WebString& key) const |
void WebServiceWorkerResponse::visitHTTPHeaderFields(WebHTTPHeaderVisitor* headerVisitor) const |
{ |
- for (HashMap<String, String>::const_iterator i = m_private->headers.begin(), end = m_private->headers.end(); i != end; ++i) |
+ for (HTTPHeaderMap::const_iterator i = m_private->headers.begin(), end = m_private->headers.end(); i != end; ++i) |
headerVisitor->visitHeader(i->key, i->value); |
} |
@@ -96,12 +105,7 @@ WebString WebServiceWorkerResponse::blobUUID() const |
return m_private->blobDataHandle->uuid(); |
} |
-void WebServiceWorkerResponse::setHeaders(const HashMap<String, String>& headers) |
-{ |
- m_private->headers = headers; |
-} |
- |
-const HashMap<String, String>& WebServiceWorkerResponse::headers() const |
+const HTTPHeaderMap& WebServiceWorkerResponse::headers() const |
{ |
return m_private->headers; |
} |