Support HTML documents in XHR.responseXML
https://bugs.webkit.org/show_bug.cgi?id=74626

Latest W3C XHR spec details for the responseXML attribute:
http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-responsexml-attribute
http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#document-response-entity-body

XHR.responseXML was not compliant per the latest editor's draft of the XHR spec.
The following compliance issue have been corrected:
  - A responseType of "text" should disallow access to responseXML by throwing an InvalidState exception.
  - When the error flag is toggled, responseXML should return "null" immediately and not attempt to create a new Document.
  - responseXML should return a valid HTML document when the MIME type is "text/html", but only when the caller has
    explicitly set responseType to "document".

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Tests: fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-quirks.html
       fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-strict.html
       fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype.html
       fast/xmlhttprequest/xmlhttprequest-responseXML-invalid-xml.html
       fast/xmlhttprequest/xmlhttprequest-responseXML-xml-document-responsetype.html
       fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype.html

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::responseXML):
(WebCore::XMLHttpRequest::clearResponseBuffers):
* xml/XMLHttpRequest.h: Rename m_responseXML to m_responseDocument
(WebCore::XMLHttpRequest::optionalResponseXML):

LayoutTests:

* fast/frames/iframe-reparenting.html:
* fast/xmlhttprequest/resources/xmlhttprequest-get-invalid-data.xml: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-quirks-expected.txt: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-quirks.html: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-strict-expected.txt: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-strict.html: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype-expected.txt: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype.html: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-invalid-xml-expected.txt: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-invalid-xml.html: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-xml-document-responsetype-expected.txt: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-xml-document-responsetype.html: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype-expected.txt: Added.
* fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@103106 268f45cc-cd09-0410-ab3c-d52691b4dbfc
18 files changed