Skip to content

Commit 842e5f0

Browse files
authored
Merge pull request #670 from NativeScript/attach-start-fix
create debug session on start, enabled the debugger on connect (fixes…
2 parents 0f815ee + f635ae7 commit 842e5f0

File tree

2 files changed

+42
-34
lines changed

2 files changed

+42
-34
lines changed

runtime/src/main/java/com/tns/AndroidJsV8Inspector.java

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
public class AndroidJsV8Inspector
1616
{
17+
private static boolean DEBUG_LOG_ENABLED = false;
18+
1719
public static final String DISCONNECT_MESSAGE = "nativescript-inspector-disconnect";
1820
private JsV8InspectorServer server;
1921
private Logger logger;
@@ -46,7 +48,10 @@ public void start() throws IOException
4648
this.server = new JsV8InspectorServer(context.getPackageName() + "-inspectorServer");
4749
this.server.start(-1);
4850

49-
//Log.d("V8Inspector", "init ThreadId:" + Thread.currentThread().getId());
51+
if (DEBUG_LOG_ENABLED)
52+
{
53+
Log.d("V8Inspector", "start debugger ThreadId:" + Thread.currentThread().getId());
54+
}
5055

5156
init();
5257
}
@@ -72,7 +77,10 @@ public JsV8InspectorServer(String name)
7277
@Override
7378
protected Response serveHttp(IHTTPSession session)
7479
{
75-
//Log.d("{N}.v8-inspector", "http request for " + session.getUri());
80+
if (DEBUG_LOG_ENABLED)
81+
{
82+
Log.d("{N}.v8-inspector", "http request for " + session.getUri());
83+
}
7684
return super.serveHttp(session);
7785
}
7886

@@ -94,7 +102,10 @@ public JsV8InspectorWebSocket(NanoHTTPD.IHTTPSession handshakeRequest)
94102
@Override
95103
protected void onOpen()
96104
{
97-
//Log.d("V8Inspector", "onOpen: ThreadID: " + Thread.currentThread().getId());
105+
if (DEBUG_LOG_ENABLED)
106+
{
107+
Log.d("V8Inspector", "onOpen: ThreadID: " + Thread.currentThread().getId());
108+
}
98109

99110
final Object waitObject = new Object();
100111

@@ -103,38 +114,24 @@ protected void onOpen()
103114
@Override
104115
public void run()
105116
{
106-
try
107-
{
108-
//Log.d("V8Inspector", "onOpen: runnable ThreadID : " + Thread.currentThread().getId());
109-
connect(JsV8InspectorWebSocket.this);
110-
}
111-
finally
117+
if (DEBUG_LOG_ENABLED)
112118
{
113-
synchronized (waitObject)
114-
{
115-
waitObject.notify();
116-
}
119+
Log.d("V8Inspector", "onOpen: runnable ThreadID : " + Thread.currentThread().getId());
117120
}
118-
}
119-
});
120121

121-
try
122-
{
123-
synchronized (waitObject)
124-
{
125-
waitObject.wait();
122+
connect(JsV8InspectorWebSocket.this);
126123
}
127-
}
128-
catch (InterruptedException e)
129-
{
130-
e.printStackTrace();
131-
}
124+
});
132125
}
133126

134127
@Override
135128
protected void onClose(NanoWSD.WebSocketFrame.CloseCode code, String reason, boolean initiatedByRemote)
136129
{
137-
//Log.d("V8Inspector", "onClose");
130+
if (DEBUG_LOG_ENABLED)
131+
{
132+
Log.d("V8Inspector", "onClose");
133+
}
134+
138135
mainHandler.post(new Runnable()
139136
{
140137
@Override
@@ -150,8 +147,10 @@ public void run()
150147
@Override
151148
protected void onMessage(final NanoWSD.WebSocketFrame message)
152149
{
153-
//Log.d("V8Inspector", "onMessage");
154-
//Log.d("V8Inspector", "onMessage TextPayload" + message.getTextPayload() + " ThreadId:" + Thread.currentThread().getId());
150+
if (DEBUG_LOG_ENABLED)
151+
{
152+
Log.d("V8Inspector", "To dbg backend: " + message.getTextPayload() + " ThreadId:" + Thread.currentThread().getId());
153+
}
155154
inspectorMessages.offer(message.getTextPayload());
156155

157156
mainHandler.post(new Runnable()
@@ -172,7 +171,11 @@ public void run()
172171
@Override
173172
public void send(String payload) throws IOException
174173
{
175-
//Log.d("V8Inspector", "send " + payload);
174+
if (DEBUG_LOG_ENABLED)
175+
{
176+
Log.d("V8Inspector", "To dbg client: " + payload);
177+
}
178+
176179
super.send(payload);
177180
}
178181

@@ -184,6 +187,10 @@ public String getInspectorMessage()
184187

185188
if (message != null && message.equalsIgnoreCase(DISCONNECT_MESSAGE))
186189
{
190+
if (DEBUG_LOG_ENABLED)
191+
{
192+
Log.d("V8Inspector", "disconecting");
193+
}
187194
disconnect();
188195
return null;
189196
}
@@ -198,11 +205,9 @@ public String getInspectorMessage()
198205
return null;
199206
}
200207

201-
202208
@Override
203209
protected void onPong(NanoWSD.WebSocketFrame pong)
204210
{
205-
//Log.d("V8Inspector", "onPong");
206211
}
207212

208213
@Override

runtime/src/main/jni/JsV8InspectorClient.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ void JsV8InspectorClient::connect(jobject connection)
4141
{
4242
JEnv env;
4343
this->connection = env.NewGlobalRef(connection);
44-
45-
this->doConnect(isolate_, JsV8InspectorClient::PersistentToLocal(isolate_, context_));
4644
}
4745

4846
void JsV8InspectorClient::doConnect(v8::Isolate *isolate, const v8::Local<v8::Context> &context)
@@ -117,7 +115,10 @@ v8::Local<v8::Context> JsV8InspectorClient::ensureDefaultContextInGroup(int cont
117115

118116
void JsV8InspectorClient::doDispatchMessage(v8::Isolate *isolate, const std::string &message)
119117
{
120-
assert(session_ != nullptr);
118+
if (session_ == nullptr)
119+
{
120+
return;
121+
}
121122

122123
const String16 msg(message.c_str());
123124
v8_inspector::StringView message_view(reinterpret_cast<const uint16_t *>(msg.characters16()), msg.length());
@@ -202,6 +203,8 @@ void JsV8InspectorClient::init()
202203

203204
v8::Persistent<v8::Context> persistentContext(context->GetIsolate(), context);
204205
context_.Reset(isolate_, persistentContext);
206+
207+
this->doConnect(isolate_, JsV8InspectorClient::PersistentToLocal(isolate_, context_));
205208
}
206209

207210
JsV8InspectorClient *JsV8InspectorClient::GetInstance()

0 commit comments

Comments
 (0)