So Vivaldi also does that, apparently and its source code is pretty much exposed, albeit in a less obvious way -
Someone created an outdated mirror, though -
Anyway, you can see what they did there (good luck ;)).
I suspect a possibly shorter way/workaround to do this would be at the network stack level and at the omnibox level -
- In the network stack - whenever xyz:// is encountered, replace with chrome://
- In the omnibox - whenever chrome:// is supposed to be shown, replace with xyz:// (and - optionally - whenever the user goes to xyz:// via the omnibox, change to chrome:// before you navigate, though the network stack would do that already)
- For a more complete experience, you can also change the status bubble so that the user will not see chrome:// when they hover over a link
It sounds a bit hacky, I know, but it might just be the most forward compatible way of doing it, as they keep adding more chrome:// pages and you will have to hunt them down every time if you do it the manual way.
This means that inspecting it via the developer tools, users will still see chrome://, but I doubt this is a real issue.