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];