WebCore:
2008-07-29 Sam Weinig <sam@webkit.org>
Reviewed by Anders Carlsson.
<rdar://problem/6084585> Investigate upload progress events.
- Add progress notifications for data being sent via a ResourceHandle.
- Add XMLHttpRequestUpload support.
Upload notifications only work on the Mac right now as the CFNetwork API
on windows does not expose enough information.
Tests: http/tests/xmlhttprequest/upload-onload-event.html
http/tests/xmlhttprequest/upload-onloadstart-event.html
http/tests/xmlhttprequest/upload-onprogress-event.html
http/tests/xmlhttprequest/upload-progress-events.html
* DerivedSources.make:
* GNUmakefile.am:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* WebCoreSources.bkl:
* bindings/js/JSEventTargetBase.cpp:
(WebCore::toJS):
* bindings/js/JSXMLHttpRequestCustom.cpp:
(WebCore::JSXMLHttpRequest::mark):
* bindings/js/JSXMLHttpRequestUploadCustom.cpp: Added.
(WebCore::JSXMLHttpRequestUpload::mark):
(WebCore::JSXMLHttpRequestUpload::onabort):
(WebCore::JSXMLHttpRequestUpload::setOnabort):
(WebCore::JSXMLHttpRequestUpload::onerror):
(WebCore::JSXMLHttpRequestUpload::setOnerror):
(WebCore::JSXMLHttpRequestUpload::onload):
(WebCore::JSXMLHttpRequestUpload::setOnload):
(WebCore::JSXMLHttpRequestUpload::onloadstart):
(WebCore::JSXMLHttpRequestUpload::setOnloadstart):
(WebCore::JSXMLHttpRequestUpload::onprogress):
(WebCore::JSXMLHttpRequestUpload::setOnprogress):
(WebCore::JSXMLHttpRequestUpload::addEventListener):
(WebCore::JSXMLHttpRequestUpload::removeEventListener):
(WebCore::JSXMLHttpRequestUpload::dispatchEvent):
* dom/EventTarget.cpp:
(WebCore::EventTarget::toXMLHttpRequestUpload):
* dom/EventTarget.h:
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::didSendData):
* loader/ResourceLoader.h:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didSendData):
* loader/SubresourceLoader.h:
* loader/SubresourceLoaderClient.h:
(WebCore::SubresourceLoaderClient::didSendData):
* page/DOMWindow.idl:
* platform/network/FormData.cpp:
(WebCore::FormData::FormData):
* platform/network/FormData.h:
(WebCore::FormData::alwaysStream):
(WebCore::FormData::setAlwaysStream):
* platform/network/ResourceHandleClient.h:
(WebCore::ResourceHandleClient::didSendData):
* platform/network/mac/FormDataStreamMac.h:
* platform/network/mac/FormDataStreamMac.mm:
(WebCore::getStreamFormDataMap):
(WebCore::getStreamResourceHandleMap):
(WebCore::associateStreamWithResourceHandle):
(WebCore::disassociateStreamWithResourceHandle):
(WebCore::DidSendDataCallbackData::DidSendDataCallbackData):
(WebCore::performDidSendDataCallback):
(WebCore::formCreate):
(WebCore::formFinalize):
(WebCore::formRead):
(WebCore::setHTTPBody):
(WebCore::httpBodyFromStream):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::cancel):
(-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]):
(-[WebCoreResourceHandleAsDelegate connection:didFailWithError:]):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::XMLHttpRequest):
(WebCore::XMLHttpRequest::~XMLHttpRequest):
(WebCore::XMLHttpRequest::upload):
(WebCore::XMLHttpRequest::open):
(WebCore::XMLHttpRequest::send):
(WebCore::XMLHttpRequest::createRequest):
(WebCore::XMLHttpRequest::abort):
(WebCore::XMLHttpRequest::networkError):
(WebCore::XMLHttpRequest::abortError):
(WebCore::XMLHttpRequest::didSendData):
* xml/XMLHttpRequest.h:
(WebCore::XMLHttpRequest::optionalUpload):
* xml/XMLHttpRequest.idl:
* xml/XMLHttpRequestUpload.cpp: Added.
(WebCore::XMLHttpRequestUpload::XMLHttpRequestUpload):
(WebCore::XMLHttpRequestUpload::addEventListener):
(WebCore::XMLHttpRequestUpload::removeEventListener):
(WebCore::XMLHttpRequestUpload::dispatchEvent):
(WebCore::XMLHttpRequestUpload::dispatchXMLHttpRequestProgressEvent):
(WebCore::XMLHttpRequestUpload::dispatchAbortEvent):
(WebCore::XMLHttpRequestUpload::dispatchErrorEvent):
(WebCore::XMLHttpRequestUpload::dispatchLoadEvent):
(WebCore::XMLHttpRequestUpload::dispatchLoadStartEvent):
(WebCore::XMLHttpRequestUpload::dispatchProgressEvent):
* xml/XMLHttpRequestUpload.h: Added.
(WebCore::XMLHttpRequestUpload::create):
(WebCore::XMLHttpRequestUpload::toXMLHttpRequestUpload):
(WebCore::XMLHttpRequestUpload::associatedXMLHttpRequest):
(WebCore::XMLHttpRequestUpload::disconnectXMLHttpRequest):
(WebCore::XMLHttpRequestUpload::setOnAbortListener):
(WebCore::XMLHttpRequestUpload::onAbortListener):
(WebCore::XMLHttpRequestUpload::setOnErrorListener):
(WebCore::XMLHttpRequestUpload::onErrorListener):
(WebCore::XMLHttpRequestUpload::setOnLoadListener):
(WebCore::XMLHttpRequestUpload::onLoadListener):
(WebCore::XMLHttpRequestUpload::setOnLoadStartListener):
(WebCore::XMLHttpRequestUpload::onLoadStartListener):
(WebCore::XMLHttpRequestUpload::setOnProgressListener):
(WebCore::XMLHttpRequestUpload::onProgressListener):
(WebCore::XMLHttpRequestUpload::eventListeners):
(WebCore::XMLHttpRequestUpload::refEventTarget):
(WebCore::XMLHttpRequestUpload::derefEventTarget):
* xml/XMLHttpRequestUpload.idl: Added.
LayoutTests:
2008-07-29 Sam Weinig <sam@webkit.org>
Reviewed by Anders Carlsson.
<rdar://problem/6084585> Investigate upload progress events
* fast/dom/Window/window-properties-expected.txt:
* http/tests/xmlhttprequest/upload-onload-event-expected.txt: Added.
* http/tests/xmlhttprequest/upload-onload-event.html: Added.
* http/tests/xmlhttprequest/upload-onloadstart-event-expected.txt: Added.
* http/tests/xmlhttprequest/upload-onloadstart-event.html: Added.
* http/tests/xmlhttprequest/upload-onprogress-event-expected.txt: Added.
* http/tests/xmlhttprequest/upload-onprogress-event.html: Added.
* http/tests/xmlhttprequest/upload-progress-events-expected.txt: Added.
* http/tests/xmlhttprequest/upload-progress-events.html: Added.
* platform/win/Skipped: Skip new tests on windows where the feature is not
implemented yet.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@35435 268f45cc-cd09-0410-ab3c-d52691b4dbfc
41 files changed