Hello,

After quite a while of being busy with some other, "real world", tasks, I managed to finish the plugin loading logic inside the KWallet API.
:-)

** The context **
Be able to switch from KWallet to KSecretsService, which is an implementation of the freedesktop.org secret service [1] This is quite a complex task to do, as existing applications must not be affected.

In order to do that, it was proposed [2] to introduce a plugin loading approach inside the KWallet logic.

** The news **
First of all, I created a branch named "ksecretsservice" in kdelibs. All the preparatory work was (and will) be done inside that branch. I also merged the master branch into that branch from time time so today it's in sync with it.

The Wallet logic was modified:
- load a default plugin when first called,
- all the Wallet API calls now delegate to the loaded plugin, excepting the following methods:
    * LocalWallet,
    * NetworkWallet,
    * PasswordFolder,
    * FormDataFolder.
- some extra, internal, methods were added to the API to let the plugin trigger wallet signals [3]:
    * emitWalletOpened()
    * emitWalletClosed()
    * emitFolderUpdated(const QString&)
    * emitFolderListUpdated()
    * emitFolderRemoved(const QString&)
- a new KDE service type was defined "KWallet/Plugin" via kdeui/util/kwallet-plugin.desktop
    * this is the type that the future wallet plugins should declare
- new header was added : kdeui/util/kwalletplugin.h
* this holds a base class named WalletPlugin that all wallet plugins must implement

kdelibs/kwalletdefaultplugin was introduced :
- it gets the original org.kde.KWallet.xml file from kdeui/util,
- it gets the original code from kdeui/util/kwallet.cpp,
- as it's name suggests, it's loaded by default when applications access KWallet API.

I'm currently using this setup on my computer without problems. KWalletManager functions as usual, and the network manager plasmoid is continuing to load my wifi password, to only mention these applications.

I also did a full rebuild of my KDE setup (94 kdesrc-build components), holding my kdelibs version, to ensure no issues were introduced into kwallet.h

** Next moves **
Any thoughts about this?

The current ksecretsservice branch should now be merged with kdelibs master in order to bring in the plugin logic. I marked the commit that should be merged to master with the tag "plugin.ready". How should that be done? What would be the next steps to accomplish that? Who can help with that?

Cheers,

[1] http://standards.freedesktop.org/secret-service/
[2] http://mail.kde.org/pipermail/kde-utils-devel/2011-November/000705.html
[3] This is the only way I managed to do that. Connecting signals did not work as some forum threads suggest.

--
Valentin Rusu (IRC valir, KDE vrusu)
KSecretsService (former KSecretService, KWallet replacement)

Reply via email to