From 21b60ac3f106c2262e53e83acdeca36422f4e439 Mon Sep 17 00:00:00 2001 From: "rginda%netscape.com" Date: Mon, 16 Apr 2001 23:43:09 +0000 Subject: [PATCH] - not built - fixed NS_IF_ADDREF(aHook)s added more hook attributes git-svn-id: svn://10.0.0.236/trunk@92462 18797224-902f-48f8-a5cc-f745e15eee43 --- .../venkman/idl/jsdIDebuggerService.idl | 26 +++--- .../venkman/src/jsdDebuggerService.cpp | 85 +++++++++++++++---- .../venkman/src/jsdDebuggerService.h | 7 +- 3 files changed, 87 insertions(+), 31 deletions(-) diff --git a/mozilla/extensions/venkman/idl/jsdIDebuggerService.idl b/mozilla/extensions/venkman/idl/jsdIDebuggerService.idl index d4c0700cbef..51dc5c2ced1 100644 --- a/mozilla/extensions/venkman/idl/jsdIDebuggerService.idl +++ b/mozilla/extensions/venkman/idl/jsdIDebuggerService.idl @@ -98,7 +98,7 @@ interface jsdIValue : nsISupports [scriptable, uuid(ae89a7e2-1dd1-11b2-8c2f-af82086291a5)] interface jsdIScriptHook : nsISupports { - void onScriptHook (in jsdIContext aCx, in jsdIScript aScript, + void onScriptLoaded (in jsdIContext aCx, in jsdIScript aScript, in boolean aCreating); }; @@ -106,16 +106,16 @@ interface jsdIScriptHook : nsISupports [scriptable, uuid(9a7b6ad0-1dd1-11b2-a789-fcfae96356a2)] interface jsdIExecutionHook : nsISupports { - const unsigned long HOOK_RETURN_HOOK_ERROR = 0; - const unsigned long HOOK_RETURN_CONTINUE = 1; - const unsigned long HOOK_RETURN_ABORT = 2; - const unsigned long HOOK_RETURN_RET_WITH_VAL = 3; - const unsigned long HOOK_RETURN_THROW_WITH_VAL = 4; - const unsigned long HOOK_RETURN_CONTINUE_THROW = 5; + const unsigned long RETURN_HOOK_ERROR = 0; + const unsigned long RETURN_CONTINUE = 1; + const unsigned long RETURN_ABORT = 2; + const unsigned long RETURN_RET_WITH_VAL = 3; + const unsigned long RETURN_THROW_WITH_VAL = 4; + const unsigned long RETURN_CONTINUE_THROW = 5; - unsigned long onExecutionHook (in jsdIContext aCx, - in jsdIThreadState aThreadState, - in unsigned long aType, out nsISupports rval); + unsigned long onExecute (in jsdIContext aCx, + in jsdIThreadState aThreadState, + in unsigned long aType, out nsISupports rval); }; [scriptable, uuid(01be7f9a-1dd2-11b2-9d55-aaf919b27c73)] @@ -123,8 +123,10 @@ interface jsdIDebuggerService : nsISupports { void init (); - attribute jsdIScriptHook scriptHook; + attribute jsdIExecutionHook debugBreakHook; + attribute jsdIExecutionHook debuggerHook; attribute jsdIExecutionHook interruptHook; - + attribute jsdIScriptHook scriptHook; + }; diff --git a/mozilla/extensions/venkman/src/jsdDebuggerService.cpp b/mozilla/extensions/venkman/src/jsdDebuggerService.cpp index b724b409a57..634df0fa6f1 100644 --- a/mozilla/extensions/venkman/src/jsdDebuggerService.cpp +++ b/mozilla/extensions/venkman/src/jsdDebuggerService.cpp @@ -54,20 +54,19 @@ jsds_SetContextProc (JSDContext* jsdc, void* user) } static PRUint32 -jsds_InterruptHookProc (JSDContext* jsdc, JSDThreadState* jsdthreadstate, +jsds_ExecutionHookProc (JSDContext* jsdc, JSDThreadState* jsdthreadstate, uintN type, void* callerdata, jsval* rval) { - if (!callerdata) - return JSD_HOOK_RETURN_CONTINUE; + NS_PRECONDITION (callerdata, "no callerdata for jsds_ExecutionHookProc."); jsdIExecutionHook *hook = NS_STATIC_CAST(jsdIExecutionHook *, callerdata); nsISupports *is_rv = 0; PRUint32 hook_rv = JSD_HOOK_RETURN_CONTINUE; - hook->OnExecutionHook (jsdContext::FromPtr(jsdc), - jsdThreadState::FromPtr(jsdthreadstate), - type, &is_rv, &hook_rv); + hook->OnExecute (jsdContext::FromPtr(jsdc), + jsdThreadState::FromPtr(jsdthreadstate), + type, &is_rv, &hook_rv); return hook_rv; } @@ -79,9 +78,9 @@ jsds_ScriptHookProc (JSDContext* jsdc, JSDScript* jsdscript, JSBool creating, return; jsdIScriptHook *hook = NS_STATIC_CAST(jsdIScriptHook *, callerdata); - hook->OnScriptHook (jsdContext::FromPtr(jsdc), - jsdScript::FromPtr(jsdc, jsdscript), - creating ? PR_TRUE : PR_FALSE); + hook->OnScriptLoaded (jsdContext::FromPtr(jsdc), + jsdScript::FromPtr(jsdc, jsdscript), + creating ? PR_TRUE : PR_FALSE); } NS_IMETHODIMP @@ -107,10 +106,58 @@ jsdService::Init (void) jsd_uc.setContext = jsds_SetContextProc; mJSDcx = JSD_DebuggerOnForUser (mJSrt, &jsd_uc, NULL); - JSD_SetInterruptHook (mJSDcx, jsds_InterruptHookProc, - NS_STATIC_CAST(void *, 0 /*aHook*/)); - JSD_SetScriptHook (mJSDcx, jsds_ScriptHookProc, - NS_STATIC_CAST(void *, 0 /*aHook*/)); + + return NS_OK; +} + +/* hook attribute get/set functions */ + +NS_IMETHODIMP +jsdService::SetDebugBreakHook (jsdIExecutionHook *aHook) +{ + mDebugBreakHook = aHook; + if (aHook) + JSD_SetDebugBreakHook (mJSDcx, jsds_ExecutionHookProc, + NS_STATIC_CAST(void *, aHook)); + else + JSD_ClearDebugBreakHook (mJSDcx); + + return NS_OK; +} + +NS_IMETHODIMP +jsdService::GetDebugBreakHook (jsdIExecutionHook **aHook) +{ + if (!aHook) + return NS_ERROR_NULL_POINTER; + + *aHook = mDebugBreakHook; + NS_IF_ADDREF(*aHook); + + return NS_OK; +} + +NS_IMETHODIMP +jsdService::SetDebuggerHook (jsdIExecutionHook *aHook) +{ + mDebuggerHook = aHook; + if (aHook) + JSD_SetDebuggerHook (mJSDcx, jsds_ExecutionHookProc, + NS_STATIC_CAST(void *, aHook)); + else + JSD_ClearDebuggerHook (mJSDcx); + + return NS_OK; +} + +NS_IMETHODIMP +jsdService::GetDebuggerHook (jsdIExecutionHook **aHook) +{ + if (!aHook) + return NS_ERROR_NULL_POINTER; + + *aHook = mDebuggerHook; + NS_IF_ADDREF(*aHook); return NS_OK; } @@ -119,8 +166,12 @@ NS_IMETHODIMP jsdService::SetInterruptHook (jsdIExecutionHook *aHook) { mInterruptHook = aHook; - JSD_SetInterruptHook (mJSDcx, jsds_InterruptHookProc, - NS_STATIC_CAST(void *, aHook)); + if (aHook) + JSD_SetInterruptHook (mJSDcx, jsds_ExecutionHookProc, + NS_STATIC_CAST(void *, aHook)); + else + JSD_ClearInterruptHook (mJSDcx); + return NS_OK; } @@ -131,7 +182,7 @@ jsdService::GetInterruptHook (jsdIExecutionHook **aHook) return NS_ERROR_NULL_POINTER; *aHook = mInterruptHook; - NS_IF_ADDREF(aHook); + NS_IF_ADDREF(*aHook); return NS_OK; } @@ -150,7 +201,7 @@ jsdService::GetScriptHook (jsdIScriptHook **aHook) return NS_ERROR_NULL_POINTER; *aHook = mScriptHook; - NS_IF_ADDREF(aHook); + NS_IF_ADDREF(*aHook); return NS_OK; } diff --git a/mozilla/extensions/venkman/src/jsdDebuggerService.h b/mozilla/extensions/venkman/src/jsdDebuggerService.h index fbdebf84e65..cc06dcb5cc7 100644 --- a/mozilla/extensions/venkman/src/jsdDebuggerService.h +++ b/mozilla/extensions/venkman/src/jsdDebuggerService.h @@ -54,7 +54,8 @@ class jsdService : public jsdIDebuggerService NS_DECL_ISUPPORTS NS_DECL_JSDIDEBUGGERSERVICE - jsdService() : mJSrt(0), mJSDcx(0), mScriptHook(0), mInterruptHook(0) + jsdService() : mJSrt(0), mJSDcx(0), mDebugBreakHook(0), mDebuggerHook(0), + mInterruptHook(0), mScriptHook(0) { NS_INIT_ISUPPORTS(); } @@ -63,8 +64,10 @@ class jsdService : public jsdIDebuggerService private: JSRuntime *mJSrt; JSDContext *mJSDcx; - nsCOMPtr mScriptHook; + nsCOMPtr mDebugBreakHook; + nsCOMPtr mDebuggerHook; nsCOMPtr mInterruptHook; + nsCOMPtr mScriptHook; }; #endif /* JSDSERVICE_H___ */