diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp index eb1079e4b53..7eaef33f921 100644 --- a/src/plugins/autotest/autotestplugin.cpp +++ b/src/plugins/autotest/autotestplugin.cpp @@ -81,6 +81,9 @@ AutotestPlugin::AutotestPlugin() AutotestPlugin::~AutotestPlugin() { + delete m_navigationWidgetFactory; + delete m_resultsPane; + delete m_testSettingPage; delete m_frameworkManager; } @@ -154,9 +157,9 @@ bool AutotestPlugin::initialize(const QStringList &arguments, QString *errorStri m_frameworkManager->registerTestFramework(new GTestFramework); m_frameworkManager->synchronizeSettings(ICore::settings()); - addAutoReleasedObject(new TestSettingsPage(m_settings)); - addAutoReleasedObject(new TestNavigationWidgetFactory); - addAutoReleasedObject(TestResultsPane::instance()); + m_testSettingPage = new TestSettingsPage(m_settings); + m_navigationWidgetFactory = new TestNavigationWidgetFactory; + m_resultsPane = TestResultsPane::instance(); m_frameworkManager->activateFrameworksFromSettings(m_settings); TestTreeModel::instance()->syncTestFrameworks(); diff --git a/src/plugins/autotest/autotestplugin.h b/src/plugins/autotest/autotestplugin.h index f8769a2a12a..3f375dcd2ea 100644 --- a/src/plugins/autotest/autotestplugin.h +++ b/src/plugins/autotest/autotestplugin.h @@ -33,7 +33,10 @@ namespace Autotest { namespace Internal { class TestFrameworkManager; +class TestNavigationWidgetFactory; +class TestResultsPane; struct TestSettings; +class TestSettingsPage; class AutotestPlugin : public ExtensionSystem::IPlugin { @@ -61,6 +64,9 @@ private: QList createTestObjects() const override; const QSharedPointer m_settings; TestFrameworkManager *m_frameworkManager = nullptr; + TestSettingsPage *m_testSettingPage = nullptr; + TestNavigationWidgetFactory *m_navigationWidgetFactory = nullptr; + TestResultsPane *m_resultsPane = nullptr; }; } // namespace Internal diff --git a/src/plugins/autotest/testframeworkmanager.cpp b/src/plugins/autotest/testframeworkmanager.cpp index 8b6bfe22707..bb86f1e4ba9 100644 --- a/src/plugins/autotest/testframeworkmanager.cpp +++ b/src/plugins/autotest/testframeworkmanager.cpp @@ -27,7 +27,6 @@ #include "autotestconstants.h" #include "autotestplugin.h" #include "iframeworksettings.h" -#include "itestframework.h" #include "itestparser.h" #include "itestsettingspage.h" #include "testrunner.h" @@ -66,6 +65,8 @@ TestFrameworkManager::~TestFrameworkManager() { delete m_testRunner; delete m_testTreeModel; + qDeleteAll(m_frameworkSettingsPages); + m_frameworkSettingsPages.clear(); for (ITestFramework *framework : m_registeredFrameworks.values()) delete framework; } @@ -79,13 +80,11 @@ bool TestFrameworkManager::registerTestFramework(ITestFramework *framework) qCDebug(LOG) << "Registering" << id; m_registeredFrameworks.insert(id, framework); - AutotestPlugin *plugin = AutotestPlugin::instance(); - if (framework->hasFrameworkSettings()) { QSharedPointer frameworkSettings(framework->createFrameworkSettings()); m_frameworkSettings.insert(id, frameworkSettings); if (auto page = framework->createSettingsPage(frameworkSettings)) - plugin->addAutoReleasedObject(page); + m_frameworkSettingsPages.append(page); } return true; } diff --git a/src/plugins/autotest/testframeworkmanager.h b/src/plugins/autotest/testframeworkmanager.h index 6f37adc84cb..3b8c5d4e9fb 100644 --- a/src/plugins/autotest/testframeworkmanager.h +++ b/src/plugins/autotest/testframeworkmanager.h @@ -25,6 +25,8 @@ #pragma once +#include "itestframework.h" + #include #include @@ -38,8 +40,8 @@ namespace Autotest { namespace Internal { class IFrameworkSettings; -class ITestFramework; class ITestParser; +class ITestSettingsPage; class TestRunner; struct TestSettings; class TestTreeItem; @@ -72,6 +74,7 @@ private: explicit TestFrameworkManager(); QHash m_registeredFrameworks; QHash > m_frameworkSettings; + QVector m_frameworkSettingsPages; TestTreeModel *m_testTreeModel; TestRunner *m_testRunner;