| 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;
|
| }
|
|
|