Changeset 195450 in webkit
- Timestamp:
- Jan 22, 2016 6:51:16 AM (8 years ago)
- Location:
- trunk/Source
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r195449 r195450 1 2016-01-22 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 3 Remove PassRefPtr from ResourceRequest and FormData 4 https://bugs.webkit.org/show_bug.cgi?id=153229 5 6 Reviewed by Chris Dumez. 7 8 Covered by existing tests. 9 10 Making ResourceRequest::setHTTPBody take a RefPtr<FormData>&&. 11 Moving FormData from PassRefPtr to RefPtr. 12 13 * html/parser/XSSAuditorDelegate.cpp: 14 (WebCore::XSSAuditorDelegate::didBlockScript): 15 * loader/FormSubmission.cpp: 16 (WebCore::FormSubmission::populateFrameLoadRequest): 17 * loader/FrameLoader.cpp: 18 (WebCore::FrameLoader::loadPostRequest): 19 (WebCore::FrameLoader::loadDifferentDocumentItem): 20 * loader/PingLoader.cpp: 21 (WebCore::PingLoader::sendViolationReport): 22 * loader/PingLoader.h: 23 * page/ContentSecurityPolicy.cpp: 24 (WebCore::ContentSecurityPolicy::reportViolation): 25 * platform/network/FormData.cpp: 26 (WebCore::FormData::create): 27 (WebCore::FormData::createMultiPart): 28 (WebCore::FormData::copy): 29 (WebCore::FormData::deepCopy): 30 (WebCore::FormData::resolveBlobReferences): 31 * platform/network/FormData.h: 32 (WebCore::FormData::decode): 33 * platform/network/ResourceRequestBase.cpp: 34 (WebCore::ResourceRequestBase::adopt): 35 (WebCore::ResourceRequestBase::setHTTPBody): 36 * platform/network/ResourceRequestBase.h: 37 (WebCore::ResourceRequestBase::setHTTPBody): 38 * platform/network/cf/FormDataStreamCFNet.cpp: 39 (WebCore::setHTTPBody): 40 * platform/network/cf/FormDataStreamCFNet.h: 41 * platform/network/cf/ResourceRequestCFNet.cpp: 42 (WebCore::ResourceRequest::doUpdatePlatformHTTPBody): 43 (WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties): 44 * platform/network/cocoa/ResourceRequestCocoa.mm: 45 (WebCore::ResourceRequest::doUpdatePlatformHTTPBody): 46 * platform/network/curl/ResourceHandleManager.cpp: 47 (WebCore::getFormElementsCount): 48 * platform/network/mac/FormDataStreamMac.h: 49 * platform/network/mac/FormDataStreamMac.mm: 50 (WebCore::setHTTPBody): 51 * platform/network/soup/ResourceHandleSoup.cpp: 52 (WebCore::doRedirect): 53 * xml/XMLHttpRequest.cpp: 54 (WebCore::XMLHttpRequest::createRequest): 55 1 56 2016-01-22 Csaba Osztrogonác <ossy@webkit.org> 2 57 -
trunk/Source/WebCore/loader/FormSubmission.cpp
r191369 r195450 259 259 if (m_method == FormSubmission::PostMethod) { 260 260 frameRequest.resourceRequest().setHTTPMethod("POST"); 261 frameRequest.resourceRequest().setHTTPBody(m_formData );261 frameRequest.resourceRequest().setHTTPBody(m_formData.copyRef()); 262 262 263 263 // construct some user headers if necessary -
trunk/Source/WebCore/loader/FrameLoader.cpp
r195317 r195450 2655 2655 const ResourceRequest& inRequest = request.resourceRequest(); 2656 2656 const URL& url = inRequest.url(); 2657 RefPtr<FormData> formData = inRequest.httpBody();2658 2657 const String& contentType = inRequest.httpContentType(); 2659 2658 String origin = inRequest.httpOrigin(); … … 2665 2664 workingResourceRequest.setHTTPOrigin(origin); 2666 2665 workingResourceRequest.setHTTPMethod("POST"); 2667 workingResourceRequest.setHTTPBody( formData);2666 workingResourceRequest.setHTTPBody(inRequest.httpBody()); 2668 2667 workingResourceRequest.setHTTPContentType(contentType); 2669 2668 addExtraFieldsToRequest(workingResourceRequest, loadType, true); … … 3300 3299 3301 3300 request.setHTTPMethod("POST"); 3302 request.setHTTPBody( formData);3301 request.setHTTPBody(WTFMove(formData)); 3303 3302 request.setHTTPContentType(item.formContentType()); 3304 3303 RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::createFromString(item.referrer()); -
trunk/Source/WebCore/loader/PingLoader.cpp
r191167 r195450 124 124 } 125 125 126 void PingLoader::sendViolationReport(Frame& frame, const URL& reportURL, PassRefPtr<FormData>report)126 void PingLoader::sendViolationReport(Frame& frame, const URL& reportURL, RefPtr<FormData>&& report) 127 127 { 128 128 ResourceRequest request(reportURL); … … 135 135 request.setHTTPMethod("POST"); 136 136 request.setHTTPContentType("application/json"); 137 request.setHTTPBody( report);137 request.setHTTPBody(WTFMove(report)); 138 138 139 139 bool removeCookies = true; -
trunk/Source/WebCore/loader/PingLoader.h
r186530 r195450 33 33 #define PingLoader_h 34 34 35 #include <wtf/ PassRefPtr.h>35 #include <wtf/RefPtr.h> 36 36 37 37 namespace WebCore { … … 46 46 static void loadImage(Frame&, const URL&); 47 47 static void sendPing(Frame&, const URL& pingURL, const URL& destinationURL); 48 static void sendViolationReport(Frame&, const URL& reportURL, PassRefPtr<FormData>report);48 static void sendViolationReport(Frame&, const URL& reportURL, RefPtr<FormData>&& report); 49 49 50 50 private: -
trunk/Source/WebCore/page/ContentSecurityPolicy.cpp
r194819 r195450 1673 1673 1674 1674 for (const auto& url : reportURIs) 1675 PingLoader::sendViolationReport(*frame, url, report );1675 PingLoader::sendViolationReport(*frame, url, report.copyRef()); 1676 1676 } 1677 1677 -
trunk/Source/WebCore/platform/network/FormData.cpp
r175792 r195450 71 71 } 72 72 73 PassRefPtr<FormData> FormData::create()74 { 75 return adoptRef( new FormData);76 } 77 78 PassRefPtr<FormData> FormData::create(const void* data, size_t size)79 { 80 Ref Ptr<FormData> result = create();73 Ref<FormData> FormData::create() 74 { 75 return adoptRef(*new FormData); 76 } 77 78 Ref<FormData> FormData::create(const void* data, size_t size) 79 { 80 Ref<FormData> result = create(); 81 81 result->appendData(data, size); 82 return result .release();83 } 84 85 PassRefPtr<FormData> FormData::create(const CString& string)86 { 87 Ref Ptr<FormData> result = create();82 return result; 83 } 84 85 Ref<FormData> FormData::create(const CString& string) 86 { 87 Ref<FormData> result = create(); 88 88 result->appendData(string.data(), string.length()); 89 return result .release();90 } 91 92 PassRefPtr<FormData> FormData::create(const Vector<char>& vector)93 { 94 Ref Ptr<FormData> result = create();89 return result; 90 } 91 92 Ref<FormData> FormData::create(const Vector<char>& vector) 93 { 94 Ref<FormData> result = create(); 95 95 result->appendData(vector.data(), vector.size()); 96 return result .release();97 } 98 99 PassRefPtr<FormData> FormData::create(const FormDataList& list, const TextEncoding& encoding, EncodingType encodingType)100 { 101 Ref Ptr<FormData> result = create();96 return result; 97 } 98 99 Ref<FormData> FormData::create(const FormDataList& list, const TextEncoding& encoding, EncodingType encodingType) 100 { 101 Ref<FormData> result = create(); 102 102 result->appendKeyValuePairItems(list, encoding, false, 0, encodingType); 103 return result .release();104 } 105 106 PassRefPtr<FormData> FormData::createMultiPart(const FormDataList& list, const TextEncoding& encoding, Document* document)107 { 108 Ref Ptr<FormData> result = create();103 return result; 104 } 105 106 Ref<FormData> FormData::createMultiPart(const FormDataList& list, const TextEncoding& encoding, Document* document) 107 { 108 Ref<FormData> result = create(); 109 109 result->appendKeyValuePairItems(list, encoding, true, document); 110 return result .release();111 } 112 113 PassRefPtr<FormData> FormData::copy() const114 { 115 return adoptRef( new FormData(*this));116 } 117 118 PassRefPtr<FormData> FormData::deepCopy() const119 { 120 Ref Ptr<FormData> formData(create());110 return result; 111 } 112 113 Ref<FormData> FormData::copy() const 114 { 115 return adoptRef(*new FormData(*this)); 116 } 117 118 Ref<FormData> FormData::deepCopy() const 119 { 120 Ref<FormData> formData(create()); 121 121 122 122 formData->m_alwaysStream = m_alwaysStream; … … 136 136 } 137 137 } 138 return formData .release();138 return formData; 139 139 } 140 140 … … 303 303 } 304 304 305 PassRefPtr<FormData> FormData::resolveBlobReferences()305 Ref<FormData> FormData::resolveBlobReferences() 306 306 { 307 307 // First check if any blobs needs to be resolved, or we can take the fast path. … … 317 317 318 318 if (!hasBlob) 319 return this;319 return *this; 320 320 321 321 // Create a copy to append the result into. 322 Ref Ptr<FormData> newFormData = FormData::create();322 Ref<FormData> newFormData = FormData::create(); 323 323 newFormData->setAlwaysStream(alwaysStream()); 324 324 newFormData->setIdentifier(identifier()); … … 331 331 newFormData->appendFileRange(element.m_filename, element.m_fileStart, element.m_fileLength, element.m_expectedFileModificationTime, element.m_shouldGenerateFile); 332 332 else if (element.m_type == FormDataElement::Type::EncodedBlob) 333 appendBlobResolved(newFormData. get(), element.m_url);333 appendBlobResolved(newFormData.ptr(), element.m_url); 334 334 else 335 335 ASSERT_NOT_REACHED(); 336 336 } 337 return newFormData .release();337 return newFormData; 338 338 } 339 339 -
trunk/Source/WebCore/platform/network/FormData.h
r177188 r195450 195 195 }; 196 196 197 WEBCORE_EXPORT static PassRefPtr<FormData> create();198 WEBCORE_EXPORT static PassRefPtr<FormData> create(const void*, size_t);199 static PassRefPtr<FormData> create(const CString&);200 static PassRefPtr<FormData> create(const Vector<char>&);201 static PassRefPtr<FormData> create(const FormDataList&, const TextEncoding&, EncodingType = FormURLEncoded);202 static PassRefPtr<FormData> createMultiPart(const FormDataList&, const TextEncoding&, Document*);197 WEBCORE_EXPORT static Ref<FormData> create(); 198 WEBCORE_EXPORT static Ref<FormData> create(const void*, size_t); 199 static Ref<FormData> create(const CString&); 200 static Ref<FormData> create(const Vector<char>&); 201 static Ref<FormData> create(const FormDataList&, const TextEncoding&, EncodingType = FormURLEncoded); 202 static Ref<FormData> createMultiPart(const FormDataList&, const TextEncoding&, Document*); 203 203 WEBCORE_EXPORT ~FormData(); 204 204 205 205 // FIXME: Both these functions perform a deep copy of m_elements, but differ in handling of other data members. 206 206 // How much of that is intentional? We need better names that explain the difference. 207 PassRefPtr<FormData> copy() const;208 PassRefPtr<FormData> deepCopy() const;207 Ref<FormData> copy() const; 208 Ref<FormData> deepCopy() const; 209 209 210 210 template<typename Encoder> 211 211 void encode(Encoder&) const; 212 212 template<typename Decoder> 213 static PassRefPtr<FormData> decode(Decoder&);213 static RefPtr<FormData> decode(Decoder&); 214 214 215 215 WEBCORE_EXPORT void appendData(const void* data, size_t); … … 224 224 // Resolve all blob references so we only have file and data. 225 225 // If the FormData has no blob references to resolve, this is returned. 226 PassRefPtr<FormData> resolveBlobReferences();226 Ref<FormData> resolveBlobReferences(); 227 227 228 228 bool isEmpty() const { return m_elements.isEmpty(); } … … 290 290 291 291 template<typename Decoder> 292 PassRefPtr<FormData> FormData::decode(Decoder& decoder)292 RefPtr<FormData> FormData::decode(Decoder& decoder) 293 293 { 294 294 RefPtr<FormData> data = FormData::create(); … … 306 306 return nullptr; 307 307 308 return data .release();308 return data; 309 309 } 310 310 -
trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp
r195010 r195450 77 77 request->setResponseContentDispositionEncodingFallbackArray(encoding1, encoding2, encoding3); 78 78 } 79 request->setHTTPBody(data->httpBody );79 request->setHTTPBody(data->httpBody.copyRef()); 80 80 request->setAllowCookies(data->allowCookies); 81 81 request->doPlatformAdopt(WTFMove(data)); … … 414 414 } 415 415 416 void ResourceRequestBase::setHTTPBody( PassRefPtr<FormData>httpBody)417 { 418 updateResourceRequest(); 419 420 m_httpBody = httpBody;416 void ResourceRequestBase::setHTTPBody(RefPtr<FormData>&& httpBody) 417 { 418 updateResourceRequest(); 419 420 m_httpBody = WTFMove(httpBody); 421 421 422 422 m_resourceRequestBodyUpdated = true; -
trunk/Source/WebCore/platform/network/ResourceRequestBase.h
r195010 r195450 122 122 123 123 WEBCORE_EXPORT FormData* httpBody() const; 124 WEBCORE_EXPORT void setHTTPBody( PassRefPtr<FormData> httpBody);125 124 WEBCORE_EXPORT void setHTTPBody(RefPtr<FormData>&&); 125 126 126 bool allowCookies() const; 127 127 void setAllowCookies(bool allowCookies); -
trunk/Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp
r194496 r195450 349 349 } 350 350 351 void setHTTPBody(CFMutableURLRequestRef request, PassRefPtr<FormData> prpFormData) 352 { 353 RefPtr<FormData> formData = prpFormData; 354 351 void setHTTPBody(CFMutableURLRequestRef request, FormData* formData) 352 { 355 353 if (!formData) 356 354 return; … … 368 366 } 369 367 370 formData = formData->resolveBlobReferences(); 371 count = formData->elements().size(); 368 369 Ref<FormData> newFormData = formData->resolveBlobReferences(); 370 count = newFormData->elements().size(); 372 371 373 372 // Precompute the content length so NSURLConnection doesn't use chunked mode. 374 373 unsigned long long length = 0; 375 374 for (size_t i = 0; i < count; ++i) { 376 const FormDataElement& element = formData->elements()[i];375 const FormDataElement& element = newFormData->elements()[i]; 377 376 if (element.m_type == FormDataElement::Type::Data) 378 377 length += element.m_data.size(); … … 392 391 393 392 // Pass the length along with the formData so it does not have to be recomputed. 394 FormCreationContext formContext = { formData.release(), length};393 FormCreationContext formContext = {WTFMove(newFormData), length}; 395 394 396 395 CFReadStreamCallBacksV1 callBacks = { 1, formCreate, formFinalize, 0, formOpen, 0, formRead, 0, formCanRead, formClose, formCopyProperty, 0, 0, formSchedule, formUnschedule -
trunk/Source/WebCore/platform/network/cf/FormDataStreamCFNet.h
r165676 r195450 40 40 class FormData; 41 41 42 void setHTTPBody(CFMutableURLRequestRef, PassRefPtr<FormData>);42 void setHTTPBody(CFMutableURLRequestRef, FormData*); 43 43 44 44 FormData* httpBodyFromStream(CFReadStreamRef); -
trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp
r194378 r195450 205 205 cfRequest = CFURLRequestCreateMutable(0, url.get(), (CFURLRequestCachePolicy)cachePolicy(), timeoutInterval(), firstPartyForCookies.get()); 206 206 207 RefPtr<FormData>formData = httpBody();207 FormData* formData = httpBody(); 208 208 if (formData && !formData->isEmpty()) 209 209 WebCore::setHTTPBody(cfRequest, formData); … … 336 336 337 337 setPriority(oldPriority); 338 setHTTPBody( oldHTTPBody.release());338 setHTTPBody(WTFMove(oldHTTPBody)); 339 339 setHiddenFromInspector(isHiddenFromInspector); 340 340 setRequester(oldRequester); -
trunk/Source/WebCore/platform/network/cocoa/ResourceRequestCocoa.mm
r194378 r195450 191 191 nsRequest = [[NSMutableURLRequest alloc] initWithURL:url()]; 192 192 193 RefPtr<FormData>formData = httpBody();193 FormData* formData = httpBody(); 194 194 if (formData && !formData->isEmpty()) 195 195 WebCore::setHTTPBody(nsRequest, formData); -
trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp
r194422 r195450 764 764 // Resolve the blob elements so the formData can correctly report it's size. 765 765 formData = formData->resolveBlobReferences(); 766 job->firstRequest().setHTTPBody(formData); 767 768 return formData->elements().size(); 766 size_t size = formData->elements().size(); 767 job->firstRequest().setHTTPBody(WTFMove(formData)); 768 769 return size; 769 770 } 770 771 -
trunk/Source/WebCore/platform/network/mac/FormDataStreamMac.h
r165676 r195450 43 43 class FormData; 44 44 45 void setHTTPBody(NSMutableURLRequest *, PassRefPtr<FormData>);45 void setHTTPBody(NSMutableURLRequest *, FormData*); 46 46 FormData* httpBodyFromStream(NSInputStream *); 47 47 -
trunk/Source/WebCore/platform/network/mac/FormDataStreamMac.mm
r165676 r195450 34 34 #import "FormData.h" 35 35 #import "FormDataStreamCFNet.h" 36 #import <wtf/PassRefPtr.h>37 36 38 37 @interface NSURLRequest (WebNSURLRequestDetails) … … 42 41 namespace WebCore { 43 42 44 void setHTTPBody(NSMutableURLRequest *request, PassRefPtr<FormData> prpFormData)43 void setHTTPBody(NSMutableURLRequest *request, FormData* formData) 45 44 { 46 setHTTPBody(const_cast<CFMutableURLRequestRef>([request _CFURLRequest]), prpFormData);45 setHTTPBody(const_cast<CFMutableURLRequestRef>([request _CFURLRequest]), formData); 47 46 } 48 47 -
trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp
r194419 r195450 507 507 if (message->method == SOUP_METHOD_GET || shouldRedirectAsGET(message, newURL, crossOrigin)) { 508 508 newRequest.setHTTPMethod("GET"); 509 newRequest.setHTTPBody( 0);509 newRequest.setHTTPBody(nullptr); 510 510 newRequest.clearHTTPContentType(); 511 511 } -
trunk/Source/WebCore/xml/XMLHttpRequest.cpp
r195010 r195450 744 744 ASSERT(m_method != "GET"); 745 745 ASSERT(m_method != "HEAD"); 746 request.setHTTPBody( m_requestEntityBody.release());746 request.setHTTPBody(WTFMove(m_requestEntityBody)); 747 747 } 748 748 -
trunk/Source/WebKit/win/ChangeLog
r195170 r195450 1 2016-01-22 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 3 Remove PassRefPtr from ResourceRequest and FormData 4 https://bugs.webkit.org/show_bug.cgi?id=153229 5 6 Reviewed by Chris Dumez. 7 8 * WebMutableURLRequest.cpp: 9 (WebMutableURLRequest::setHTTPBody): 10 1 11 2016-01-15 Simon Fraser <simon.fraser@apple.com> 2 12 -
trunk/Source/WebKit/win/WebMutableURLRequest.cpp
r188662 r195450 308 308 return E_FAIL; 309 309 310 m_request.setHTTPBody( httpBody);310 m_request.setHTTPBody(WTFMove(httpBody)); 311 311 return S_OK; 312 312 } -
trunk/Source/WebKit2/ChangeLog
r195445 r195450 1 2016-01-22 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 3 Remove PassRefPtr from ResourceRequest and FormData 4 https://bugs.webkit.org/show_bug.cgi?id=153229 5 6 Reviewed by Chris Dumez. 7 8 * NetworkProcess/NetworkResourceLoadParameters.cpp: 9 (WebKit::NetworkResourceLoadParameters::decode): 10 * NetworkProcess/cache/NetworkCacheEntry.cpp: 11 (WebKit::NetworkCache::Entry::Entry): 12 1 13 2016-01-21 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoadParameters.cpp
r194272 r195450 122 122 if (!formData) 123 123 return false; 124 result.request.setHTTPBody( formData.release());124 result.request.setHTTPBody(WTFMove(formData)); 125 125 126 126 SandboxExtension::HandleArray requestBodySandboxExtensionHandles;
Note: See TracChangeset
for help on using the changeset viewer.