I am currently subclassing McdAccountManagerSso, and want to override the _get method; my new method wants to chain up to the original one, having stuffed in an extra entry into the keyfile.
But I can't chain up, because McpAccountStorageIface is hidden, and the vtable is filled in using _implement_foo functions. This seems completely pointless to me. The main rationale for this pattern in tp-glib's generated interfaces is to avoid reorderings in the spec affecting ABI; this does not apply to a hand-written interface in Mission Control.
This wouldn't take all that long, but I don't have time right now.
I'm told adding pointers to the end of a GInterface (i.e. increasing the size) is considered to be a compatible change (unlike the corresponding change to a class!), so none of these GInterfaces really need to be hidden (or have ABI padding, for that matter).
I have started to make this change in this branch: http://git.collabora.co.uk/?p=user/wjt/telepathy-mission-control-wjt.git;a=shortlog;h=refs/heads/fd.o-32914-unhide-McpAccountStorageIface
It is on top of some other branches mainly because I am lazy.
A belated r+ for your branch, except that commit 3/3 should be amended to say McpAccountStorageIface, not McpAccountManagerIface.
(For the record: it's correct that McpAccountManagerIface is in implementation.h, and likewise for DispatchOperation and Request, because they're meant to only ever be implemented by MC itself.)
I have a branch to do the same with the remaining interfaces, and also improve documentation; I'll clone a bug.
Released in 5.7.11