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 |