diff options
author | Erik Verbruggen <erik.verbruggen@me.com> | 2013-09-10 12:24:37 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-10 15:49:24 +0200 |
commit | ac50d350a30c754eda7b70f4aef0badb11bfb7ef (patch) | |
tree | 22d523942a178c5307ff47dd38df261e0c3c19ac | |
parent | 59ed8c355b99df0b949003a438ab850274261aa0 (diff) |
V4 debugger: change agent API to work on all debuggers.
From a client point of view, there is no way to know which engine is
executing which script. So, instead of passing in a debugger for a
specific engine, have the agent set breakpoints on all debuggers.
Change-Id: I53b8cbc1bdc02c7705042f2ac3a99a041992c134
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
-rw-r--r-- | src/qml/jsruntime/qv4debugging.cpp | 18 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4debugging_p.h | 7 | ||||
-rw-r--r-- | tests/auto/qml/qv4debugger/tst_qv4debugger.cpp | 14 |
3 files changed, 24 insertions, 15 deletions
diff --git a/src/qml/jsruntime/qv4debugging.cpp b/src/qml/jsruntime/qv4debugging.cpp index 5534305068..10f22a11b8 100644 --- a/src/qml/jsruntime/qv4debugging.cpp +++ b/src/qml/jsruntime/qv4debugging.cpp @@ -298,19 +298,27 @@ void DebuggerAgent::removeDebugger(Debugger *debugger) debugger->detachFromAgent(); } -void DebuggerAgent::pause(Debugger *debugger) +void DebuggerAgent::pause(Debugger *debugger) const { debugger->pause(); } -void DebuggerAgent::addBreakPoint(Debugger *debugger, const QString &fileName, int lineNumber) +void DebuggerAgent::pauseAll() const { - debugger->addBreakPoint(fileName, lineNumber); + foreach (Debugger *debugger, m_debuggers) + pause(debugger); } -void DebuggerAgent::removeBreakPoint(Debugger *debugger, const QString &fileName, int lineNumber) +void DebuggerAgent::addBreakPoint(const QString &fileName, int lineNumber) const { - debugger->removeBreakPoint(fileName, lineNumber); + foreach (Debugger *debugger, m_debuggers) + debugger->addBreakPoint(fileName, lineNumber); +} + +void DebuggerAgent::removeBreakPoint(const QString &fileName, int lineNumber) const +{ + foreach (Debugger *debugger, m_debuggers) + debugger->removeBreakPoint(fileName, lineNumber); } DebuggerAgent::~DebuggerAgent() diff --git a/src/qml/jsruntime/qv4debugging_p.h b/src/qml/jsruntime/qv4debugging_p.h index d71b25f378..908854865d 100644 --- a/src/qml/jsruntime/qv4debugging_p.h +++ b/src/qml/jsruntime/qv4debugging_p.h @@ -140,9 +140,10 @@ public: void addDebugger(Debugger *debugger); void removeDebugger(Debugger *debugger); - void pause(Debugger *debugger); - void addBreakPoint(Debugger *debugger, const QString &fileName, int lineNumber); - void removeBreakPoint(Debugger *debugger, const QString &fileName, int lineNumber); + void pause(Debugger *debugger) const; + void pauseAll() const; + void addBreakPoint(const QString &fileName, int lineNumber) const; + void removeBreakPoint(const QString &fileName, int lineNumber) const; Q_INVOKABLE virtual void debuggerPaused(QV4::Debugging::Debugger *debugger) = 0; diff --git a/tests/auto/qml/qv4debugger/tst_qv4debugger.cpp b/tests/auto/qml/qv4debugger/tst_qv4debugger.cpp index 7d8f02a952..9da67c3f43 100644 --- a/tests/auto/qml/qv4debugger/tst_qv4debugger.cpp +++ b/tests/auto/qml/qv4debugger/tst_qv4debugger.cpp @@ -192,7 +192,7 @@ void tst_qv4debugger::breakAnywhere() "var i = 42;\n" "var j = i + 1\n" "var k = i\n"; - m_debuggerAgent->pause(m_v4->debugger); + m_debuggerAgent->pauseAll(); evaluateJavaScript(script, "testFile"); QVERIFY(m_debuggerAgent->m_wasPaused); } @@ -203,7 +203,7 @@ void tst_qv4debugger::pendingBreakpoint() "var i = 42;\n" "var j = i + 1\n" "var k = i\n"; - m_debuggerAgent->addBreakPoint(m_v4->debugger, "testfile", 2); + m_debuggerAgent->addBreakPoint("testfile", 2); evaluateJavaScript(script, "testfile"); QVERIFY(m_debuggerAgent->m_wasPaused); QCOMPARE(m_debuggerAgent->m_statesWhenPaused.count(), 1); @@ -219,7 +219,7 @@ void tst_qv4debugger::liveBreakPoint() "var j = i + 1\n" "var k = i\n"; m_debuggerAgent->m_breakPointsToAddWhenPaused << TestAgent::TestBreakPoint("liveBreakPoint", 3); - m_debuggerAgent->pause(m_v4->debugger); + m_debuggerAgent->pauseAll(); evaluateJavaScript(script, "liveBreakPoint"); QVERIFY(m_debuggerAgent->m_wasPaused); QCOMPARE(m_debuggerAgent->m_statesWhenPaused.count(), 2); @@ -234,8 +234,8 @@ void tst_qv4debugger::removePendingBreakPoint() "var i = 42;\n" "var j = i + 1\n" "var k = i\n"; - m_debuggerAgent->addBreakPoint(m_v4->debugger, "removePendingBreakPoint", 2); - m_debuggerAgent->removeBreakPoint(m_v4->debugger, "removePendingBreakPoint", 2); + m_debuggerAgent->addBreakPoint("removePendingBreakPoint", 2); + m_debuggerAgent->removeBreakPoint("removePendingBreakPoint", 2); evaluateJavaScript(script, "removePendingBreakPoint"); QVERIFY(!m_debuggerAgent->m_wasPaused); } @@ -246,7 +246,7 @@ void tst_qv4debugger::addBreakPointWhilePaused() "var i = 42;\n" "var j = i + 1\n" "var k = i\n"; - m_debuggerAgent->addBreakPoint(m_v4->debugger, "addBreakPointWhilePaused", 1); + m_debuggerAgent->addBreakPoint("addBreakPointWhilePaused", 1); m_debuggerAgent->m_breakPointsToAddWhenPaused << TestAgent::TestBreakPoint("addBreakPointWhilePaused", 2); evaluateJavaScript(script, "addBreakPointWhilePaused"); QVERIFY(m_debuggerAgent->m_wasPaused); @@ -276,7 +276,7 @@ void tst_qv4debugger::removeBreakPointForNextInstruction() QMetaObject::invokeMethod(m_engine, "injectFunction", Qt::BlockingQueuedConnection, Q_ARG(QString, "someCall"), Q_ARG(TestEngine::InjectedFunction, someCall)); - m_debuggerAgent->addBreakPoint(m_v4->debugger, "removeBreakPointForNextInstruction", 2); + m_debuggerAgent->addBreakPoint("removeBreakPointForNextInstruction", 2); evaluateJavaScript(script, "removeBreakPointForNextInstruction"); QVERIFY(!m_debuggerAgent->m_wasPaused); |