| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "public/platform/WebServiceWorkerResponse.h" | 6 #include "public/platform/WebServiceWorkerResponse.h" |
| 7 | 7 |
| 8 #include "platform/blob/BlobData.h" | 8 #include "platform/blob/BlobData.h" |
| 9 #include "platform/network/HTTPHeaderMap.h" |
| 9 #include "public/platform/WebHTTPHeaderVisitor.h" | 10 #include "public/platform/WebHTTPHeaderVisitor.h" |
| 10 #include "wtf/HashMap.h" | 11 #include "wtf/HashMap.h" |
| 11 | 12 |
| 12 namespace blink { | 13 namespace blink { |
| 13 | 14 |
| 14 class WebServiceWorkerResponsePrivate : public RefCounted<WebServiceWorkerRespon
sePrivate> { | 15 class WebServiceWorkerResponsePrivate : public RefCounted<WebServiceWorkerRespon
sePrivate> { |
| 15 public: | 16 public: |
| 16 WebURL url; | 17 WebURL url; |
| 17 unsigned short status; | 18 unsigned short status; |
| 18 WebString statusText; | 19 WebString statusText; |
| 19 // FIXME: change headers to a data type that preserves order. | 20 HTTPHeaderMap headers; |
| 20 HashMap<String, String> headers; | |
| 21 RefPtr<BlobDataHandle> blobDataHandle; | 21 RefPtr<BlobDataHandle> blobDataHandle; |
| 22 }; | 22 }; |
| 23 | 23 |
| 24 WebServiceWorkerResponse::WebServiceWorkerResponse() | 24 WebServiceWorkerResponse::WebServiceWorkerResponse() |
| 25 : m_private(adoptRef(new WebServiceWorkerResponsePrivate)) | 25 : m_private(adoptRef(new WebServiceWorkerResponsePrivate)) |
| 26 { | 26 { |
| 27 } | 27 } |
| 28 | 28 |
| 29 void WebServiceWorkerResponse::reset() | 29 void WebServiceWorkerResponse::reset() |
| 30 { | 30 { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 WebString WebServiceWorkerResponse::statusText() const | 64 WebString WebServiceWorkerResponse::statusText() const |
| 65 { | 65 { |
| 66 return m_private->statusText; | 66 return m_private->statusText; |
| 67 } | 67 } |
| 68 | 68 |
| 69 void WebServiceWorkerResponse::setHeader(const WebString& key, const WebString&
value) | 69 void WebServiceWorkerResponse::setHeader(const WebString& key, const WebString&
value) |
| 70 { | 70 { |
| 71 m_private->headers.set(key, value); | 71 m_private->headers.set(key, value); |
| 72 } | 72 } |
| 73 | 73 |
| 74 void WebServiceWorkerResponse::appendHeader(const WebString& key, const WebStrin
g& value) |
| 75 { |
| 76 HTTPHeaderMap::AddResult addResult = m_private->headers.add(key, value); |
| 77 if (!addResult.isNewEntry) |
| 78 addResult.storedValue->value = addResult.storedValue->value + ", " + Str
ing(value); |
| 79 } |
| 80 |
| 74 WebVector<WebString> WebServiceWorkerResponse::getHeaderKeys() const | 81 WebVector<WebString> WebServiceWorkerResponse::getHeaderKeys() const |
| 75 { | 82 { |
| 76 Vector<String> keys; | 83 Vector<String> keys; |
| 77 copyKeysToVector(m_private->headers, keys); | 84 for (HTTPHeaderMap::const_iterator it = m_private->headers.begin(), end = m_
private->headers.end(); it != end; ++it) |
| 85 keys.append(it->key); |
| 86 |
| 78 return keys; | 87 return keys; |
| 79 } | 88 } |
| 80 | 89 |
| 81 WebString WebServiceWorkerResponse::getHeader(const WebString& key) const | 90 WebString WebServiceWorkerResponse::getHeader(const WebString& key) const |
| 82 { | 91 { |
| 83 return m_private->headers.get(key); | 92 return m_private->headers.get(key); |
| 84 } | 93 } |
| 85 | 94 |
| 86 void WebServiceWorkerResponse::visitHTTPHeaderFields(WebHTTPHeaderVisitor* heade
rVisitor) const | 95 void WebServiceWorkerResponse::visitHTTPHeaderFields(WebHTTPHeaderVisitor* heade
rVisitor) const |
| 87 { | 96 { |
| 88 for (HashMap<String, String>::const_iterator i = m_private->headers.begin(),
end = m_private->headers.end(); i != end; ++i) | 97 for (HTTPHeaderMap::const_iterator i = m_private->headers.begin(), end = m_p
rivate->headers.end(); i != end; ++i) |
| 89 headerVisitor->visitHeader(i->key, i->value); | 98 headerVisitor->visitHeader(i->key, i->value); |
| 90 } | 99 } |
| 91 | 100 |
| 92 WebString WebServiceWorkerResponse::blobUUID() const | 101 WebString WebServiceWorkerResponse::blobUUID() const |
| 93 { | 102 { |
| 94 if (!m_private->blobDataHandle) | 103 if (!m_private->blobDataHandle) |
| 95 return WebString(); | 104 return WebString(); |
| 96 return m_private->blobDataHandle->uuid(); | 105 return m_private->blobDataHandle->uuid(); |
| 97 } | 106 } |
| 98 | 107 |
| 99 void WebServiceWorkerResponse::setHeaders(const HashMap<String, String>& headers
) | 108 const HTTPHeaderMap& WebServiceWorkerResponse::headers() const |
| 100 { | |
| 101 m_private->headers = headers; | |
| 102 } | |
| 103 | |
| 104 const HashMap<String, String>& WebServiceWorkerResponse::headers() const | |
| 105 { | 109 { |
| 106 return m_private->headers; | 110 return m_private->headers; |
| 107 } | 111 } |
| 108 | 112 |
| 109 void WebServiceWorkerResponse::setBlobDataHandle(PassRefPtr<BlobDataHandle> blob
DataHandle) | 113 void WebServiceWorkerResponse::setBlobDataHandle(PassRefPtr<BlobDataHandle> blob
DataHandle) |
| 110 { | 114 { |
| 111 m_private->blobDataHandle = blobDataHandle; | 115 m_private->blobDataHandle = blobDataHandle; |
| 112 } | 116 } |
| 113 | 117 |
| 114 PassRefPtr<BlobDataHandle> WebServiceWorkerResponse::blobDataHandle() const | 118 PassRefPtr<BlobDataHandle> WebServiceWorkerResponse::blobDataHandle() const |
| 115 { | 119 { |
| 116 return m_private->blobDataHandle; | 120 return m_private->blobDataHandle; |
| 117 } | 121 } |
| 118 | 122 |
| 119 } // namespace blink | 123 } // namespace blink |
| OLD | NEW |