/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* * nsIConsoleMessage subclass for representing JavaScript errors and warnings. */ #include "nsISupports.idl" #include "nsIConsoleMessage.idl" %{C++ #include "nsStringGlue.h" // for nsDependentCString %} [scriptable, uuid(361be358-76f0-47aa-b37b-6ad833599e8d)] interface nsIScriptError : nsIConsoleMessage { /** pseudo-flag for default case */ const unsigned long errorFlag = 0x0; /** message is warning */ const unsigned long warningFlag = 0x1; /** exception was thrown for this case - exception-aware hosts can ignore */ const unsigned long exceptionFlag = 0x2; // XXX check how strict is implemented these days. /** error or warning is due to strict option */ const unsigned long strictFlag = 0x4; /** just a log message */ const unsigned long infoFlag = 0x8; /** * The error message without any context/line number information. * * @note nsIConsoleMessage.message will return the error formatted * with file/line information. */ readonly attribute AString errorMessage; readonly attribute AString sourceName; readonly attribute AString sourceLine; readonly attribute uint32_t lineNumber; readonly attribute uint32_t columnNumber; readonly attribute uint32_t flags; /** * Categories I know about - * XUL javascript * content javascript (both of these from nsDocShell, currently) * system javascript (errors in JS components and other system JS) */ readonly attribute string category; /* 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; /* Get the inner window id this was initialized with. Zero will be returned if init() was used instead of initWithWindowID(). */ readonly attribute unsigned long long innerWindowID; readonly attribute boolean isFromPrivateWindow; attribute jsval stack; /** * The name of a template string, as found in js.msg, associated with the * error message. */ attribute AString errorMessageName; void init(in AString message, in AString sourceName, in AString sourceLine, in uint32_t lineNumber, in uint32_t columnNumber, in uint32_t 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. */ void initWithWindowID(in AString message, in AString sourceName, in AString sourceLine, in uint32_t lineNumber, in uint32_t columnNumber, in uint32_t flags, in ACString category, in unsigned long long innerWindowID); %{C++ // This overload allows passing a literal string for category. template<uint32_t N> nsresult InitWithWindowID(const nsAString& message, const nsAString& sourceName, const nsAString& sourceLine, uint32_t lineNumber, uint32_t columnNumber, uint32_t flags, const char (&c)[N], uint64_t aInnerWindowID) { nsDependentCString category(c, N - 1); return InitWithWindowID(message, sourceName, sourceLine, lineNumber, columnNumber, flags, category, aInnerWindowID); } %} }; %{ C++ #define NS_SCRIPTERROR_CID \ { 0x1950539a, 0x90f0, 0x4d22, { 0xb5, 0xaf, 0x71, 0x32, 0x9c, 0x68, 0xfa, 0x35 }} #define NS_SCRIPTERROR_CONTRACTID "@mozilla.org/scripterror;1" %}