Changeset 69064 in webkit
- Timestamp:
- Oct 4, 2010 9:16:20 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r69063 r69064 1 2010-10-04 Sriram Neelakandan <sriram.neelakandan@gmail.com> 2 3 Reviewed by Andreas Kling. 4 5 [Qt] QNetworkReplyHandler forces buffered output for FormData with files 6 https://bugs.webkit.org/show_bug.cgi?id=46259 7 8 No new tests. Existing form submit tests should cover this change. 9 10 * platform/network/qt/QNetworkReplyHandler.cpp: 11 (WebCore::FormDataIODevice::FormDataIODevice): 12 (WebCore::FormDataIODevice::computeSize): 13 Add computeSize() for computing form device size 14 (WebCore::QNetworkReplyHandler::start): 15 Call computeSize(), fill Content-Length and prevent UploadData buffering 16 * platform/network/qt/QNetworkReplyHandler.h: 17 (WebCore::FormDataIODevice::getFormDataSize): 18 1 19 2010-10-04 Chang Shu <chang.shu@nokia.com> 2 20 -
trunk/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
r68906 r69064 31 31 #include <QDateTime> 32 32 #include <QFile> 33 #include <QFileInfo> 33 34 #include <QNetworkReply> 34 35 #include <QNetworkCookie> … … 60 61 , m_currentFile(0) 61 62 , m_currentDelta(0) 63 , m_fileSize(0) 64 , m_dataSize(0) 62 65 { 63 66 setOpenMode(FormDataIODevice::ReadOnly); … … 65 68 if (!m_formElements.isEmpty() && m_formElements[0].m_type == FormDataElement::encodedFile) 66 69 openFileForCurrentElement(); 70 computeSize(); 67 71 } 68 72 … … 70 74 { 71 75 delete m_currentFile; 76 } 77 78 qint64 FormDataIODevice::computeSize() 79 { 80 for (int i = 0; i < m_formElements.size(); ++i) { 81 const FormDataElement& element = m_formElements[i]; 82 if (element.m_type == FormDataElement::data) 83 m_dataSize += element.m_data.size(); 84 else { 85 QFileInfo fi(element.m_filename); 86 m_fileSize += fi.size(); 87 } 88 } 89 return m_dataSize + m_fileSize; 72 90 } 73 91 … … 482 500 case QNetworkAccessManager::PostOperation: { 483 501 FormDataIODevice* postDevice = new FormDataIODevice(d->m_firstRequest.httpBody()); 502 // We may be uploading files so prevent QNR from buffering data 503 m_request.setHeader(QNetworkRequest::ContentLengthHeader, postDevice->getFormDataSize()); 504 m_request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, QVariant(true)); 484 505 m_reply = manager->post(m_request, postDevice); 485 506 postDevice->setParent(m_reply); … … 491 512 case QNetworkAccessManager::PutOperation: { 492 513 FormDataIODevice* putDevice = new FormDataIODevice(d->m_firstRequest.httpBody()); 514 // We may be uploading files so prevent QNR from buffering data 515 m_request.setHeader(QNetworkRequest::ContentLengthHeader, putDevice->getFormDataSize()); 516 m_request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, QVariant(true)); 493 517 m_reply = manager->put(m_request, putDevice); 494 518 putDevice->setParent(m_reply); -
trunk/WebCore/platform/network/qt/QNetworkReplyHandler.h
r62228 r69064 98 98 99 99 bool isSequential() const; 100 qint64 getFormDataSize() const { return m_fileSize + m_dataSize; } 100 101 101 102 protected: … … 105 106 private: 106 107 void moveToNextElement(); 108 qint64 computeSize(); 107 109 void openFileForCurrentElement(); 108 110 … … 111 113 QFile* m_currentFile; 112 114 qint64 m_currentDelta; 115 qint64 m_fileSize; 116 qint64 m_dataSize; 113 117 }; 114 118
Note: See TracChangeset
for help on using the changeset viewer.