While implementing https://code.launchpad.net/~unity-team/unity8/albumart-provider/+merge/189923 we observed an undesired behavior of QML/QQuickImageProvider which can break albumart uris that contain '/' as part of the string (e.g. "AC/DC" for the artist).
The code we implemented in iconutils.cpp uses QUrl::toPercentEncoding() to encode album and artist separately and then return "image://albumart/<encodedartist>/<encodedalbum>" uri to the shell (e.g "image://albumart/AC%2FDC/FooAlbum"). However, when AlbumArtProvider receives it in requestImage(..), it's all decoded ("AC/DC/FooAlbum"), even though a quick investigation showed that the string passed to requestImage by Qt is result of url.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority).mid(1), which doesn't touch the content. So, it seems like Qt decodes it already somewhere else. We should determine if this is a bug in Qt (and we can fix it?), or if we need a different approach / workaround for passing artist/album (such as using an uncommon character to separate album and artist, and not rely on encoding).
imho we should use proper urls /albumart? Artist= foo&Title= bar
image:/
That ought to keep the percent encoded stuff of the variables properly encoded