Currently, you can't register a handler for linkpassword:// with WebExtensions.
As for now only the specified whitelisted protocols are allowed to be used without a prefix (one of bitcoin, geo, gopher, im, irc, ircs, magnet, mailto, mms, news, nntp, sip, sms, smsto, ssh, tel, urn, webcal, wtai, xmpp). Any other custom name requires to be prefixed with either web+ or ext+. See protocol_handlers reference.
With the prefix you can register it this way:
"protocol_handlers": [
{
"protocol" : "ext+linkpassword",
"name" : "Password Link",
"uriTemplate": "html/processLink.html#login=%s"
}
],
Then you'll have to use ext+linkpassword:// in your links to trigger the handler.
While with the current state of WebExtensions you can't set a handler for an arbitrary protocol, like linkpassword://, it is likely to change at some point, since there are some discussions about it, but it's hard to say when to expect this. As a temporary workaround before the real solution is available you can patch linkpassword:// to ext+linkpassword:// on the web page with your WebExtension JS code so that the handler is still triggered even if the links on the page were loaded with the linkpassword:// schema.