void KLibLoaderTest::testLibrary() { KLibrary *lib = KLibLoader::self()->library(s_kpluginFactoryModule); QVERIFY(lib); QVERIFY(lib->isLoaded()); QCOMPARE(QFileInfo(lib->fileName()).canonicalFilePath(), MODULE_PATH(s_kpluginFactoryModule)); }
bool Greeter::loadGreetPlugin() { if (m_pluginHandle.library) { //we were locked once before, so all the plugin loading's done already //FIXME should I be unloading the plugin on unlock instead? return true; } for (QStringList::ConstIterator it = m_plugins.constBegin(); it != m_plugins.constEnd(); ++it) { GreeterPluginHandle plugin; KLibrary *lib = new KLibrary( (*it)[0] == QLatin1Char( '/' ) ? *it : QLatin1String( "kgreet_" ) + *it ); if (lib->fileName().isEmpty()) { kWarning(1212) << "GreeterPlugin " << *it << " does not exist" ; delete lib; continue; } if (!lib->load()) { kWarning(1212) << "Cannot load GreeterPlugin " << *it << " (" << lib->fileName() << ")" ; delete lib; continue; } plugin.library = lib; plugin.info = (KGreeterPluginInfo *)lib->resolveFunction( "kgreeterplugin_info" ); if (!plugin.info ) { kWarning(1212) << "GreeterPlugin " << *it << " (" << lib->fileName() << ") is no valid greet widget plugin" ; lib->unload(); delete lib; continue; } if (plugin.info->method && !m_method.isEmpty() && m_method != QLatin1String( plugin.info->method )) { kDebug(1212) << "GreeterPlugin " << *it << " (" << lib->fileName() << ") serves " << plugin.info->method << ", not " << m_method; lib->unload(); delete lib; continue; } if (!plugin.info->init( m_method, getConf, this )) { kDebug(1212) << "GreeterPlugin " << *it << " (" << lib->fileName() << ") refuses to serve " << m_method; lib->unload(); delete lib; continue; } kDebug(1212) << "GreeterPlugin " << *it << " (" << plugin.info->method << ", " << plugin.info->name << ") loaded"; m_pluginHandle = plugin; return true; } return false; }
void KLibLoaderTest::testLibrary_hints() { // the hints will be ignored, but we want to check the call will still compile KLibrary *lib = KLibLoader::self()->library(s_kpluginFactoryModule, QLibrary::ResolveAllSymbolsHint); QVERIFY(lib); QVERIFY(lib->isLoaded()); QCOMPARE(QFileInfo(lib->fileName()).canonicalFilePath(), MODULE_PATH(s_kpluginFactoryModule)); }