Reviewed by Eric Seidel.
[WebKit-https.git] / Source / JavaScriptCore / debugger / Debugger.h
1 /*
2  *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
3  *  Copyright (C) 2001 Peter Kelly (pmk@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 JS_EXPORT_PRIVATE 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