| 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/FetchRequestData.h" | 6 #include "modules/fetch/FetchRequestData.h" | 
| 7 | 7 | 
| 8 #include "core/dom/ExecutionContext.h" | 8 #include "core/dom/ExecutionContext.h" | 
| 9 #include "core/fetch/ResourceLoaderOptions.h" | 9 #include "core/fetch/ResourceLoaderOptions.h" | 
| 10 #include "core/loader/ThreadableLoader.h" | 10 #include "core/loader/ThreadableLoader.h" | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 24 } | 24 } | 
| 25 | 25 | 
| 26 FetchRequestData* FetchRequestData::create(ExecutionContext* executionContext, c
     onst WebServiceWorkerRequest& webRequest) | 26 FetchRequestData* FetchRequestData::create(ExecutionContext* executionContext, c
     onst WebServiceWorkerRequest& webRequest) | 
| 27 { | 27 { | 
| 28     FetchRequestData* request = FetchRequestData::create(); | 28     FetchRequestData* request = FetchRequestData::create(); | 
| 29     request->m_url = webRequest.url(); | 29     request->m_url = webRequest.url(); | 
| 30     request->m_method = webRequest.method(); | 30     request->m_method = webRequest.method(); | 
| 31     for (HTTPHeaderMap::const_iterator it = webRequest.headers().begin(); it != 
     webRequest.headers().end(); ++it) | 31     for (HTTPHeaderMap::const_iterator it = webRequest.headers().begin(); it != 
     webRequest.headers().end(); ++it) | 
| 32         request->m_headerList->append(it->key, it->value); | 32         request->m_headerList->append(it->key, it->value); | 
| 33     if (webRequest.blobDataHandle()) | 33     if (webRequest.blobDataHandle()) | 
| 34         request->setBuffer(BodyStreamBuffer::create(FetchBlobDataConsumerHandle:
     :create(executionContext, webRequest.blobDataHandle()))); | 34         request->setBuffer(new BodyStreamBuffer(FetchBlobDataConsumerHandle::cre
     ate(executionContext, webRequest.blobDataHandle()))); | 
| 35     request->setContext(webRequest.requestContext()); | 35     request->setContext(webRequest.requestContext()); | 
| 36     request->m_referrer.setURL(webRequest.referrer()); | 36     request->m_referrer.setURL(webRequest.referrer()); | 
| 37     request->setMode(webRequest.mode()); | 37     request->setMode(webRequest.mode()); | 
| 38     request->setCredentials(webRequest.credentialsMode()); | 38     request->setCredentials(webRequest.credentialsMode()); | 
| 39     request->setMIMEType(request->m_headerList->extractMIMEType()); | 39     request->setMIMEType(request->m_headerList->extractMIMEType()); | 
| 40     return request; | 40     return request; | 
| 41 } | 41 } | 
| 42 | 42 | 
| 43 FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext) | 43 FetchRequestData* FetchRequestData::cloneExceptBody() | 
| 44 { | 44 { | 
| 45     FetchRequestData* request = FetchRequestData::create(); | 45     FetchRequestData* request = FetchRequestData::create(); | 
| 46     request->m_url = m_url; | 46     request->m_url = m_url; | 
| 47     request->m_method = m_method; | 47     request->m_method = m_method; | 
| 48     request->m_headerList = m_headerList->clone(); | 48     request->m_headerList = m_headerList->clone(); | 
| 49     request->m_unsafeRequestFlag = m_unsafeRequestFlag; | 49     request->m_unsafeRequestFlag = m_unsafeRequestFlag; | 
| 50     if (m_buffer) { |  | 
| 51         OwnPtr<FetchDataConsumerHandle> dest1, dest2; |  | 
| 52         DataConsumerTee::create(executionContext, m_buffer->releaseHandle(), &de
     st1, &dest2); |  | 
| 53         m_buffer = BodyStreamBuffer::create(dest1.release()); |  | 
| 54         request->m_buffer = BodyStreamBuffer::create(dest2.release()); |  | 
| 55     } |  | 
| 56     request->m_origin = m_origin; | 50     request->m_origin = m_origin; | 
| 57     request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag; | 51     request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag; | 
| 58     request->m_context = m_context; | 52     request->m_context = m_context; | 
| 59     request->m_referrer = m_referrer; | 53     request->m_referrer = m_referrer; | 
| 60     request->m_mode = m_mode; | 54     request->m_mode = m_mode; | 
| 61     request->m_credentials = m_credentials; | 55     request->m_credentials = m_credentials; | 
| 62     request->m_responseTainting = m_responseTainting; | 56     request->m_responseTainting = m_responseTainting; | 
| 63     request->m_mimeType = m_mimeType; | 57     request->m_mimeType = m_mimeType; | 
| 64     return request; | 58     return request; | 
| 65 } | 59 } | 
| 66 | 60 | 
|  | 61 FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext) | 
|  | 62 { | 
|  | 63     FetchRequestData* request = FetchRequestData::cloneExceptBody(); | 
|  | 64     if (m_buffer->hasBody()) { | 
|  | 65         OwnPtr<FetchDataConsumerHandle> dest1, dest2; | 
|  | 66         // TODO(yhirano): unlock the buffer. | 
|  | 67         DataConsumerTee::create(executionContext, m_buffer->lock(executionContex
     t), &dest1, &dest2); | 
|  | 68         m_buffer = new BodyStreamBuffer(dest1.release()); | 
|  | 69         request->m_buffer = new BodyStreamBuffer(dest2.release()); | 
|  | 70     } else { | 
|  | 71         m_buffer = new BodyStreamBuffer; | 
|  | 72     } | 
|  | 73     return request; | 
|  | 74 } | 
|  | 75 | 
| 67 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) | 76 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) | 
| 68 { | 77 { | 
| 69     return clone(executionContext); | 78     FetchRequestData* request = FetchRequestData::cloneExceptBody(); | 
|  | 79     request->m_buffer = m_buffer; | 
|  | 80     m_buffer = new BodyStreamBuffer; | 
|  | 81     return request; | 
| 70 } | 82 } | 
| 71 | 83 | 
| 72 FetchRequestData::~FetchRequestData() | 84 FetchRequestData::~FetchRequestData() | 
| 73 { | 85 { | 
| 74 } | 86 } | 
| 75 | 87 | 
| 76 FetchRequestData::FetchRequestData() | 88 FetchRequestData::FetchRequestData() | 
| 77     : m_method("GET") | 89     : m_method("GET") | 
| 78     , m_headerList(FetchHeaderList::create()) | 90     , m_headerList(FetchHeaderList::create()) | 
| 79     , m_unsafeRequestFlag(false) | 91     , m_unsafeRequestFlag(false) | 
| 80     , m_context(WebURLRequest::RequestContextUnspecified) | 92     , m_context(WebURLRequest::RequestContextUnspecified) | 
| 81     , m_sameOriginDataURLFlag(false) | 93     , m_sameOriginDataURLFlag(false) | 
| 82     , m_mode(WebURLRequest::FetchRequestModeNoCORS) | 94     , m_mode(WebURLRequest::FetchRequestModeNoCORS) | 
| 83     , m_credentials(WebURLRequest::FetchCredentialsModeOmit) | 95     , m_credentials(WebURLRequest::FetchCredentialsModeOmit) | 
| 84     , m_responseTainting(BasicTainting) | 96     , m_responseTainting(BasicTainting) | 
|  | 97     , m_buffer(new BodyStreamBuffer) | 
| 85 { | 98 { | 
| 86 } | 99 } | 
| 87 | 100 | 
| 88 DEFINE_TRACE(FetchRequestData) | 101 DEFINE_TRACE(FetchRequestData) | 
| 89 { | 102 { | 
| 90     visitor->trace(m_buffer); | 103     visitor->trace(m_buffer); | 
| 91     visitor->trace(m_headerList); | 104     visitor->trace(m_headerList); | 
| 92 } | 105 } | 
| 93 | 106 | 
| 94 } // namespace blink | 107 } // namespace blink | 
| OLD | NEW | 
|---|