diff --git a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp index 0152d994e4a..7f0677af7bc 100644 --- a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp @@ -295,6 +295,7 @@ void QmlProfilerClientManager::qmlDebugConnectionClosed() QTC_ASSERT(m_connection && m_qmlclientplugin, return); QTC_ASSERT(!m_connection->isConnected(), return); disconnectClient(); + m_profilerState->setServerRecording(false); emit connectionClosed(); } diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp index 0318a6b6185..3a26b61e09e 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp @@ -427,5 +427,29 @@ void QmlProfilerClientManagerTest::testStopRecording() // Delete while still connected, for added fun } +void QmlProfilerClientManagerTest::testConnectionDrop() +{ + QUrl socketUrl = urlFromLocalSocket(); + QmlProfilerClientManager clientManager; + + { + clientManager.setRetryParams(10, 10); + clientManager.setProfilerStateManager(&stateManager); + clientManager.setModelManager(&modelManager); + clientManager.connectToServer(socketUrl); + + QScopedPointer socket(new QLocalSocket(this)); + socket->connectToServer(socketUrl.path()); + QVERIFY(socket->isOpen()); + fakeDebugServer(socket.data()); + + // Fake a trace. We want to test that this is reset when the connection drops. + stateManager.setServerRecording(true); + QTRY_VERIFY(clientManager.isConnected()); + } + + QTRY_VERIFY(!stateManager.serverRecording()); +} + } // namespace Internal } // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h index f3f3ac2d8db..22c4cf32e13 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h +++ b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h @@ -54,6 +54,7 @@ private slots: void testInvalidData(); void testStopRecording(); + void testConnectionDrop(); private: QmlProfilerClientManager clientManager;