diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp index 7fa4b67037b..2c86a332c16 100644 --- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp @@ -1812,8 +1812,17 @@ nsresult HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode) } jsval val; - PRBool result = context->EvaluateString(script, len, &val); + nsIURL* mDocURL = mDocument->GetDocumentURL(); + const char* mURL; + if (mDocURL) { + mURL = mDocURL->GetSpec(); + } + PRUint32 mLineNo = (PRUint32)aNode.GetSourceLineNumber(); + + PRBool result = context->EvaluateString(script, len, mURL, mLineNo, &val); + NS_IF_RELEASE(mDocURL); + if (PR_FALSE == result) { rv = NS_ERROR_FAILURE; } diff --git a/mozilla/dom/public/nsIScriptContext.h b/mozilla/dom/public/nsIScriptContext.h index 3d2c1b400a1..6ab3c4448f4 100644 --- a/mozilla/dom/public/nsIScriptContext.h +++ b/mozilla/dom/public/nsIScriptContext.h @@ -51,6 +51,8 @@ public: **/ virtual PRBool EvaluateString(const char *aScript, PRUint32 aScriptSize, + const char *aURL, + PRUint32 aLineNo, jsval *aRetValue) = 0; /** diff --git a/mozilla/dom/src/base/nsJSEnvironment.cpp b/mozilla/dom/src/base/nsJSEnvironment.cpp index 99ced333e3d..b552a6704e0 100644 --- a/mozilla/dom/src/base/nsJSEnvironment.cpp +++ b/mozilla/dom/src/base/nsJSEnvironment.cpp @@ -38,7 +38,8 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); void PR_CALLBACK NS_ScriptErrorReporter(JSContext *cx, const char *message, JSErrorReport *report) { - printf("Script error: %s\n", message); + printf("JavaScript error: %s\nURL :%s, LineNo :%u\nLine text: '%s', Error text: '%s'\n", message, + report->filename, report->lineno, report->linebuf, report->tokenptr); } nsJSContext::nsJSContext(JSRuntime *aRuntime) @@ -56,15 +57,17 @@ nsJSContext::~nsJSContext() NS_IMPL_ISUPPORTS(nsJSContext, kIScriptContextIID); PRBool nsJSContext::EvaluateString(const char *aScript, - PRUint32 aScriptSize, + PRUint32 aScriptSize, + const char *aURL, + PRUint32 aLineNo, jsval *aRetValue) { return ::JS_EvaluateScript(mContext, JS_GetGlobalObject(mContext), aScript, aScriptSize, - NULL, - 0, + aURL, + aLineNo, aRetValue); } diff --git a/mozilla/dom/src/base/nsJSEnvironment.h b/mozilla/dom/src/base/nsJSEnvironment.h index e7d36d6be5a..7330b88cdae 100644 --- a/mozilla/dom/src/base/nsJSEnvironment.h +++ b/mozilla/dom/src/base/nsJSEnvironment.h @@ -32,6 +32,8 @@ public: virtual PRBool EvaluateString(const char *aScript, PRUint32 aScriptSize, + const char *aURL, + PRUint32 aLineNo, jsval *aRetValue); virtual nsIScriptGlobalObject* GetGlobalObject(); virtual void* GetNativeContext(); diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp index 7fa4b67037b..2c86a332c16 100644 --- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp @@ -1812,8 +1812,17 @@ nsresult HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode) } jsval val; - PRBool result = context->EvaluateString(script, len, &val); + nsIURL* mDocURL = mDocument->GetDocumentURL(); + const char* mURL; + if (mDocURL) { + mURL = mDocURL->GetSpec(); + } + PRUint32 mLineNo = (PRUint32)aNode.GetSourceLineNumber(); + + PRBool result = context->EvaluateString(script, len, mURL, mLineNo, &val); + NS_IF_RELEASE(mDocURL); + if (PR_FALSE == result) { rv = NS_ERROR_FAILURE; } diff --git a/mozilla/webshell/tests/viewer/JSConsole.cpp b/mozilla/webshell/tests/viewer/JSConsole.cpp index 6f5620f9bbf..a965b9f8def 100644 --- a/mozilla/webshell/tests/viewer/JSConsole.cpp +++ b/mozilla/webshell/tests/viewer/JSConsole.cpp @@ -866,6 +866,8 @@ void JSConsole::EvaluateText(UINT aStartSel, UINT aEndSel) jsval returnValue; if (mContext->EvaluateString(cleanBuffer, strlen(cleanBuffer), + nsnull, + 0, &returnValue)) { // output the result on the console and on the edit area CHAR result[128];