Home | History | Annotate | Download | only in debugger
      1 /*
      2  *  Copyright (C) 1999-2001 Harri Porten (porten (at) kde.org)
      3  *  Copyright (C) 2001 Peter Kelly (pmk (at) post.com)
      4  *  Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
      5  *
      6  *  This library is free software; you can redistribute it and/or
      7  *  modify it under the terms of the GNU Lesser General Public
      8  *  License as published by the Free Software Foundation; either
      9  *  version 2 of the License, or (at your option) any later version.
     10  *
     11  *  This library is distributed in the hope that it will be useful,
     12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14  *  Lesser General Public License for more details.
     15  *
     16  *  You should have received a copy of the GNU Lesser General Public
     17  *  License along with this library; if not, write to the Free Software
     18  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     19  *
     20  */
     21 
     22 #ifndef Debugger_h
     23 #define Debugger_h
     24 
     25 #include <wtf/HashSet.h>
     26 
     27 namespace JSC {
     28 
     29     class DebuggerCallFrame;
     30     class ExecState;
     31     class JSGlobalData;
     32     class JSGlobalObject;
     33     class JSValue;
     34     class SourceProvider;
     35     class UString;
     36 
     37     class Debugger {
     38     public:
     39         virtual ~Debugger();
     40 
     41         void attach(JSGlobalObject*);
     42         virtual void detach(JSGlobalObject*);
     43 
     44         virtual void sourceParsed(ExecState*, SourceProvider*, int errorLineNumber, const UString& errorMessage) = 0;
     45         virtual void exception(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber, bool hasHandler) = 0;
     46         virtual void atStatement(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
     47         virtual void callEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
     48         virtual void returnEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
     49 
     50         virtual void willExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
     51         virtual void didExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
     52         virtual void didReachBreakpoint(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0;
     53 
     54         void recompileAllJSFunctions(JSGlobalData*);
     55 
     56     private:
     57         HashSet<JSGlobalObject*> m_globalObjects;
     58     };
     59 
     60     // This function exists only for backwards compatibility with existing WebScriptDebugger clients.
     61     JSValue evaluateInGlobalCallFrame(const UString&, JSValue& exception, JSGlobalObject*);
     62 
     63 } // namespace JSC
     64 
     65 #endif // Debugger_h
     66