/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * The contents of this file are subject to the Netscape Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s): 
 */

/*
 * nsIConsole message subclass for representing JavaScript errors and warnings.
 */


#include "nsISupports.idl"
#include "nsIConsoleMessage.idl"

[scriptable, uuid(fc9e5a94-1dd1-11b2-888b-d8907b2c6996)]
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;

    readonly attribute wstring sourceName;
    readonly attribute wstring sourceLine;
    readonly attribute PRUint32 lineNumber;
    readonly attribute PRUint32 columnNumber;
    readonly attribute PRUint32 flags;

    /**
     * Categories I know about -
     * XUL javascript
     * content javascript (both of these from nsDocShell, currently)
     * component javascript (errors in JS components)
     */
    readonly attribute string category;

    void init(in wstring message,
              in wstring sourceName,
              in wstring sourceLine,
              in PRUint32 lineNumber,
              in PRUint32 columnNumber,
              in PRUint32 flags,
              in string category);

    string toString();
};

%{ C++
#define NS_SCRIPTERROR_CLASSNAME "Script Error"

#define NS_SCRIPTERROR_CID \
{ 0xe38e53b9, 0x5bb0, 0x456a, { 0xb5, 0x53, 0x57, 0x93, 0x70, 0xcb, 0x15, 0x67 }}

#define NS_SCRIPTERROR_CONTRACTID "@mozilla.org/scripterror;1"
%}
