| 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 "Response.h" | 6 #include "Response.h" |
| 7 | 7 |
| 8 #include "bindings/core/v8/Dictionary.h" | 8 #include "bindings/core/v8/Dictionary.h" |
| 9 #include "bindings/core/v8/ExceptionState.h" |
| 9 #include "core/fileapi/Blob.h" | 10 #include "core/fileapi/Blob.h" |
| 10 #include "modules/serviceworkers/FetchBodyStream.h" | 11 #include "modules/serviceworkers/FetchBodyStream.h" |
| 11 #include "modules/serviceworkers/ResponseInit.h" | 12 #include "modules/serviceworkers/ResponseInit.h" |
| 13 #include "public/platform/WebServiceWorkerResponse.h" |
| 12 | 14 |
| 13 namespace blink { | 15 namespace blink { |
| 14 | 16 |
| 17 namespace { |
| 18 |
| 19 PassRefPtrWillBeRawPtr<FetchResponseData> createFetchResponseDataFromWebResponse
(const WebServiceWorkerResponse& webResponse) |
| 20 { |
| 21 RefPtrWillBeRawPtr<FetchResponseData> response; |
| 22 if (200 <= webResponse.status() && webResponse.status() < 300) |
| 23 response = FetchResponseData::create(); |
| 24 else |
| 25 response = FetchResponseData::createNetworkErrorResponse(); |
| 26 |
| 27 response->setURL(webResponse.url()); |
| 28 response->setStatus(webResponse.status()); |
| 29 response->setStatusMessage(webResponse.statusText()); |
| 30 return response; |
| 31 } |
| 32 |
| 33 PassRefPtrWillBeRawPtr<Headers> createHeadersFromWebResponse(const WebServiceWor
kerResponse& webResponse) |
| 34 { |
| 35 RefPtrWillBeRawPtr<Headers> headers = Headers::create(); |
| 36 TrackExceptionState exceptionState; |
| 37 for (HashMap<String, String>::const_iterator i = webResponse.headers().begin
(), end = webResponse.headers().end(); i != end; ++i) { |
| 38 headers->append(i->key, i->value, exceptionState); |
| 39 if (exceptionState.hadException()) |
| 40 return PassRefPtrWillBeRawPtr<Headers>(); |
| 41 } |
| 42 return headers; |
| 43 } |
| 44 |
| 45 } |
| 46 |
| 15 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(Response); | 47 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(Response); |
| 16 | 48 |
| 17 PassRefPtrWillBeRawPtr<Response> Response::create(Blob* body, const Dictionary&
responseInit, ExceptionState& exceptionState) | 49 PassRefPtrWillBeRawPtr<Response> Response::create(Blob* body, const Dictionary&
responseInit, ExceptionState& exceptionState) |
| 18 { | 50 { |
| 19 return create(body, ResponseInit(responseInit), exceptionState); | 51 return create(body, ResponseInit(responseInit), exceptionState); |
| 20 } | 52 } |
| 21 | 53 |
| 22 PassRefPtrWillBeRawPtr<Response> Response::create(const String& body, const Dict
ionary& responseInit, ExceptionState& exceptionState) | 54 PassRefPtrWillBeRawPtr<Response> Response::create(const String& body, const Dict
ionary& responseInit, ExceptionState& exceptionState) |
| 23 { | 55 { |
| 24 OwnPtr<BlobData> blobData = BlobData::create(); | 56 OwnPtr<BlobData> blobData = BlobData::create(); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 | 119 |
| 88 // "9. Return |r|." | 120 // "9. Return |r|." |
| 89 return r.release(); | 121 return r.release(); |
| 90 } | 122 } |
| 91 | 123 |
| 92 PassRefPtrWillBeRawPtr<Response> Response::create(PassRefPtrWillBeRawPtr<FetchRe
sponseData> response) | 124 PassRefPtrWillBeRawPtr<Response> Response::create(PassRefPtrWillBeRawPtr<FetchRe
sponseData> response) |
| 93 { | 125 { |
| 94 return adoptRefWillBeNoop(new Response(response)); | 126 return adoptRefWillBeNoop(new Response(response)); |
| 95 } | 127 } |
| 96 | 128 |
| 129 PassRefPtrWillBeRawPtr<Response> Response::create(const WebServiceWorkerResponse
& webResponse) |
| 130 { |
| 131 return adoptRefWillBeNoop(new Response(webResponse)); |
| 132 } |
| 133 |
| 97 String Response::type() const | 134 String Response::type() const |
| 98 { | 135 { |
| 99 // "The type attribute's getter must return response's type." | 136 // "The type attribute's getter must return response's type." |
| 100 switch (m_response->type()) { | 137 switch (m_response->type()) { |
| 101 case FetchResponseData::BasicType: | 138 case FetchResponseData::BasicType: |
| 102 return "basic"; | 139 return "basic"; |
| 103 case FetchResponseData::CORSType: | 140 case FetchResponseData::CORSType: |
| 104 return "cors"; | 141 return "cors"; |
| 105 case FetchResponseData::DefaultType: | 142 case FetchResponseData::DefaultType: |
| 106 return "default"; | 143 return "default"; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 } | 203 } |
| 167 | 204 |
| 168 Response::Response(PassRefPtrWillBeRawPtr<FetchResponseData> response) | 205 Response::Response(PassRefPtrWillBeRawPtr<FetchResponseData> response) |
| 169 : m_response(response) | 206 : m_response(response) |
| 170 , m_headers(Headers::create(m_response->headerList())) | 207 , m_headers(Headers::create(m_response->headerList())) |
| 171 { | 208 { |
| 172 m_headers->setGuard(Headers::ResponseGuard); | 209 m_headers->setGuard(Headers::ResponseGuard); |
| 173 ScriptWrappable::init(this); | 210 ScriptWrappable::init(this); |
| 174 } | 211 } |
| 175 | 212 |
| 213 // FIXME: Handle response body data. |
| 214 Response::Response(const WebServiceWorkerResponse& webResponse) |
| 215 : m_response(createFetchResponseDataFromWebResponse(webResponse)) |
| 216 , m_headers(createHeadersFromWebResponse(webResponse)) |
| 217 { |
| 218 m_headers->setGuard(Headers::ResponseGuard); |
| 219 ScriptWrappable::init(this); |
| 220 } |
| 221 |
| 176 void Response::trace(Visitor* visitor) | 222 void Response::trace(Visitor* visitor) |
| 177 { | 223 { |
| 178 visitor->trace(m_response); | 224 visitor->trace(m_response); |
| 179 visitor->trace(m_headers); | 225 visitor->trace(m_headers); |
| 180 visitor->trace(m_fetchBodyStream); | 226 visitor->trace(m_fetchBodyStream); |
| 181 } | 227 } |
| 182 | 228 |
| 183 } // namespace blink | 229 } // namespace blink |
| OLD | NEW |