diff options
author | hjk <hjk@theqtcompany.com> | 2015-01-10 01:07:01 +0100 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2015-01-15 12:19:33 +0100 |
commit | 3b2d2eae17fdbab5ba65937909a7e92bc20c8224 (patch) | |
tree | 16141aae32ed4ff6abe57580f19a54ffaa1373f2 /src/plugins/debugger/qml/qmlv8debuggerclient.cpp | |
parent | b88cdef0a3b170ae020f3f89ed91fd1a14daf6a2 (diff) | |
download | qt-creator-3b2d2eae17fdbab5ba65937909a7e92bc20c8224.tar.gz |
Debugger: Re-work breakpoint storage handling
The actual data is now in a TreeModel. As interface to
individual breakpoints there's a new Breakpoint class
essentially providing a checked handle.
On the user code side breakHandler()->foo(bpId) is
replaced by bp.foo().
Change-Id: I82f435bad6301fce85a1d82bf6bf39e9ddba511e
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Diffstat (limited to 'src/plugins/debugger/qml/qmlv8debuggerclient.cpp')
-rw-r--r-- | src/plugins/debugger/qml/qmlv8debuggerclient.cpp | 75 |
1 files changed, 37 insertions, 38 deletions
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index 1de81dbdbf..5823b1c51d 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -842,23 +842,22 @@ void QmlV8DebuggerClient::activateFrame(int index) d->engine->stackHandler()->setCurrentIndex(index); } -bool QmlV8DebuggerClient::acceptsBreakpoint(const BreakpointModelId &id) +bool QmlV8DebuggerClient::acceptsBreakpoint(Breakpoint bp) { - BreakpointType type = d->engine->breakHandler()->breakpointData(id).type; + BreakpointType type = bp.type(); return (type == BreakpointOnQmlSignalEmit || type == BreakpointByFileAndLine || type == BreakpointAtJavaScriptThrow); } -void QmlV8DebuggerClient::insertBreakpoint(const BreakpointModelId &id, +void QmlV8DebuggerClient::insertBreakpoint(Breakpoint bp, int adjustedLine, int adjustedColumn) { - BreakHandler *handler = d->engine->breakHandler(); - const BreakpointParameters ¶ms = handler->breakpointData(id); + const BreakpointParameters ¶ms = bp.parameters(); if (params.type == BreakpointAtJavaScriptThrow) { - handler->notifyBreakpointInsertOk(id); + bp.notifyBreakpointInsertOk(); d->setExceptionBreak(AllExceptions, params.enabled); } else if (params.type == BreakpointByFileAndLine) { @@ -868,19 +867,18 @@ void QmlV8DebuggerClient::insertBreakpoint(const BreakpointModelId &id, } else if (params.type == BreakpointOnQmlSignalEmit) { d->setBreakpoint(QString(_(EVENT)), params.functionName, params.enabled); - d->engine->breakHandler()->notifyBreakpointInsertOk(id); + bp.notifyBreakpointInsertOk(); } - d->breakpointsSync.insert(d->sequence, id); + d->breakpointsSync.insert(d->sequence, bp.id()); } -void QmlV8DebuggerClient::removeBreakpoint(const BreakpointModelId &id) +void QmlV8DebuggerClient::removeBreakpoint(Breakpoint bp) { - BreakHandler *handler = d->engine->breakHandler(); - const BreakpointParameters ¶ms = handler->breakpointData(id); + const BreakpointParameters ¶ms = bp.parameters(); - int breakpoint = d->breakpoints.value(id); - d->breakpoints.remove(id); + int breakpoint = d->breakpoints.value(bp.id()); + d->breakpoints.remove(bp.id()); if (params.type == BreakpointAtJavaScriptThrow) d->setExceptionBreak(AllExceptions); @@ -890,25 +888,25 @@ void QmlV8DebuggerClient::removeBreakpoint(const BreakpointModelId &id) d->clearBreakpoint(breakpoint); } -void QmlV8DebuggerClient::changeBreakpoint(const BreakpointModelId &id) +void QmlV8DebuggerClient::changeBreakpoint(Breakpoint bp) { - BreakHandler *handler = d->engine->breakHandler(); - const BreakpointParameters ¶ms = handler->breakpointData(id); + const BreakpointParameters ¶ms = bp.parameters(); - BreakpointResponse br = handler->response(id); + BreakpointResponse br = bp.response(); if (params.type == BreakpointAtJavaScriptThrow) { d->setExceptionBreak(AllExceptions, params.enabled); br.enabled = params.enabled; - handler->setResponse(id, br); + bp.setResponse(br); } else if (params.type == BreakpointOnQmlSignalEmit) { d->setBreakpoint(QString(_(EVENT)), params.functionName, params.enabled); br.enabled = params.enabled; - handler->setResponse(id, br); + bp.setResponse(br); } else { //V8 supports only minimalistic changes in breakpoint //Remove the breakpoint and add again - handler->notifyBreakpointChangeOk(id); - handler->removeBreakpoint(id); + bp.notifyBreakpointChangeOk(); + bp.removeBreakpoint(); + BreakHandler *handler = d->engine->breakHandler(); handler->appendBreakpoint(params); } } @@ -1086,12 +1084,12 @@ void QmlV8DebuggerClient::messageReceived(const QByteArray &data) //The breakpoint requested line should be same as //actual line BreakHandler *handler = d->engine->breakHandler(); - if (handler->state(id) != BreakpointInserted) { - BreakpointResponse br = handler->response(id); - br.lineNumber = breakpointData.value(_("line") - ).toInt() + 1; - handler->setResponse(id, br); - handler->notifyBreakpointInsertOk(id); + Breakpoint bp = handler->breakpointById(id); + if (bp.state() != BreakpointInserted) { + BreakpointResponse br = bp.response(); + br.lineNumber = breakpointData.value(_("line")).toInt() + 1; + bp.setResponse(br); + bp.notifyBreakpointInsertOk(); } } @@ -1211,10 +1209,10 @@ void QmlV8DebuggerClient::messageReceived(const QByteArray &data) BreakHandler *handler = d->engine->breakHandler(); foreach (int v8Id, v8BreakpointIds) { - const BreakpointModelId internalId = d->breakpoints.key(v8Id); - - if (internalId.isValid()) { - const BreakpointParameters ¶ms = handler->breakpointData(internalId); + const BreakpointModelId id = d->breakpoints.key(v8Id); + Breakpoint bp = handler->breakpointById(id); + if (bp.isValid()) { + const BreakpointParameters ¶ms = bp.parameters(); d->clearBreakpoint(v8Id); d->setBreakpoint(QString(_(SCRIPTREGEXP)), @@ -1224,7 +1222,7 @@ void QmlV8DebuggerClient::messageReceived(const QByteArray &data) newColumn, QString(QString::fromLatin1(params.condition)), params.ignoreCount); - d->breakpointsSync.insert(d->sequence, internalId); + d->breakpointsSync.insert(d->sequence, id); } } d->continueDebugging(Continue); @@ -1242,17 +1240,18 @@ void QmlV8DebuggerClient::messageReceived(const QByteArray &data) BreakHandler *handler = d->engine->breakHandler(); foreach (int v8Id, v8BreakpointIds) { const BreakpointModelId id = d->breakpoints.key(v8Id); - if (id.isValid()) { - BreakpointResponse br = handler->response(id); + Breakpoint bp = handler->breakpointById(id); + if (bp) { + BreakpointResponse br = bp.response(); if (br.functionName.isEmpty()) { br.functionName = invocationText; - handler->setResponse(id, br); + bp.setResponse(br); } - if (handler->state(id) != BreakpointInserted) { + if (bp.state() != BreakpointInserted) { br.lineNumber = breakData.value( _("sourceLine")).toInt() + 1; - handler->setResponse(id, br); - handler->notifyBreakpointInsertOk(id); + bp.setResponse(br); + bp.notifyBreakpointInsertOk(); } } } |