mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 13:25:37 +00:00
Bug 100106, XMLHttpRequest.responseText empty if XML parsing error. r=harishd, sr=vidur.
This commit is contained in:
parent
5168e369db
commit
c7f327d9d9
@ -806,12 +806,7 @@ nsXMLHttpRequest::OnDataAvailable(nsIRequest *request, nsISupports *ctxt, nsIInp
|
||||
NS_ABORT_IF_FALSE(mContext.get() == ctxt,"start context different from OnDataAvailable context");
|
||||
|
||||
PRUint32 totalRead;
|
||||
nsresult result = inStr->ReadSegments(nsXMLHttpRequest::StreamReaderFunc, (void*)this, count, &totalRead);
|
||||
if (NS_FAILED(result)) {
|
||||
mResponseBody.Truncate();
|
||||
}
|
||||
|
||||
return result;
|
||||
return inStr->ReadSegments(nsXMLHttpRequest::StreamReaderFunc, (void*)this, count, &totalRead);
|
||||
}
|
||||
|
||||
/* void onStartRequest (in nsIRequest request, in nsISupports ctxt); */
|
||||
|
10
extensions/xmlextras/tests/invalid.xml
Normal file
10
extensions/xmlextras/tests/invalid.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE doc [
|
||||
<!ELEMENT d (p)>
|
||||
<!ATTLIST d id ID #IMPLIED>
|
||||
<!ELEMENT p (#PCDATA)>
|
||||
]>
|
||||
<doc>
|
||||
<foo xmlns="foobar">One</foo> <x:bar xmlns:x="barfoo">Two</x:bar>
|
||||
<d id="id3">Three</a></d>
|
||||
</doc>
|
120
extensions/xmlextras/tests/xgetinvalid.html
Normal file
120
extensions/xmlextras/tests/xgetinvalid.html
Normal file
@ -0,0 +1,120 @@
|
||||
<!--
|
||||
- The contents of this file are subject to the Mozilla Public
|
||||
- License Version 1.1 (the "License"); you may not use this file
|
||||
- except in compliance with the License. You may obtain a copy of
|
||||
- the License at http://www.mozilla.org/MPL/
|
||||
-
|
||||
- Software distributed under the License is distributed on an "AS
|
||||
- IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
- implied. See the License for the specific language governing
|
||||
- rights and limitations under the License.
|
||||
-
|
||||
- The Original Code is Mozilla Test Cases.
|
||||
-
|
||||
- The Initial Developer of the Original Code is Netscape Communications
|
||||
- Corp. Portions created by Netscape Communications Corp. are
|
||||
- Copyright (C) 2001 Netscape Communications Corp. All
|
||||
- Rights Reserved.
|
||||
-
|
||||
- Contributor(s):
|
||||
-->
|
||||
<html>
|
||||
<head><title>Asynchronous GET test</title>
|
||||
<style type="text/css">
|
||||
.box {
|
||||
display: box;
|
||||
border: 1px solid black;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.boxheader {
|
||||
font-weight: bold;
|
||||
color: maroon;
|
||||
}
|
||||
pre {
|
||||
margin-left: 2em;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
var p;
|
||||
try {
|
||||
p = new XMLHttpRequest();
|
||||
} catch (e) {
|
||||
p = new ActiveXObject("Msxml2.XMLHTTP");
|
||||
}
|
||||
|
||||
var interactiveCount = 0;
|
||||
|
||||
function myfunc()
|
||||
{
|
||||
if (p.readyState == 3) {
|
||||
interactiveCount++;
|
||||
}
|
||||
if (p.readyState != 4)
|
||||
return;
|
||||
|
||||
document.getElementById("id1").firstChild.nodeValue = p.responseText;
|
||||
if (p.responseXML) {
|
||||
var str;
|
||||
try {
|
||||
var s = new XMLSerializer();
|
||||
var d = p.responseXML;
|
||||
str = s.serializeToString(d);
|
||||
} catch (e) {
|
||||
str = "@@TODO@@";
|
||||
}
|
||||
document.getElementById("id2").firstChild.nodeValue = str;
|
||||
}
|
||||
document.getElementById("id3").firstChild.nodeValue = p.getAllResponseHeaders();
|
||||
document.getElementById("id4").firstChild.nodeValue = p.status;
|
||||
document.getElementById("id5").firstChild.nodeValue = p.statusText;
|
||||
document.getElementById("id6").firstChild.nodeValue = p.readyState;
|
||||
document.getElementById("id7").firstChild.nodeValue = interactiveCount;
|
||||
}
|
||||
|
||||
// p.onload would also work in Mozilla
|
||||
p.onreadystatechange = myfunc;
|
||||
|
||||
try {
|
||||
// Needed for Mozilla if local file tries to access an http URL
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
p.open("GET", "invalid.xml");
|
||||
|
||||
function aLittleDelay()
|
||||
{
|
||||
p.send(null);
|
||||
}
|
||||
|
||||
setTimeout(aLittleDelay,0);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Asynchronous GET test</h1>
|
||||
|
||||
<div class="box"><span class="boxheader">responseText</span>
|
||||
<pre id="id1">@@No result@@</pre>
|
||||
</div>
|
||||
<div class="box"><span class="boxheader">responseXML serialized</span>
|
||||
<pre id="id2">@@No result@@</pre>
|
||||
</div>
|
||||
<div class="box"><span class="boxheader">getAllResponseHeaders()</span>
|
||||
<pre id="id3">@@No result@@</pre>
|
||||
</div>
|
||||
<div class="box"><span class="boxheader">status</span>
|
||||
<pre id="id4">@@No result@@</pre>
|
||||
</div>
|
||||
<div class="box"><span class="boxheader">statusText</span>
|
||||
<pre id="id5">@@No result@@</pre>
|
||||
</div>
|
||||
<div class="box"><span class="boxheader">readyState</span>
|
||||
<pre id="id6">@@No result@@</pre>
|
||||
</div>
|
||||
<div class="box"><span class="boxheader"># of times onreadystatechanged handler called with INTERACTIVE status</span>
|
||||
<pre id="id7">@@No result@@</pre>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user