18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2001 Peter Kelly (pmk@post.com) 4231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Lesser General Public 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Lesser General Public License for more details. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Lesser General Public 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License along with this library; if not, write to the Free Software 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef Debugger_h 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define Debugger_h 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 25231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <wtf/HashSet.h> 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace JSC { 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class DebuggerCallFrame; 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ExecState; 31231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class JSGlobalData; 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class JSGlobalObject; 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class JSValue; 34ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch class SourceProvider; 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class UString; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Debugger { 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~Debugger(); 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void attach(JSGlobalObject*); 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void detach(JSGlobalObject*); 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 44ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch virtual void sourceParsed(ExecState*, SourceProvider*, int errorLineNumber, const UString& errorMessage) = 0; 45d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void exception(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber, bool hasHandler) = 0; 46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void atStatement(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0; 47231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void callEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0; 48231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void returnEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void willExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0; 51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void didExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0; 52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void didReachBreakpoint(const DebuggerCallFrame&, intptr_t sourceID, int lineNumber) = 0; 53231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void recompileAllJSFunctions(JSGlobalData*); 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project private: 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HashSet<JSGlobalObject*> m_globalObjects; 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // This function exists only for backwards compatibility with existing WebScriptDebugger clients. 615f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian JSValue evaluateInGlobalCallFrame(const UString&, JSValue& exception, JSGlobalObject*); 62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace JSC 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // Debugger_h 66