diff --git a/index.html b/index.html index 16596d72a..474e46256 100644 --- a/index.html +++ b/index.html @@ -187,6 +187,8 @@
+ The [=manifest's=] protocol_handlers
member is an array
+ of protocol handler descriptions that allows a web application
+ to handle URL protocols.
+
+ Protocol handlers could, for instance, be used for web app + communication where one app directly invokes another and passes data + via custom protocol links. +
++ How protocol handlers are presented, and how many of them are shown + to the user, is at the discretion of the user agent and/or operating + system. +
++ To process the `protocol_handlers` member, given + [=object=] |json:JSON|, |manifest:ordered map|, and |manifest + URL:URL|: +
++ A user agent SHOULD ask users for permission before registering a + protocol handler description protocol_handlers as + the default handler for a protocol with the host operating system. A + user agent MAY truncate the list of protocol handler + description protocol_handlers presented in order to + remain consistent with the conventions or limitations of the host + operating system. +
+ ++ Each protocol handler description is an [=object=] that + represents a protocol that the web application wants to handle. It has + the following members: +
++ A user agent SHOULD use these values to register the web application as + a handler with the operating system. When the user activates a protocol + handler URL, the user agent SHOULD run handling a protocol + launch. +
+
+ [[HTML]]'s {{NavigatorContentUtils/registerProtocolHandler()}} allows
+ web sites to register themselves as possible handlers for particular
+ protocols. What constitutes valid protocol
and
+ url
values for protocol handler descriptions is
+ defined in that API. Also note that the [[HTML]] API uses
+ [=url/scheme=] where we use protocol
but the same
+ restrictions apply.
+
+ The protocol member of a protocol handler + description is a string that represents the protocol to be + handled, such as `mailto` or `web+auth`. +
++ The protocol member of a protocol handler description + is equivalent to + {{NavigatorContentUtils/registerProtocolHandler()}}'s |scheme| + argument defined in [[HTML]]. +
++ The url member of a protocol handler description is + the URL [=manifest/within scope=] of the application that + opens when the associated protocol is activated. +
+
+ The url member of a protocol handler description is
+ equivalent to {{NavigatorContentUtils/registerProtocolHandler()}}'s
+ url
argument defined in [[HTML]].
+
+ When a protocol handler description + protocol_handler having [=manifest=] manifest + is invoked, it goes through the same steps used to [=invoke a + protocol handler=] defined in [=HTML=], where the user agent SHOULD + navigate to [=url=] and the appropriate browsing context is set to a + new top level browsing context. +
++ When a web application is installed, a user agent MAY [=register a + protocol handler=]. +
++ Privacy concerns for custom scheme handling are detailed in the + Security and privacy section of + {{NavigatorContentUtils/registerProtocolHandler()}}. Before invoking a + protocol handler for the first time, the user agent prompts to request + for permission, there is no communication with another application + beforehand. +