Bug 711721 - merge nsIScriptError and nsIScriptError2 interfaces; r=neil, sr=bzbarsky

This commit is contained in:
aceman 2011-12-21 16:51:29 -05:00
parent 5d8935e244
commit 002cb306a6
19 changed files with 85 additions and 124 deletions

View File

@ -337,7 +337,7 @@ var Scratchpad = {
let contentWindow = this.gBrowser.selectedBrowser.contentWindow;
let scriptError = Cc["@mozilla.org/scripterror;1"].
createInstance(Ci.nsIScriptError2);
createInstance(Ci.nsIScriptError);
scriptError.initWithWindowID(ex.message + "\n" + ex.stack, ex.fileName,
"", ex.lineNumber, 0, scriptError.errorFlag,

View File

@ -6527,7 +6527,6 @@ HUDConsoleObserver = {
}
if (!(aSubject instanceof Ci.nsIScriptError) ||
!(aSubject instanceof Ci.nsIScriptError2) ||
!aSubject.outerWindowID) {
return;
}

View File

@ -21,8 +21,7 @@ let TestObserver = {
observe: function test_observe(aSubject)
{
if (!(aSubject instanceof Ci.nsIScriptError) ||
!(aSubject instanceof Ci.nsIScriptError2)) {
if (!(aSubject instanceof Ci.nsIScriptError)) {
return;
}

View File

@ -2831,7 +2831,7 @@ nsContentUtils::ReportToConsole(PRUint32 aErrorFlags,
if (aURI)
aURI->GetSpec(spec);
nsCOMPtr<nsIScriptError2> errorObject =
nsCOMPtr<nsIScriptError> errorObject =
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
@ -2843,8 +2843,7 @@ nsContentUtils::ReportToConsole(PRUint32 aErrorFlags,
innerWindowID);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(errorObject);
return sConsoleService->LogMessage(logError);
return sConsoleService->LogMessage(errorObject);
}
bool

View File

@ -1091,7 +1091,7 @@ nsEventSource::PrintErrorOnConsole(const char *aBundleURI,
do_GetService(NS_CONSOLESERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIScriptError2> errObj(
nsCOMPtr<nsIScriptError> errObj(
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
@ -1106,16 +1106,16 @@ nsEventSource::PrintErrorOnConsole(const char *aBundleURI,
}
NS_ENSURE_SUCCESS(rv, rv);
errObj->InitWithWindowID(message.get(),
mScriptFile.get(),
nsnull,
mScriptLine, 0,
nsIScriptError::errorFlag,
"Event Source", mInnerWindowID);
rv = errObj->InitWithWindowID(message.get(),
mScriptFile.get(),
nsnull,
mScriptLine, 0,
nsIScriptError::errorFlag,
"Event Source", mInnerWindowID);
NS_ENSURE_SUCCESS(rv, rv);
// print the error message directly to the JS console
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(errObj);
rv = console->LogMessage(logError);
rv = console->LogMessage(errObj);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;

View File

@ -127,7 +127,7 @@ nsWebSocket::PrintErrorOnConsole(const char *aBundleURI,
do_GetService(NS_CONSOLESERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIScriptError2> errorObject(
nsCOMPtr<nsIScriptError> errorObject(
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
@ -142,15 +142,15 @@ nsWebSocket::PrintErrorOnConsole(const char *aBundleURI,
}
NS_ENSURE_SUCCESS(rv, rv);
errorObject->InitWithWindowID(message.get(),
NS_ConvertUTF8toUTF16(mScriptFile).get(),
nsnull, mScriptLine, 0,
nsIScriptError::errorFlag, "Web Socket",
mInnerWindowID);
rv = errorObject->InitWithWindowID(message.get(),
NS_ConvertUTF8toUTF16(mScriptFile).get(),
nsnull, mScriptLine, 0,
nsIScriptError::errorFlag, "Web Socket",
mInnerWindowID);
NS_ENSURE_SUCCESS(rv, rv);
// print the error message directly to the JS console
nsCOMPtr<nsIScriptError> logError(do_QueryInterface(errorObject));
rv = console->LogMessage(logError);
rv = console->LogMessage(errorObject);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;

View File

@ -401,7 +401,7 @@ nsXMLDocument::Load(const nsAString& aUrl, bool *aReturn)
nsAutoString error;
error.AssignLiteral("Cross site loading using document.load is no "
"longer supported. Use XMLHttpRequest instead.");
nsCOMPtr<nsIScriptError2> errorObject =
nsCOMPtr<nsIScriptError> errorObject =
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
@ -416,9 +416,8 @@ nsXMLDocument::Load(const nsAString& aUrl, bool *aReturn)
nsCOMPtr<nsIConsoleService> consoleService =
do_GetService(NS_CONSOLESERVICE_CONTRACTID);
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(errorObject);
if (consoleService && logError) {
consoleService->LogMessage(logError);
if (consoleService) {
consoleService->LogMessage(errorObject);
}
return NS_ERROR_DOM_SECURITY_ERR;

View File

@ -1728,7 +1728,7 @@ PrintWarningOnConsole(JSContext *cx, const char *stringBundleProperty)
return;
}
nsCOMPtr<nsIScriptError2> scriptError =
nsCOMPtr<nsIScriptError> scriptError =
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID);
if (!scriptError) {
return;
@ -1761,9 +1761,8 @@ PrintWarningOnConsole(JSContext *cx, const char *stringBundleProperty)
"DOM:HTML",
nsJSUtils::GetCurrentlyRunningCodeInnerWindowID(cx));
if (NS_SUCCEEDED(rv)){
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(scriptError);
consoleService->LogMessage(logError);
if (NS_SUCCEEDED(rv)) {
consoleService->LogMessage(scriptError);
}
}

View File

@ -371,18 +371,10 @@ public:
? "chrome javascript"
: "content javascript";
nsCOMPtr<nsIScriptError2> error2(do_QueryInterface(errorObject));
if (error2) {
rv = error2->InitWithWindowID(mErrorMsg.get(), mFileName.get(),
mSourceLine.get(),
mLineNr, mColumn, mFlags,
category, mInnerWindowID);
} else {
rv = errorObject->Init(mErrorMsg.get(), mFileName.get(),
mSourceLine.get(),
mLineNr, mColumn, mFlags,
category);
}
rv = errorObject->InitWithWindowID(mErrorMsg.get(), mFileName.get(),
mSourceLine.get(),
mLineNr, mColumn, mFlags,
category, mInnerWindowID);
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIConsoleService> consoleService =

View File

@ -1109,36 +1109,31 @@ public:
}
// Otherwise log an error to the error console.
nsCOMPtr<nsIScriptError2> scriptError =
nsCOMPtr<nsIScriptError> scriptError =
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID);
NS_WARN_IF_FALSE(scriptError, "Faild to create script error!");
nsCOMPtr<nsIConsoleMessage> consoleMessage;
NS_WARN_IF_FALSE(scriptError, "Failed to create script error!");
if (scriptError) {
if (NS_SUCCEEDED(scriptError->InitWithWindowID(aMessage.get(),
aFilename.get(),
aLine.get(), aLineNumber,
aColumnNumber, aFlags,
"Web Worker",
aInnerWindowId))) {
consoleMessage = do_QueryInterface(scriptError);
NS_ASSERTION(consoleMessage, "This should never fail!");
}
else {
if (NS_FAILED(scriptError->InitWithWindowID(aMessage.get(),
aFilename.get(),
aLine.get(), aLineNumber,
aColumnNumber, aFlags,
"Web Worker",
aInnerWindowId))) {
NS_WARNING("Failed to init script error!");
scriptError = nsnull;
}
}
nsCOMPtr<nsIConsoleService> consoleService =
do_GetService(NS_CONSOLESERVICE_CONTRACTID);
NS_WARN_IF_FALSE(consoleService, "Faild to get console service!");
NS_WARN_IF_FALSE(consoleService, "Failed to get console service!");
bool logged = false;
if (consoleService) {
if (consoleMessage) {
if (NS_SUCCEEDED(consoleService->LogMessage(consoleMessage))) {
if (scriptError) {
if (NS_SUCCEEDED(consoleService->LogMessage(scriptError))) {
logged = true;
}
else {

View File

@ -130,23 +130,21 @@ Decoder::Finish()
// Log data errors to the error console
nsCOMPtr<nsIConsoleService> consoleService =
do_GetService(NS_CONSOLESERVICE_CONTRACTID);
nsCOMPtr<nsIScriptError2> errorObject =
nsCOMPtr<nsIScriptError> errorObject =
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID);
if (consoleService && errorObject && !HasDecoderError()) {
nsAutoString msg(NS_LITERAL_STRING("Image corrupt or truncated: ") +
NS_ConvertASCIItoUTF16(mImage.GetURIString()));
errorObject->InitWithWindowID
(msg.get(),
NS_ConvertUTF8toUTF16(mImage.GetURIString()).get(),
nsnull,
0, 0, nsIScriptError::errorFlag,
"Image", mImage.InnerWindowID()
);
nsCOMPtr<nsIScriptError> error = do_QueryInterface(errorObject);
consoleService->LogMessage(error);
if (NS_SUCCEEDED(errorObject->InitWithWindowID(
msg.get(),
NS_ConvertUTF8toUTF16(mImage.GetURIString()).get(),
nsnull, 0, 0, nsIScriptError::errorFlag,
"Image", mImage.InnerWindowID()
))) {
consoleService->LogMessage(errorObject);
}
}
// If we only have a data error, see if things are worth salvaging

View File

@ -43,7 +43,7 @@
#include "nsISupports.idl"
#include "nsIConsoleMessage.idl"
[scriptable, uuid(537ff844-c325-4047-92f5-e1c292d108bc)]
[scriptable, uuid(c6dd877a-87b6-47cc-968d-90f4514ec65f)]
interface nsIScriptError : nsIConsoleMessage
{
/** pseudo-flag for default case */
@ -90,23 +90,6 @@ interface nsIScriptError : nsIConsoleMessage
*/
readonly attribute long long timeStamp;
void init(in wstring message,
in wstring sourceName,
in wstring sourceLine,
in PRUint32 lineNumber,
in PRUint32 columnNumber,
in PRUint32 flags,
in string category);
AUTF8String toString();
};
/**
* An interface that nsIScriptError objects can implement to allow
* them to be initialized with a window id.
*/
[scriptable, uuid(444c5e66-a85d-4a3b-83ce-4c71882b09a3)]
interface nsIScriptError2 : nsISupports {
/* Get the window id this was initialized with. Zero will be
returned if init() was used instead of initWithWindowID(). */
readonly attribute unsigned long long outerWindowID;
@ -115,6 +98,14 @@ interface nsIScriptError2 : nsISupports {
returned if init() was used instead of initWithWindowID(). */
readonly attribute unsigned long long innerWindowID;
void init(in wstring message,
in wstring sourceName,
in wstring sourceLine,
in PRUint32 lineNumber,
in PRUint32 columnNumber,
in PRUint32 flags,
in string category);
/* This should be called instead of nsIScriptError.init to
initialize with a window id. The window id should be for the
inner window associated with this error. */
@ -126,6 +117,8 @@ interface nsIScriptError2 : nsISupports {
in PRUint32 flags,
in string category,
in unsigned long long innerWindowID);
AUTF8String toString();
};
%{ C++

View File

@ -2692,7 +2692,7 @@ nsXPCComponents_Utils::ReportError(const JS::Value &error, JSContext *cx)
nsCOMPtr<nsIConsoleService> console(do_GetService(NS_CONSOLESERVICE_CONTRACTID));
nsCOMPtr<nsIScriptError2> scripterr(do_CreateInstance(NS_SCRIPTERROR_CONTRACTID));
nsCOMPtr<nsIScriptError> scripterr(do_CreateInstance(NS_SCRIPTERROR_CONTRACTID));
if (!scripterr || !console)
return NS_OK;
@ -2715,8 +2715,7 @@ nsXPCComponents_Utils::ReportError(const JS::Value &error, JSContext *cx)
column, err->flags, "XPConnect JavaScript", innerWindowID);
NS_ENSURE_SUCCESS(rv, NS_OK);
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(scripterr);
console->LogMessage(logError);
console->LogMessage(scripterr);
return NS_OK;
}
@ -2748,8 +2747,7 @@ nsXPCComponents_Utils::ReportError(const JS::Value &error, JSContext *cx)
nsnull, lineNo, 0, 0, "XPConnect JavaScript", innerWindowID);
NS_ENSURE_SUCCESS(rv, NS_OK);
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(scripterr);
console->LogMessage(logError);
console->LogMessage(scripterr);
return NS_OK;
}

View File

@ -1133,14 +1133,12 @@ nsXPCWrappedJSClass::CheckForException(XPCCallContext & ccx,
rv = location->GetFilename(getter_Copies(sourceName));
}
nsCOMPtr<nsIScriptError2> scriptError2 =
do_QueryInterface(scriptError);
rv = scriptError2->InitWithWindowID(newMessage.get(),
NS_ConvertASCIItoUTF16(sourceName).get(),
nsnull,
lineNumber, 0, 0,
"XPConnect JavaScript",
nsJSUtils::GetCurrentlyRunningCodeInnerWindowID(cx));
rv = scriptError->InitWithWindowID(newMessage.get(),
NS_ConvertASCIItoUTF16(sourceName).get(),
nsnull,
lineNumber, 0, 0,
"XPConnect JavaScript",
nsJSUtils::GetCurrentlyRunningCodeInnerWindowID(cx));
if (NS_FAILED(rv))
scriptError = nsnull;
}

View File

@ -46,8 +46,7 @@
#include "nsGlobalWindow.h"
#include "nsPIDOMWindow.h"
NS_IMPL_THREADSAFE_ISUPPORTS3(nsScriptError, nsIConsoleMessage, nsIScriptError,
nsIScriptError2)
NS_IMPL_THREADSAFE_ISUPPORTS2(nsScriptError, nsIConsoleMessage, nsIScriptError)
nsScriptError::nsScriptError()
: mMessage(),

View File

@ -3936,8 +3936,7 @@ xpc_InstallJSDebuggerKeywordHandler(JSRuntime* rt);
// Definition of nsScriptError, defined here because we lack a place to put
// XPCOM objects associated with the JavaScript engine.
class nsScriptError : public nsIScriptError,
public nsIScriptError2 {
class nsScriptError : public nsIScriptError {
public:
nsScriptError();
@ -3948,7 +3947,6 @@ public:
NS_DECL_ISUPPORTS
NS_DECL_NSICONSOLEMESSAGE
NS_DECL_NSISCRIPTERROR
NS_DECL_NSISCRIPTERROR2
private:
nsString mMessage;

View File

@ -424,7 +424,7 @@ nsCSSScanner::OutputError()
}
nsresult rv;
nsCOMPtr<nsIScriptError2> errorObject =
nsCOMPtr<nsIScriptError> errorObject =
do_CreateInstance(gScriptErrorFactory, &rv);
if (NS_SUCCEEDED(rv)) {
@ -437,8 +437,7 @@ nsCSSScanner::OutputError()
"CSS Parser",
mInnerWindowID);
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(errorObject);
gConsoleService->LogMessage(logError);
gConsoleService->LogMessage(errorObject);
}
}
}

View File

@ -797,7 +797,7 @@ nsUserFontSet::LogMessage(gfxProxyFontEntry *aProxy,
NS_ENSURE_SUCCESS(rv, rv);
}
nsCOMPtr<nsIScriptError2> scriptError =
nsCOMPtr<nsIScriptError> scriptError =
do_CreateInstance(NS_SCRIPTERROR_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
@ -809,11 +809,8 @@ nsUserFontSet::LogMessage(gfxProxyFontEntry *aProxy,
aFlags, // flags
"CSS Loader", // category (make separate?)
innerWindowID);
if (NS_SUCCEEDED(rv)){
nsCOMPtr<nsIScriptError> logError = do_QueryInterface(scriptError);
if (logError) {
console->LogMessage(logError);
}
if (NS_SUCCEEDED(rv)) {
console->LogMessage(scriptError);
}
return NS_OK;

View File

@ -947,13 +947,12 @@ nsExpatDriver::HandleError()
nsCOMPtr<nsIScriptError> serr(do_CreateInstance(NS_SCRIPTERROR_CONTRACTID));
nsresult rv = NS_ERROR_FAILURE;
if (serr) {
nsCOMPtr<nsIScriptError2> serr2(do_QueryInterface(serr));
rv = serr2->InitWithWindowID(description.get(),
mURISpec.get(),
mLastLine.get(),
lineNumber, colNumber,
nsIScriptError::errorFlag, "malformed-xml",
mInnerWindowID);
rv = serr->InitWithWindowID(description.get(),
mURISpec.get(),
mLastLine.get(),
lineNumber, colNumber,
nsIScriptError::errorFlag, "malformed-xml",
mInnerWindowID);
}
// If it didn't initialize, we can't do any logging.