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 "modules/fetch/Response.h" | 5 #include "modules/fetch/Response.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include "bindings/core/v8/Dictionary.h" | 8 #include "bindings/core/v8/Dictionary.h" |
9 #include "bindings/core/v8/ExceptionState.h" | 9 #include "bindings/core/v8/ExceptionState.h" |
10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 response->setResponseTime(webResponse.responseTime()); | 56 response->setResponseTime(webResponse.responseTime()); |
57 response->setCacheStorageCacheName(webResponse.cacheStorageCacheName()); | 57 response->setCacheStorageCacheName(webResponse.cacheStorageCacheName()); |
58 | 58 |
59 for (HTTPHeaderMap::const_iterator i = webResponse.headers().begin(), | 59 for (HTTPHeaderMap::const_iterator i = webResponse.headers().begin(), |
60 end = webResponse.headers().end(); | 60 end = webResponse.headers().end(); |
61 i != end; ++i) { | 61 i != end; ++i) { |
62 response->headerList()->append(i->key, i->value); | 62 response->headerList()->append(i->key, i->value); |
63 } | 63 } |
64 | 64 |
65 response->replaceBodyStreamBuffer(new BodyStreamBuffer( | 65 response->replaceBodyStreamBuffer(new BodyStreamBuffer( |
66 scriptState, new BlobBytesConsumer(scriptState->getExecutionContext(), | 66 scriptState, |
67 webResponse.blobDataHandle()))); | 67 new BlobBytesConsumer(scriptState->getExecutionContext(), |
| 68 webResponse.blobDataHandle()))); |
68 | 69 |
69 // Filter the response according to |webResponse|'s ResponseType. | 70 // Filter the response according to |webResponse|'s ResponseType. |
70 switch (webResponse.responseType()) { | 71 switch (webResponse.responseType()) { |
71 case WebServiceWorkerResponseTypeBasic: | 72 case WebServiceWorkerResponseTypeBasic: |
72 response = response->createBasicFilteredResponse(); | 73 response = response->createBasicFilteredResponse(); |
73 break; | 74 break; |
74 case WebServiceWorkerResponseTypeCORS: { | 75 case WebServiceWorkerResponseTypeCORS: { |
75 HTTPHeaderSet headerNames; | 76 HTTPHeaderSet headerNames; |
76 for (const auto& header : webResponse.corsExposedHeaderNames()) | 77 for (const auto& header : webResponse.corsExposedHeaderNames()) |
77 headerNames.insert(String(header)); | 78 headerNames.insert(String(header)); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 if (bodyValue.isUndefined() || bodyValue.isNull()) { | 140 if (bodyValue.isUndefined() || bodyValue.isNull()) { |
140 // Note: The IDL processor cannot handle this situation. See | 141 // Note: The IDL processor cannot handle this situation. See |
141 // https://crbug.com/335871. | 142 // https://crbug.com/335871. |
142 } else if (V8Blob::hasInstance(body, isolate)) { | 143 } else if (V8Blob::hasInstance(body, isolate)) { |
143 Blob* blob = V8Blob::toImpl(body.As<v8::Object>()); | 144 Blob* blob = V8Blob::toImpl(body.As<v8::Object>()); |
144 bodyBuffer = new BodyStreamBuffer( | 145 bodyBuffer = new BodyStreamBuffer( |
145 scriptState, | 146 scriptState, |
146 new BlobBytesConsumer(executionContext, blob->blobDataHandle())); | 147 new BlobBytesConsumer(executionContext, blob->blobDataHandle())); |
147 contentType = blob->type(); | 148 contentType = blob->type(); |
148 } else if (body->IsArrayBuffer()) { | 149 } else if (body->IsArrayBuffer()) { |
149 bodyBuffer = new BodyStreamBuffer( | 150 bodyBuffer = |
150 scriptState, new FormDataBytesConsumer( | 151 new BodyStreamBuffer(scriptState, |
151 V8ArrayBuffer::toImpl(body.As<v8::Object>()))); | 152 new FormDataBytesConsumer( |
| 153 V8ArrayBuffer::toImpl(body.As<v8::Object>()))); |
152 } else if (body->IsArrayBufferView()) { | 154 } else if (body->IsArrayBufferView()) { |
153 bodyBuffer = new BodyStreamBuffer( | 155 bodyBuffer = new BodyStreamBuffer( |
154 scriptState, new FormDataBytesConsumer( | 156 scriptState, |
155 V8ArrayBufferView::toImpl(body.As<v8::Object>()))); | 157 new FormDataBytesConsumer( |
| 158 V8ArrayBufferView::toImpl(body.As<v8::Object>()))); |
156 } else if (V8FormData::hasInstance(body, isolate)) { | 159 } else if (V8FormData::hasInstance(body, isolate)) { |
157 RefPtr<EncodedFormData> formData = | 160 RefPtr<EncodedFormData> formData = |
158 V8FormData::toImpl(body.As<v8::Object>())->encodeMultiPartFormData(); | 161 V8FormData::toImpl(body.As<v8::Object>())->encodeMultiPartFormData(); |
159 // Here we handle formData->boundary() as a C-style string. See | 162 // Here we handle formData->boundary() as a C-style string. See |
160 // FormDataEncoder::generateUniqueBoundaryString. | 163 // FormDataEncoder::generateUniqueBoundaryString. |
161 contentType = AtomicString("multipart/form-data; boundary=") + | 164 contentType = AtomicString("multipart/form-data; boundary=") + |
162 formData->boundary().data(); | 165 formData->boundary().data(); |
163 bodyBuffer = new BodyStreamBuffer( | 166 bodyBuffer = new BodyStreamBuffer( |
164 scriptState, | 167 scriptState, |
165 new FormDataBytesConsumer(executionContext, formData.release())); | 168 new FormDataBytesConsumer(executionContext, formData.release())); |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 V8HiddenValue::internalBodyBuffer(scriptState->isolate()), bodyBuffer); | 460 V8HiddenValue::internalBodyBuffer(scriptState->isolate()), bodyBuffer); |
458 } | 461 } |
459 | 462 |
460 DEFINE_TRACE(Response) { | 463 DEFINE_TRACE(Response) { |
461 Body::trace(visitor); | 464 Body::trace(visitor); |
462 visitor->trace(m_response); | 465 visitor->trace(m_response); |
463 visitor->trace(m_headers); | 466 visitor->trace(m_headers); |
464 } | 467 } |
465 | 468 |
466 } // namespace blink | 469 } // namespace blink |
OLD | NEW |