After some good hints from Oliver I did some investigation on this issue. Indeed it looks like the chromium snap is doing the right thing: it first checks if the D-Bus service "org.freedesktop.portal.Desktop" is running (if not, it falls back on calling ListActivatableNames, which is not ideal because this currently gets blocked by AppArmor -- but in my tests the call to NameHasOwner works, so this path is not even taken), and then it checks that the "version" property on the "org.freedesktop.portal.FileChooser" interface is at least 3.
After some good hints from Oliver I did some investigation on this issue. Indeed it looks like the chromium snap is doing the right thing: it first checks if the D-Bus service "org.freedeskto p.portal. Desktop" is running (if not, it falls back on calling ListActivatable Names, which is not ideal because this currently gets blocked by AppArmor -- but in my tests the call to NameHasOwner works, so this path is not even taken), and then it checks that the "version" property on the "org.freedeskto p.portal. FileChooser" interface is at least 3.
Unfortunately, on my Focal system this version is 2 (version 3 was released just about at the time when Focal was: https:/ /github. com/flatpak/ xdg-desktop- portal/ commit/ 00b28db5ca45bcb dfea0ddfff8447a 3f8836bfd9), so the portal dialog is not used.