Changeset 88612 in webkit
- Timestamp:
- Jun 12, 2011 4:51:45 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 13 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r88608 r88612 1 2011-06-12 Robert Hogan <robert@webkit.org> 2 3 Reviewed by Andreas Kling. 4 5 [Qt] Fix methods.html and methods-lower-case.html 6 https://bugs.webkit.org/show_bug.cgi?id=62221 7 8 Our expectations for the unskipped tests have the following differences from the mac 9 platform: 10 - POST requests with no data get a default Content-Type of 'application/octet-stream' in 11 Qt 4.8 and 'application/x-www-form-urlencoded' in Qt 4.7.3. 12 This is Qt-defined behaviour in QNetworkAccessManager (see QHttpNetworkRequestPrivate::header 13 in qhttpnetworkrequest.cpp) 14 - DELETE and HEAD requests get their ContentType and ContentLength headers (if present) removed 15 by QNetworkReplyHandler. QtWebKit does not send data for either of these request types. 16 17 * platform/qt-4.8/http/tests/xmlhttprequest/methods-expected.txt: Added. 18 * platform/qt-4.8/http/tests/xmlhttprequest/workers/methods-async-expected.txt: Added. 19 * platform/qt-4.8/http/tests/xmlhttprequest/workers/methods-expected.txt: Added. 20 * platform/qt-4.8/http/tests/xmlhttprequest/workers/shared-worker-methods-async-expected.txt: Added. 21 * platform/qt/Skipped: Unskip: http/tests/xmlhttprequest/methods.html 22 http/tests/xmlhttprequest/methods-lower-case.html 23 http/tests/xmlhttprequest/workers/methods-async.html 24 http/tests/xmlhttprequest/workers/methods.html 25 http/tests/xmlhttprequest/workers/shared-worker-methods-async.html 26 * platform/qt/http/tests/xmlhttprequest/methods-expected.txt: Added. 27 * platform/qt/http/tests/xmlhttprequest/workers/methods-async-expected.txt: Added. 28 * platform/qt/http/tests/xmlhttprequest/workers/methods-expected.txt: Added. 29 * platform/qt/http/tests/xmlhttprequest/workers/shared-worker-methods-async-expected.txt: Added. 30 1 31 2011-06-11 Ryosuke Niwa <rniwa@webkit.org> 2 32 -
trunk/LayoutTests/platform/qt/Skipped
r88527 r88612 368 368 http/tests/xmlhttprequest/cross-origin-authorization.html 369 369 http/tests/xmlhttprequest/cross-origin-no-authorization.html 370 http/tests/xmlhttprequest/methods-lower-case.html371 http/tests/xmlhttprequest/methods.html372 370 http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html 373 http/tests/xmlhttprequest/workers/methods-async.html374 http/tests/xmlhttprequest/workers/methods.html375 http/tests/xmlhttprequest/workers/shared-worker-methods-async.html376 371 377 372 # =========================================================================== # -
trunk/Source/WebCore/ChangeLog
r88611 r88612 1 2011-06-12 Robert Hogan <robert@webkit.org> 2 3 Reviewed by Andreas Kling. 4 5 [Qt] Fix methods.html and methods-lower-case.html 6 https://bugs.webkit.org/show_bug.cgi?id=62221 7 8 * platform/network/qt/QNetworkReplyHandler.cpp: 9 (WebCore::QNetworkReplyHandler::clearContentsHeaders): Refactor code from sendNetworkRequest 10 (WebCore::QNetworkReplyHandler::getIODevice): ditto 11 (WebCore::QNetworkReplyHandler::sendNetworkRequest): 12 - Remove ContentType and ContentLength headers from GET, DELETE and HEAD requests since 13 we do not send data with any of these requests. 14 - If a custom HTTP operation contains data, send it. 15 * platform/network/qt/QNetworkReplyHandler.h: 16 1 17 2011-06-11 Michael Saboff <msaboff@apple.com> 2 18 -
trunk/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
r86693 r88612 599 599 } 600 600 601 void QNetworkReplyHandler::clearContentHeaders() 602 { 603 // Clearing Content-length and Content-type of the requests that do not have contents. 604 // This is necessary to ensure POST requests redirected to GETs do not leak metadata 605 // about the POST content to the site they've been redirected to. 606 m_request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant()); 607 m_request.setHeader(QNetworkRequest::ContentLengthHeader, QVariant()); 608 } 609 610 FormDataIODevice* QNetworkReplyHandler::getIODevice(const ResourceRequest& request) 611 { 612 FormDataIODevice* device = new FormDataIODevice(request.httpBody()); 613 // We may be uploading files so prevent QNR from buffering data. 614 m_request.setHeader(QNetworkRequest::ContentLengthHeader, device->getFormDataSize()); 615 m_request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, QVariant(true)); 616 return device; 617 } 618 601 619 QNetworkReply* QNetworkReplyHandler::sendNetworkRequest(QNetworkAccessManager* manager, const ResourceRequest& request) 602 620 { … … 616 634 m_method = QNetworkAccessManager::GetOperation; 617 635 618 if (m_method != QNetworkAccessManager::PostOperation && m_method != QNetworkAccessManager::PutOperation) {619 // clearing Contents-length and Contents-type of the requests that do not have contents.620 m_request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant());621 m_request.setHeader(QNetworkRequest::ContentLengthHeader, QVariant());622 }623 624 636 switch (m_method) { 625 637 case QNetworkAccessManager::GetOperation: 638 clearContentHeaders(); 626 639 return manager->get(m_request); 627 640 case QNetworkAccessManager::PostOperation: { 628 FormDataIODevice* postDevice = new FormDataIODevice(request.httpBody()); 629 // We may be uploading files so prevent QNR from buffering data 630 m_request.setHeader(QNetworkRequest::ContentLengthHeader, postDevice->getFormDataSize()); 631 m_request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, QVariant(true)); 641 FormDataIODevice* postDevice = getIODevice(request); 632 642 QNetworkReply* result = manager->post(m_request, postDevice); 633 643 postDevice->setParent(result); … … 635 645 } 636 646 case QNetworkAccessManager::HeadOperation: 647 clearContentHeaders(); 637 648 return manager->head(m_request); 638 649 case QNetworkAccessManager::PutOperation: { 639 FormDataIODevice* putDevice = new FormDataIODevice(request.httpBody()); 640 // We may be uploading files so prevent QNR from buffering data 641 m_request.setHeader(QNetworkRequest::ContentLengthHeader, putDevice->getFormDataSize()); 642 m_request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, QVariant(true)); 650 FormDataIODevice* putDevice = getIODevice(request); 643 651 QNetworkReply* result = manager->put(m_request, putDevice); 644 652 putDevice->setParent(result); … … 646 654 } 647 655 case QNetworkAccessManager::DeleteOperation: { 656 clearContentHeaders(); 648 657 return manager->deleteResource(m_request); 649 658 } 650 case QNetworkAccessManager::CustomOperation: 651 return manager->sendCustomRequest(m_request, m_resourceHandle->firstRequest().httpMethod().latin1().data()); 659 case QNetworkAccessManager::CustomOperation: { 660 FormDataIODevice* customDevice = getIODevice(request); 661 QNetworkReply* result = manager->sendCustomRequest(m_request, m_resourceHandle->firstRequest().httpMethod().latin1().data(), customDevice); 662 customDevice->setParent(result); 663 return result; 664 } 652 665 case QNetworkAccessManager::UnknownOperation: 653 666 ASSERT_NOT_REACHED(); -
trunk/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h
r85734 r88612 36 36 namespace WebCore { 37 37 38 class FormDataIODevice; 38 39 class ResourceHandle; 39 40 class ResourceRequest; … … 141 142 bool wasAborted() const { return !m_resourceHandle; } 142 143 QNetworkReply* sendNetworkRequest(QNetworkAccessManager*, const ResourceRequest&); 144 FormDataIODevice* getIODevice(const ResourceRequest&); 145 void clearContentHeaders(); 143 146 144 147 OwnPtr<QNetworkReplyWrapper> m_replyWrapper;
Note: See TracChangeset
for help on using the changeset viewer.