Chromium Code Reviews| 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 "modules/fetch/FetchManager.h" | 6 #include "modules/fetch/FetchManager.h" |
| 7 | 7 |
| 8 #include "bindings/core/v8/ExceptionState.h" | 8 #include "bindings/core/v8/ExceptionState.h" |
| 9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| 10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 114 break; | 114 break; |
| 115 case WebURLRequest::FetchRequestModeNoCORS: | 115 case WebURLRequest::FetchRequestModeNoCORS: |
| 116 m_request->setResponseTainting(FetchRequestData::OpaqueTainting); | 116 m_request->setResponseTainting(FetchRequestData::OpaqueTainting); |
| 117 break; | 117 break; |
| 118 case WebURLRequest::FetchRequestModeCORS: | 118 case WebURLRequest::FetchRequestModeCORS: |
| 119 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: | 119 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: |
| 120 m_request->setResponseTainting(FetchRequestData::CORSTainting); | 120 m_request->setResponseTainting(FetchRequestData::CORSTainting); |
| 121 break; | 121 break; |
| 122 } | 122 } |
| 123 } | 123 } |
| 124 FetchResponseData* responseData = FetchResponseData::createWithBuffer(BodySt reamBuffer::create(createFetchDataConsumerHandleFromWebHandle(handle))); | 124 FetchResponseData* responseData = FetchResponseData::createWithBuffer(new Bo dyStreamBuffer(createFetchDataConsumerHandleFromWebHandle(handle))); |
| 125 responseData->setStatus(response.httpStatusCode()); | 125 responseData->setStatus(response.httpStatusCode()); |
| 126 responseData->setStatusMessage(response.httpStatusText()); | 126 responseData->setStatusMessage(response.httpStatusText()); |
| 127 for (auto& it : response.httpHeaderFields()) | 127 for (auto& it : response.httpHeaderFields()) |
| 128 responseData->headerList()->append(it.key, it.value); | 128 responseData->headerList()->append(it.key, it.value); |
| 129 responseData->setURL(response.url()); | 129 responseData->setURL(response.url()); |
| 130 responseData->setMIMEType(response.mimeType()); | 130 responseData->setMIMEType(response.mimeType()); |
| 131 | 131 |
| 132 FetchResponseData* taintedResponse = responseData; | 132 FetchResponseData* taintedResponse = responseData; |
| 133 switch (m_request->tainting()) { | 133 switch (m_request->tainting()) { |
| 134 case FetchRequestData::BasicTainting: | 134 case FetchRequestData::BasicTainting: |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 320 ResourceRequest request(m_request->url()); | 320 ResourceRequest request(m_request->url()); |
| 321 request.setRequestContext(m_request->context()); | 321 request.setRequestContext(m_request->context()); |
| 322 request.setHTTPMethod(m_request->method()); | 322 request.setHTTPMethod(m_request->method()); |
| 323 const Vector<OwnPtr<FetchHeaderList::Header>>& list = m_request->headerList( )->list(); | 323 const Vector<OwnPtr<FetchHeaderList::Header>>& list = m_request->headerList( )->list(); |
| 324 for (size_t i = 0; i < list.size(); ++i) { | 324 for (size_t i = 0; i < list.size(); ++i) { |
| 325 request.addHTTPHeaderField(AtomicString(list[i]->first), AtomicString(li st[i]->second)); | 325 request.addHTTPHeaderField(AtomicString(list[i]->first), AtomicString(li st[i]->second)); |
| 326 } | 326 } |
| 327 | 327 |
| 328 if (m_request->method() != "GET" && m_request->method() != "HEAD") { | 328 if (m_request->method() != "GET" && m_request->method() != "HEAD") { |
| 329 if (BodyStreamBuffer* buffer = m_request->buffer()) { | 329 if (BodyStreamBuffer* buffer = m_request->buffer()) { |
| 330 RefPtr<BlobDataHandle> blobDataHandle = buffer->handle()->obtainRead er(nullptr)->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::AllowBlobWit hInvalidSize); | 330 OwnPtr<FetchDataConsumerHandle> handle = buffer->lock(executionConte xt()); |
| 331 RefPtr<BlobDataHandle> blobDataHandle = handle->obtainReader(nullptr )->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSi ze); | |
| 332 buffer->unlock(handle.release()); | |
|
hiroshige
2015/07/21 12:14:01
Can we move L330-L332 to BodyStreamBuffer::drainAs
yhirano
2015/07/22 09:42:45
Done.
| |
| 331 RefPtr<FormData> httpBody(FormData::create()); | 333 RefPtr<FormData> httpBody(FormData::create()); |
| 332 if (blobDataHandle) | 334 if (blobDataHandle) |
| 333 httpBody->appendBlob(blobDataHandle->uuid(), blobDataHandle); | 335 httpBody->appendBlob(blobDataHandle->uuid(), blobDataHandle); |
| 334 request.setHTTPBody(httpBody); | 336 request.setHTTPBody(httpBody); |
| 335 } | 337 } |
| 336 } | 338 } |
| 337 | 339 |
| 338 request.setUseStreamOnResponse(true); | 340 request.setUseStreamOnResponse(true); |
| 339 | 341 |
| 340 // "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer| | 342 // "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer| |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 454 | 456 |
| 455 DEFINE_TRACE(FetchManager) | 457 DEFINE_TRACE(FetchManager) |
| 456 { | 458 { |
| 457 #if ENABLE(OILPAN) | 459 #if ENABLE(OILPAN) |
| 458 visitor->trace(m_executionContext); | 460 visitor->trace(m_executionContext); |
| 459 visitor->trace(m_loaders); | 461 visitor->trace(m_loaders); |
| 460 #endif | 462 #endif |
| 461 } | 463 } |
| 462 | 464 |
| 463 } // namespace blink | 465 } // namespace blink |
| OLD | NEW |