Fixing bug 57534. document.open() is defined to not return anything in the DOM spec but for backwards compatibility it needs to return the document itself. r=blakeross@telocity.com, sr=brendan@mozilla.org

git-svn-id: svn://10.0.0.236/trunk@84254 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
jst%netscape.com
2001-01-01 20:54:38 +00:00
parent ec4dc8cd21
commit ffe4f795a3
5 changed files with 46 additions and 24 deletions

View File

@@ -2157,7 +2157,8 @@ nsHTMLDocument::Open()
}
NS_IMETHODIMP
nsHTMLDocument::Open(JSContext *cx, jsval *argv, PRUint32 argc)
nsHTMLDocument::Open(JSContext *cx, jsval *argv, PRUint32 argc,
nsIDOMDocument** aReturn)
{
nsresult result = NS_OK;
nsIURI* sourceURL;
@@ -2175,6 +2176,8 @@ nsHTMLDocument::Open(JSContext *cx, jsval *argv, PRUint32 argc)
NS_RELEASE(sourceURL);
}
QueryInterface(NS_GET_IID(nsIDOMDocument), (void **)aReturn);
return result;
}
@@ -2183,7 +2186,9 @@ nsHTMLDocument::Open(JSContext *cx, jsval *argv, PRUint32 argc)
NS_IMETHODIMP
nsHTMLDocument::Clear(JSContext* cx, jsval* argv, PRUint32 argc)
{
return Open(cx, argv, argc);
nsCOMPtr<nsIDOMDocument> doc;
return Open(cx, argv, argc, getter_AddRefs(doc));
}
NS_IMETHODIMP
@@ -2294,22 +2299,26 @@ nsHTMLDocument::ScriptWriteCommon(JSContext *cx,
}
}
if (nsnull == mParser) {
result = Open(cx, argv, argc);
if (NS_OK != result) {
if (!mParser) {
nsCOMPtr<nsIDOMDocument> doc;
result = Open(cx, argv, argc, getter_AddRefs(doc));
if (NS_FAILED(result)) {
return result;
}
}
if (argc > 0) {
PRUint32 index;
nsAutoString str;
str.Truncate();
for (index = 0; index < argc; index++) {
JSString *jsstring = JS_ValueToString(cx, argv[index]);
if (nsnull != jsstring) {
str.Append(NS_REINTERPRET_CAST(const PRUnichar*, JS_GetStringChars(jsstring)), JS_GetStringLength(jsstring));
if (jsstring) {
str.Append(NS_REINTERPRET_CAST(const PRUnichar*,
JS_GetStringChars(jsstring)),
JS_GetStringLength(jsstring));
}
}