| 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 | 123 |
| 92 // "9. Return |r|." | 124 // "9. Return |r|." |
| 93 return r.release(); | 125 return r.release(); |
| 94 } | 126 } |
| 95 | 127 |
| 96 PassRefPtrWillBeRawPtr<Response> Response::create(PassRefPtrWillBeRawPtr<FetchRe
sponseData> response) | 128 PassRefPtrWillBeRawPtr<Response> Response::create(PassRefPtrWillBeRawPtr<FetchRe
sponseData> response) |
| 97 { | 129 { |
| 98 return adoptRefWillBeNoop(new Response(response)); | 130 return adoptRefWillBeNoop(new Response(response)); |
| 99 } | 131 } |
| 100 | 132 |
| 133 PassRefPtrWillBeRawPtr<Response> Response::create(const WebServiceWorkerResponse
& webResponse) |
| 134 { |
| 135 return adoptRefWillBeNoop(new Response(webResponse)); |
| 136 } |
| 137 |
| 101 String Response::type() const | 138 String Response::type() const |
| 102 { | 139 { |
| 103 // "The type attribute's getter must return response's type." | 140 // "The type attribute's getter must return response's type." |
| 104 switch (m_response->type()) { | 141 switch (m_response->type()) { |
| 105 case FetchResponseData::BasicType: | 142 case FetchResponseData::BasicType: |
| 106 return "basic"; | 143 return "basic"; |
| 107 case FetchResponseData::CORSType: | 144 case FetchResponseData::CORSType: |
| 108 return "cors"; | 145 return "cors"; |
| 109 case FetchResponseData::DefaultType: | 146 case FetchResponseData::DefaultType: |
| 110 return "default"; | 147 return "default"; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 } | 207 } |
| 171 | 208 |
| 172 Response::Response(PassRefPtrWillBeRawPtr<FetchResponseData> response) | 209 Response::Response(PassRefPtrWillBeRawPtr<FetchResponseData> response) |
| 173 : m_response(response) | 210 : m_response(response) |
| 174 , m_headers(Headers::create(m_response->headerList())) | 211 , m_headers(Headers::create(m_response->headerList())) |
| 175 { | 212 { |
| 176 m_headers->setGuard(Headers::ResponseGuard); | 213 m_headers->setGuard(Headers::ResponseGuard); |
| 177 ScriptWrappable::init(this); | 214 ScriptWrappable::init(this); |
| 178 } | 215 } |
| 179 | 216 |
| 217 // FIXME: Handle response body data. |
| 218 Response::Response(const WebServiceWorkerResponse& webResponse) |
| 219 : m_response(createFetchResponseDataFromWebResponse(webResponse)) |
| 220 , m_headers(createHeadersFromWebResponse(webResponse)) |
| 221 { |
| 222 m_headers->setGuard(Headers::ResponseGuard); |
| 223 ScriptWrappable::init(this); |
| 224 } |
| 225 |
| 180 void Response::trace(Visitor* visitor) | 226 void Response::trace(Visitor* visitor) |
| 181 { | 227 { |
| 182 visitor->trace(m_response); | 228 visitor->trace(m_response); |
| 183 visitor->trace(m_headers); | 229 visitor->trace(m_headers); |
| 184 visitor->trace(m_fetchBodyStream); | 230 visitor->trace(m_fetchBodyStream); |
| 185 } | 231 } |
| 186 | 232 |
| 187 } // namespace blink | 233 } // namespace blink |
| OLD | NEW |