The modern browser is already an operating system by all definitions I know so yes, it might as well have a firewall.
But that isn't very elegant, so I propose version 2.0:
"This site has requested communication with a local device. Please select it from this list:"
[the user is presented with a list of devices discovered by zeroconf/dns-sd/mdns/upnp matching the service descriptor given by the page]
Turns out, this was an actual spec [0] pushed by Opera of all companies. Here's a quote from the spec:
> window . navigator . getNetworkServices ( type , successCallback [, errorCallback ] )
>
> Prompts the user to select discovered network services that have advertised support for the requested service type.
>
> The type argument contains one or more valid service type tokens that the web page would like to interact with.
>
> If the user accepts, the successCallback is invoked, with zero or more NetworkService objects as its argument.
>
> If the user declines, the errorCallback (if any) is invoked.
But that isn't very elegant, so I propose version 2.0:
"This site has requested communication with a local device. Please select it from this list:"
[the user is presented with a list of devices discovered by zeroconf/dns-sd/mdns/upnp matching the service descriptor given by the page]
Turns out, this was an actual spec [0] pushed by Opera of all companies. Here's a quote from the spec:
> window . navigator . getNetworkServices ( type , successCallback [, errorCallback ] ) > > Prompts the user to select discovered network services that have advertised support for the requested service type. > > The type argument contains one or more valid service type tokens that the web page would like to interact with. > > If the user accepts, the successCallback is invoked, with zero or more NetworkService objects as its argument. > > If the user declines, the errorCallback (if any) is invoked.
[0] https://www.w3.org/TR/2012/WD-discovery-api-20121004/