QmlDebugger: Refactor QML Signal Handler

Refactor QML Signal Handler to QML Signal Emit. This is because the
debugger breaks when a matching signal is emitted irrespective of
whether there is a handler connected to the signal.

Change-Id: I852ace75c1962290717ed127ac5938d7505b9a7e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Aurindam Jana
2012-04-16 12:00:23 +02:00
committed by hjk
parent b9661b0321
commit 459f00642b
8 changed files with 21 additions and 21 deletions

View File

@@ -122,8 +122,8 @@ static QString typeToString(BreakpointType type)
return BreakHandler::tr("Watchpoint at Address"); return BreakHandler::tr("Watchpoint at Address");
case WatchpointAtExpression: case WatchpointAtExpression:
return BreakHandler::tr("Watchpoint at Expression"); return BreakHandler::tr("Watchpoint at Expression");
case BreakpointOnQmlSignalHandler: case BreakpointOnQmlSignalEmit:
return BreakHandler::tr("Breakpoint on QML Signal Handler"); return BreakHandler::tr("Breakpoint on QML Signal Emit");
case BreakpointAtJavaScriptThrow: case BreakpointAtJavaScriptThrow:
return BreakHandler::tr("Breakpoint at JavaScript throw"); return BreakHandler::tr("Breakpoint at JavaScript throw");
case UnknownType: case UnknownType:

View File

@@ -236,7 +236,7 @@ bool BreakpointParameters::isValid() const
case Debugger::Internal::BreakpointAtFork: case Debugger::Internal::BreakpointAtFork:
case Debugger::Internal::BreakpointAtExec: case Debugger::Internal::BreakpointAtExec:
case Debugger::Internal::BreakpointAtSysCall: case Debugger::Internal::BreakpointAtSysCall:
case Debugger::Internal::BreakpointOnQmlSignalHandler: case Debugger::Internal::BreakpointOnQmlSignalEmit:
case Debugger::Internal::BreakpointAtJavaScriptThrow: case Debugger::Internal::BreakpointAtJavaScriptThrow:
break; break;
case Debugger::Internal::WatchpointAtExpression: case Debugger::Internal::WatchpointAtExpression:
@@ -280,7 +280,7 @@ bool BreakpointParameters::isCppBreakpoint() const
{ {
// Qml specific breakpoint types. // Qml specific breakpoint types.
if (type == BreakpointAtJavaScriptThrow if (type == BreakpointAtJavaScriptThrow
|| type == BreakpointOnQmlSignalHandler) || type == BreakpointOnQmlSignalEmit)
return false; return false;
// Qml is currently only file. // Qml is currently only file.
@@ -302,7 +302,7 @@ QString BreakpointParameters::toString() const
<< " PathUsage: " << pathUsage; << " PathUsage: " << pathUsage;
break; break;
case BreakpointByFunction: case BreakpointByFunction:
case BreakpointOnQmlSignalHandler: case BreakpointOnQmlSignalEmit:
ts << " FunctionName: " << functionName; ts << " FunctionName: " << functionName;
break; break;
case BreakpointByAddress: case BreakpointByAddress:

View File

@@ -140,7 +140,7 @@ enum BreakpointType
BreakpointAtSysCall, BreakpointAtSysCall,
WatchpointAtAddress, WatchpointAtAddress,
WatchpointAtExpression, WatchpointAtExpression,
BreakpointOnQmlSignalHandler, BreakpointOnQmlSignalEmit,
BreakpointAtJavaScriptThrow BreakpointAtJavaScriptThrow
}; };

View File

@@ -122,7 +122,7 @@ BreakpointDialog::BreakpointDialog(BreakpointModelId id, QWidget *parent)
<< tr("Break when a system call is executed") << tr("Break when a system call is executed")
<< tr("Break on data access at fixed address") << tr("Break on data access at fixed address")
<< tr("Break on data access at address given by expression") << tr("Break on data access at address given by expression")
<< tr("Break on QML signal handler") << tr("Break on QML signal emit")
<< tr("Break when JavaScript exception is thrown"); << tr("Break when JavaScript exception is thrown");
QTC_ASSERT(types.size() == BreakpointAtJavaScriptThrow, return); QTC_ASSERT(types.size() == BreakpointAtJavaScriptThrow, return);
@@ -374,7 +374,7 @@ void BreakpointDialog::typeChanged(int)
case WatchpointAtExpression: case WatchpointAtExpression:
getParts(ExpressionPart|AllConditionParts|TracePointPart, &m_savedParameters); getParts(ExpressionPart|AllConditionParts|TracePointPart, &m_savedParameters);
break; break;
case BreakpointOnQmlSignalHandler: case BreakpointOnQmlSignalEmit:
getParts(FunctionPart, &m_savedParameters); getParts(FunctionPart, &m_savedParameters);
} }
@@ -421,7 +421,7 @@ void BreakpointDialog::typeChanged(int)
setPartsEnabled(ExpressionPart|AllConditionParts|TracePointPart|TracePointPart); setPartsEnabled(ExpressionPart|AllConditionParts|TracePointPart|TracePointPart);
clearOtherParts(ExpressionPart|AllConditionParts|TracePointPart); clearOtherParts(ExpressionPart|AllConditionParts|TracePointPart);
break; break;
case BreakpointOnQmlSignalHandler: case BreakpointOnQmlSignalEmit:
setParts(FunctionPart, m_savedParameters); setParts(FunctionPart, m_savedParameters);
setPartsEnabled(FunctionPart); setPartsEnabled(FunctionPart);
clearOtherParts(FunctionPart); clearOtherParts(FunctionPart);

View File

@@ -2604,7 +2604,7 @@ bool CdbEngine::acceptsBreakpoint(BreakpointModelId id) const
case BreakpointAtFork: case BreakpointAtFork:
case WatchpointAtExpression: case WatchpointAtExpression:
case BreakpointAtSysCall: case BreakpointAtSysCall:
case BreakpointOnQmlSignalHandler: case BreakpointOnQmlSignalEmit:
case BreakpointAtJavaScriptThrow: case BreakpointAtJavaScriptThrow:
return false; return false;
case WatchpointAtAddress: case WatchpointAtAddress:

View File

@@ -106,7 +106,7 @@ static BreakpointParameters fixWinMSVCBreakpoint(const BreakpointParameters &p)
case WatchpointAtExpression: case WatchpointAtExpression:
case BreakpointAtSysCall: case BreakpointAtSysCall:
case WatchpointAtAddress: case WatchpointAtAddress:
case BreakpointOnQmlSignalHandler: case BreakpointOnQmlSignalEmit:
case BreakpointAtJavaScriptThrow: case BreakpointAtJavaScriptThrow:
break; break;
case BreakpointAtExec: { // Emulate by breaking on CreateProcessW(). case BreakpointAtExec: { // Emulate by breaking on CreateProcessW().
@@ -164,7 +164,7 @@ QByteArray cdbAddBreakpointCommand(const BreakpointParameters &bpIn,
case BreakpointAtCatch: case BreakpointAtCatch:
case BreakpointAtThrow: case BreakpointAtThrow:
case BreakpointAtMain: case BreakpointAtMain:
case BreakpointOnQmlSignalHandler: case BreakpointOnQmlSignalEmit:
case BreakpointAtJavaScriptThrow: case BreakpointAtJavaScriptThrow:
QTC_ASSERT(false, return QByteArray(); ) QTC_ASSERT(false, return QByteArray(); )
break; break;

View File

@@ -538,8 +538,8 @@ void QmlV8DebuggerClientPrivate::setBreakpoint(const QString type, const QString
QByteArray params; QByteArray params;
QDataStream rs(&params, QIODevice::WriteOnly); QDataStream rs(&params, QIODevice::WriteOnly);
rs << target.toUtf8() << enabled; rs << target.toUtf8() << enabled;
logSendMessage(QString(_("%1 %2 %3 %4")).arg(_(V8DEBUG), _(SIGNALHANDLER), target, enabled?_("enabled"):_("disabled"))); logSendMessage(QString(_("%1 %2 %3 %4")).arg(_(V8DEBUG), _(BREAKONSIGNAL), target, enabled?_("enabled"):_("disabled")));
q->sendMessage(packMessage(SIGNALHANDLER, params)); q->sendMessage(packMessage(BREAKONSIGNAL, params));
} else { } else {
QScriptValue jsonVal = initObject(); QScriptValue jsonVal = initObject();
@@ -966,7 +966,7 @@ void QmlV8DebuggerClientPrivate::reformatRequest(QByteArray &request)
} }
q->sendMessage(packMessage(QByteArray(), data)); q->sendMessage(packMessage(QByteArray(), data));
} else if (command == SIGNALHANDLER) { } else if (command == BREAKONSIGNAL) {
QDataStream rs(data); QDataStream rs(data);
QByteArray signalHandler; QByteArray signalHandler;
bool enabled; bool enabled;
@@ -1091,7 +1091,7 @@ void QmlV8DebuggerClient::activateFrame(int index)
bool QmlV8DebuggerClient::acceptsBreakpoint(const BreakpointModelId &id) bool QmlV8DebuggerClient::acceptsBreakpoint(const BreakpointModelId &id)
{ {
BreakpointType type = d->engine->breakHandler()->breakpointData(id).type; BreakpointType type = d->engine->breakHandler()->breakpointData(id).type;
return (type == BreakpointOnQmlSignalHandler return (type == BreakpointOnQmlSignalEmit
|| type == BreakpointByFileAndLine || type == BreakpointByFileAndLine
|| type == BreakpointAtJavaScriptThrow); || type == BreakpointAtJavaScriptThrow);
} }
@@ -1112,7 +1112,7 @@ void QmlV8DebuggerClient::insertBreakpoint(const BreakpointModelId &id,
params.enabled, adjustedLine, adjustedColumn, params.enabled, adjustedLine, adjustedColumn,
QLatin1String(params.condition), params.ignoreCount); QLatin1String(params.condition), params.ignoreCount);
} else if (params.type == BreakpointOnQmlSignalHandler) { } else if (params.type == BreakpointOnQmlSignalEmit) {
d->setBreakpoint(QString(_(EVENT)), params.functionName, params.enabled); d->setBreakpoint(QString(_(EVENT)), params.functionName, params.enabled);
d->engine->breakHandler()->notifyBreakpointInsertOk(id); d->engine->breakHandler()->notifyBreakpointInsertOk(id);
} }
@@ -1130,7 +1130,7 @@ void QmlV8DebuggerClient::removeBreakpoint(const BreakpointModelId &id)
if (params.type == BreakpointAtJavaScriptThrow) if (params.type == BreakpointAtJavaScriptThrow)
d->setExceptionBreak(AllExceptions); d->setExceptionBreak(AllExceptions);
else if (params.type == BreakpointOnQmlSignalHandler) else if (params.type == BreakpointOnQmlSignalEmit)
d->setBreakpoint(QString(_(EVENT)), params.functionName, false); d->setBreakpoint(QString(_(EVENT)), params.functionName, false);
else else
d->clearBreakpoint(breakpoint); d->clearBreakpoint(breakpoint);
@@ -1146,7 +1146,7 @@ void QmlV8DebuggerClient::changeBreakpoint(const BreakpointModelId &id)
d->setExceptionBreak(AllExceptions, params.enabled); d->setExceptionBreak(AllExceptions, params.enabled);
br.enabled = params.enabled; br.enabled = params.enabled;
handler->setResponse(id, br); handler->setResponse(id, br);
} else if (params.type == BreakpointOnQmlSignalHandler) { } else if (params.type == BreakpointOnQmlSignalEmit) {
d->setBreakpoint(QString(_(EVENT)), params.functionName, params.enabled); d->setBreakpoint(QString(_(EVENT)), params.functionName, params.enabled);
br.enabled = params.enabled; br.enabled = params.enabled;
handler->setResponse(id, br); handler->setResponse(id, br);
@@ -1259,7 +1259,7 @@ void QmlV8DebuggerClient::messageReceived(const QByteArray &data)
} else if (type == INTERRUPT) { } else if (type == INTERRUPT) {
//debug break requested //debug break requested
} else if (type == SIGNALHANDLER) { } else if (type == BREAKONSIGNAL) {
//break on signal handler requested //break on signal handler requested
} else if (type == V8MESSAGE) { } else if (type == V8MESSAGE) {

View File

@@ -39,7 +39,7 @@ namespace Internal {
const float CURRENT_SUPPORTED_VERSION = 2.0; const float CURRENT_SUPPORTED_VERSION = 2.0;
const char V8REQUEST[] = "v8request"; const char V8REQUEST[] = "v8request";
const char V8MESSAGE[] = "v8message"; const char V8MESSAGE[] = "v8message";
const char SIGNALHANDLER[] = "signalhandler"; const char BREAKONSIGNAL[] = "breakonsignal";
const char CONNECT[] = "connect"; const char CONNECT[] = "connect";
const char INTERRUPT[] = "interrupt"; const char INTERRUPT[] = "interrupt";
const char V8DEBUG[] = "V8DEBUG"; const char V8DEBUG[] = "V8DEBUG";