diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-06-26 09:33:37 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-10-16 12:38:24 +0200 |
commit | 8c614803451ead4ef186d3992dc8fd8d0b93fa37 (patch) | |
tree | 8f5454f1a318cce7ee3b53678cacd1a029f31b81 /tests/auto/qml/qqmlimport | |
parent | 3f96bf1f43252daf26ed61df2b3456f2dc81183b (diff) |
Provide methods to query and remove a dynamically loaded plugin
This may be necessary in some corner cases in order to manually manage
memmory for loaded libraries. Also, clear the (static) plugins on
qmlClearTypeRegistrations if !QT_CONFIG(library).
Task-number: QTBUG-76074
Change-Id: Id33d2a4acd7ca94efad53353f8bcb020576c4010
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'tests/auto/qml/qqmlimport')
-rw-r--r-- | tests/auto/qml/qqmlimport/tst_qqmlimport.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp b/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp index ca1e52ad2c..9c865b3f73 100644 --- a/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp +++ b/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp @@ -32,6 +32,7 @@ #include <QtQuick/qquickview.h> #include <QtQuick/qquickitem.h> #include <private/qqmlimport_p.h> +#include <private/qqmlengine_p.h> #include "../../shared/util.h" class tst_QQmlImport : public QQmlDataTest @@ -46,6 +47,7 @@ private slots: void completeQmldirPaths(); void interceptQmldir(); void singletonVersionResolution(); + void removeDynamicPlugin(); void cleanup(); }; @@ -260,6 +262,25 @@ void tst_QQmlImport::singletonVersionResolution() } } +void tst_QQmlImport::removeDynamicPlugin() +{ + qmlClearTypeRegistrations(); + QQmlEngine engine; + { + // Load something that adds a dynamic plugin + QQmlComponent component(&engine); + component.setData(QByteArray("import QtTest 1.0; TestResult{}"), QUrl()); + QVERIFY(component.isReady()); + } + QQmlImportDatabase *imports = &QQmlEnginePrivate::get(&engine)->importDatabase; + const QStringList &plugins = imports->dynamicPlugins(); + QVERIFY(!plugins.isEmpty()); + for (const QString &plugin : plugins) + QVERIFY(imports->removeDynamicPlugin(plugin)); + QVERIFY(imports->dynamicPlugins().isEmpty()); + qmlClearTypeRegistrations(); +} + QTEST_MAIN(tst_QQmlImport) |