From: Aurindam Jana Date: Fri, 4 Nov 2011 13:04:56 +0000 (+0100) Subject: QV8DebugService: Return JSON messages for internal requests. X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=1ce5760f1f710f1d82d888250ea9683cbc63c5f4;p=konrad%2Fqtdeclarative.git QV8DebugService: Return JSON messages for internal requests. Internal requests are not handles by V8. Hence, create a JSON message similar to v8 debugging protocol and send it to client. This is only for uniformity wrt to debug requests. Change-Id: Ia0a3cda0ef157b852fb4402fde62b4651a95bd56 Reviewed-by: Kai Koehne --- diff --git a/src/declarative/debugger/qv8debugservice.cpp b/src/declarative/debugger/qv8debugservice.cpp index e4d6960..2f7ca34 100644 --- a/src/declarative/debugger/qv8debugservice.cpp +++ b/src/declarative/debugger/qv8debugservice.cpp @@ -265,9 +265,65 @@ void QV8DebugService::messageReceived(const QByteArray &message) if (debugCommand == QLatin1String("connect")) { d->initialized = true; + //Prepare the response string + //Create a json message using v8 debugging protocol + //and send it to client + + // { "type" : "response", + // "request_seq" : , + // "command" : "connect", + // "running" : + // "success" : true + // } + { + v8::Isolate::Scope i_scope(d->isolate); + const QString obj(QLatin1String("{}")); + QJSValue parser = d->engine->evaluate(QLatin1String("JSON.parse")); + QJSValue jsonVal = parser.call(QJSValue(), QJSValueList() << obj); + jsonVal.setProperty(QLatin1String("type"), QJSValue(QLatin1String("response"))); + + const int sequence = reqMap.value(QLatin1String("seq")).toInt(); + jsonVal.setProperty(QLatin1String("request_seq"), QJSValue(sequence)); + jsonVal.setProperty(QLatin1String("command"), QJSValue(debugCommand)); + jsonVal.setProperty(QLatin1String("success"), QJSValue(true)); + jsonVal.setProperty(QLatin1String("running"), QJSValue(!d->loop.isRunning())); + + QJSValue stringify = d->engine->evaluate(QLatin1String("JSON.stringify")); + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + debugMessageHandler(json.toString()); + + } } else if (debugCommand == QLatin1String("interrupt")) { v8::Debug::DebugBreak(); + //Prepare the response string + //Create a json message using v8 debugging protocol + //and send it to client + + // { "type" : "response", + // "request_seq" : , + // "command" : "connect", + // "running" : + // "success" : true + // } + { + v8::Isolate::Scope i_scope(d->isolate); + const QString obj(QLatin1String("{}")); + QJSValue parser = d->engine->evaluate(QLatin1String("JSON.parse")); + QJSValue jsonVal = parser.call(QJSValue(), QJSValueList() << obj); + jsonVal.setProperty(QLatin1String("type"), QJSValue(QLatin1String("response"))); + + const int sequence = reqMap.value(QLatin1String("seq")).toInt(); + jsonVal.setProperty(QLatin1String("request_seq"), QJSValue(sequence)); + jsonVal.setProperty(QLatin1String("command"), QJSValue(debugCommand)); + jsonVal.setProperty(QLatin1String("success"), QJSValue(true)); + jsonVal.setProperty(QLatin1String("running"), QJSValue(!d->loop.isRunning())); + + QJSValue stringify = d->engine->evaluate(QLatin1String("JSON.stringify")); + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + debugMessageHandler(json.toString()); + + } } else { bool forwardRequestToV8 = true;