Changeset 222269 in webkit
- Timestamp:
- Sep 20, 2017 10:31:06 AM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r222264 r222269 1 2017-09-20 Basuke Suzuki <Basuke.Suzuki@sony.com> 2 3 [Curl] improve the implementation of FormDataStream 4 https://bugs.webkit.org/show_bug.cgi?id=177111 5 6 Reviewed by Alex Christensen. 7 8 * platform/network/curl/FormDataStreamCurl.cpp: 9 (WebCore::FormDataStream::read): 10 (WebCore::FormDataStream::hasMoreElements const): 11 * platform/network/curl/FormDataStreamCurl.h: 12 (WebCore::FormDataStream::setHTTPBody): 13 (WebCore::FormDataStream::FormDataStream): Deleted. 14 * platform/network/curl/ResourceHandleCurlDelegate.cpp: 15 (WebCore::ResourceHandleCurlDelegate::ResourceHandleCurlDelegate): 16 (WebCore::ResourceHandleCurlDelegate::prepareSendData): 17 (WebCore::ResourceHandleCurlDelegate::didFinish): 18 (WebCore::ResourceHandleCurlDelegate::didFail): 19 (WebCore::ResourceHandleCurlDelegate::setupFormData): 20 * platform/network/curl/ResourceHandleCurlDelegate.h: 21 1 22 2017-09-20 Miguel Gomez <magomez@igalia.com> 2 23 -
trunk/Source/WebCore/platform/network/curl/FormDataStreamCurl.cpp
r168188 r222269 5 5 * Copyright (C) 2007 Holger Hans Peter Freyther 6 6 * Copyright (C) 2008 Collabora Ltd. 7 * Copyright (C) 2017 Sony Interactive Entertainment Inc. 7 8 * All rights reserved. 8 9 * … … 30 31 31 32 #include "config.h" 33 #include "FormDataStreamCurl.h" 32 34 33 35 #if USE(CURL) 34 36 35 #include "FormDataStreamCurl.h"36 37 37 #include "FormData.h" 38 #include "ResourceRequest.h"39 #include <wtf/text/CString.h>40 38 41 39 namespace WebCore { … … 54 52 55 53 Vector<FormDataElement> elements; 56 if (m_ resourceHandle->firstRequest().httpBody())57 elements = m_ resourceHandle->firstRequest().httpBody()->elements();54 if (m_formData) 55 elements = m_formData->elements(); 58 56 59 57 if (m_formDataElementIndex >= elements.size()) … … 108 106 { 109 107 Vector<FormDataElement> elements; 110 if (m_ resourceHandle->firstRequest().httpBody())111 elements = m_ resourceHandle->firstRequest().httpBody()->elements();108 if (m_formData) 109 elements = m_formData->elements(); 112 110 113 111 return m_formDataElementIndex < elements.size(); -
trunk/Source/WebCore/platform/network/curl/FormDataStreamCurl.h
r165676 r222269 1 1 /* 2 2 * Copyright (C) 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2017 Sony Interactive Entertainment Inc. 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 23 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 25 */ 25 #ifndef FormDataStreamCurl_h26 #define FormDataStreamCurl_h27 26 28 # include "config.h"27 #pragma once 29 28 30 #include "FileSystem.h"31 #include "ResourceHandle.h"32 29 #include <stdio.h> 33 30 34 31 namespace WebCore { 35 32 33 class FormData; 34 36 35 class FormDataStream { 37 36 public: 38 FormDataStream(ResourceHandle* handle) 39 : m_resourceHandle(handle) 40 , m_file(0) 41 , m_formDataElementIndex(0) 42 , m_formDataElementDataOffset(0) 43 { 44 } 45 37 FormDataStream() = default; 46 38 ~FormDataStream(); 47 39 40 void setHTTPBody(FormData* formData) { m_formData = formData; } 48 41 size_t read(void* ptr, size_t blockSize, size_t numberOfBlocks); 49 42 bool hasMoreElements() const; 50 43 51 44 private: 52 // We can hold a weak reference to our Resource Handleas it holds a strong reference53 // to us through its ResourceHandleInternal.54 ResourceHandle* m_resourceHandle;45 // We can hold a weak reference to our ResourceRequest as it holds a strong reference 46 // to us through its owner. 47 FormData* m_formData { }; 55 48 56 FILE* m_file ;57 size_t m_formDataElementIndex ;58 size_t m_formDataElementDataOffset ;49 FILE* m_file { }; 50 size_t m_formDataElementIndex { 0 }; 51 size_t m_formDataElementDataOffset { 0 }; 59 52 }; 60 53 61 54 } // namespace WebCore 62 63 #endif // FormDataStreamCurl_h -
trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp
r222223 r222269 50 50 ResourceHandleCurlDelegate::ResourceHandleCurlDelegate(ResourceHandle* handle) 51 51 : m_handle(handle) 52 , m_formDataStream(handle)53 52 , m_firstRequest(handle->firstRequest().isolatedCopy()) 54 53 , m_customHTTPHeaderFields(m_firstRequest.httpHeaderFields().isolatedCopy()) … … 428 427 std::unique_lock<Lock> lock(m_workerThreadMutex); 429 428 430 if (!m_formDataStream.hasMoreElements()) 431 return; 432 433 size_t size = m_formDataStream.read(buffer, blockSize, numberOfBlocks); 429 if (!m_formDataStream || !m_formDataStream->hasMoreElements()) { 430 m_workerThreadConditionVariable.notifyOne(); 431 return; 432 } 433 434 size_t size = m_formDataStream->read(buffer, blockSize, numberOfBlocks); 434 435 if (!size) { 435 436 // Something went wrong so cancel the job. 436 437 m_handle->cancel(); 438 m_workerThreadConditionVariable.notifyOne(); 437 439 return; 438 440 } … … 445 447 { 446 448 response().setDeprecatedNetworkLoadMetrics(networkLoadMetrics); 449 450 m_formDataStream = nullptr; 447 451 448 452 if (!m_handle) … … 466 470 void ResourceHandleCurlDelegate::didFail(const ResourceError& resourceError) 467 471 { 472 m_formDataStream = nullptr; 473 468 474 if (!m_handle) 469 475 return; … … 621 627 } 622 628 629 m_formDataStream = std::make_unique<FormDataStream>(); 630 m_formDataStream->setHTTPBody(m_firstRequest.httpBody()); 631 623 632 m_curlHandle.setReadCallbackFunction(willSendDataCallback, this); 624 633 } -
trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.h
r222223 r222269 43 43 class MultipartHandle; 44 44 class ProtectionSpace; 45 class ResourceError; 45 46 class ResourceHandle; 46 47 class ThreadSafeDataBuffer; … … 105 106 // Used by main thread. 106 107 ResourceHandle* m_handle; 107 FormDataStreamm_formDataStream;108 std::unique_ptr<FormDataStream> m_formDataStream; 108 109 std::unique_ptr<MultipartHandle> m_multipartHandle; 109 110 unsigned short m_authFailureCount { 0 };
Note: See TracChangeset
for help on using the changeset viewer.