@@ -13,19 +13,21 @@ JsDebugger::JsDebugger()
13
13
{
14
14
}
15
15
16
- void JsDebugger::Init (v8::Isolate *isolate, const string& packageName)
16
+ void JsDebugger::Init (v8::Isolate *isolate, const string& packageName, jobject jsDebugger )
17
17
{
18
18
s_isolate = isolate;
19
19
s_packageName = packageName;
20
20
21
21
JEnv env;
22
+ s_jsDebugger = env.NewGlobalRef (jsDebugger);
23
+
22
24
s_JsDebuggerClass = env.FindClass (" com/tns/JsDebugger" );
23
25
assert (s_JsDebuggerClass != nullptr );
24
26
25
- s_EnqueueMessage = env.GetStaticMethodID (s_JsDebuggerClass, " enqueueMessage" , " (Ljava/lang/String;)V" );
27
+ s_EnqueueMessage = env.GetMethodID (s_JsDebuggerClass, " enqueueMessage" , " (Ljava/lang/String;)V" );
26
28
assert (s_EnqueueMessage != nullptr );
27
29
28
- s_EnableAgent = env.GetStaticMethodID (s_JsDebuggerClass, " enableAgent" , " (Ljava/lang/String;IZ )V" );
30
+ s_EnableAgent = env.GetMethodID (s_JsDebuggerClass, " enableAgent" , " ()V" );
29
31
assert (s_EnableAgent != nullptr );
30
32
}
31
33
@@ -95,19 +97,15 @@ void JsDebugger::SendCommand(JNIEnv *_env, jobject obj, jbyteArray command, jint
95
97
96
98
void JsDebugger::DebugBreakCallback (const v8::FunctionCallbackInfo<v8::Value>& args)
97
99
{
100
+ if (s_jsDebugger == nullptr )
101
+ {
102
+ return ;
103
+ }
104
+
98
105
try
99
106
{
100
107
JEnv env;
101
- JniLocalRef packageName (env.NewStringUTF (s_packageName.c_str ()));
102
-
103
- jint port = 8181 ;
104
- if ((args.Length () > 0 ) && args[0 ]->IsInt32 ())
105
- {
106
- port = args[0 ]->Int32Value ();
107
- }
108
- jboolean jniFalse = JNI_FALSE;
109
-
110
- env.CallStaticVoidMethod (s_JsDebuggerClass, s_EnableAgent, (jstring) packageName, port, jniFalse);
108
+ env.CallStaticVoidMethod (s_JsDebuggerClass, s_EnableAgent);
111
109
112
110
DebugBreak ();
113
111
}
@@ -140,16 +138,22 @@ void JsDebugger::SendCommandToV8(uint16_t *cmd, int length)
140
138
*/
141
139
void JsDebugger::MyMessageHandler (const v8::Debug::Message& message)
142
140
{
141
+ if (s_jsDebugger == nullptr )
142
+ {
143
+ return ;
144
+ }
145
+
143
146
auto json = message.GetJSON ();
144
147
auto str = ConvertToString (json);
145
148
146
149
JEnv env;
147
150
JniLocalRef s (env.NewStringUTF (str.c_str ()));
148
151
149
- env.CallStaticVoidMethod (s_JsDebuggerClass , s_EnqueueMessage, (jstring) s);
152
+ env.CallVoidMethod (s_jsDebugger , s_EnqueueMessage, (jstring) s);
150
153
}
151
154
152
155
v8::Isolate* JsDebugger::s_isolate = nullptr ;
156
+ jobject JsDebugger::s_jsDebugger = nullptr ;
153
157
string JsDebugger::s_packageName = " " ;
154
158
jclass JsDebugger::s_JsDebuggerClass = nullptr ;
155
159
jmethodID JsDebugger::s_EnqueueMessage = nullptr ;
0 commit comments