[presentation-api] Event the presentation receiver when the last session has disconnected

mfoltzgoogle has just created a new issue for 
https://github.com/w3c/presentation-api:

== Event the presentation receiver when the last session has 
disconnected ==
This is forked from #35, to specifically request a feature whereby a 
`lastsessionclosed` event would be fired on `navigator.presentation` 
when the last session connected to the presentation was closed.  The 
default behavior for this event would be to close the presentation 
document (similar to `window.close()`).  The presentation could 
prevent this behavior by calling `.preventDefault()` on the event.

This proposal was outlined in 
https://github.com/w3c/presentation-api/issues/35#issuecomment-133223748.

The arguments for this feature:
- The default behavior of calling .close() when there is only one 
controller attached to the TV is unchanged. Calling .close() in that 
scenario will close the application.
- The default behavior when multiple parties are connected is that the
 application is closed when the last controller calls .close()
- The application on the TV gets to make the ultimate decision about 
when the application is closed. (Unless the user overrides by closing 
the application through other means of course.)
- The PresentationSession API continues to match WebSocket and 
RTCDataChannel, i.e. we still have just .send()/onmessage/.close() and
 with those functions behaving the same across all three interfaces.
- So I think that what we should optimize for here is developer 
ergonomics and reducing the risk of bugs.

The arguments against:
- Another common case is that the presentation should continue running
 when  the controller is disconnected, i.e. I begin playing a movie 
using my laptop and then close the laptop.
- We don't want accidental disconnections of controllers (i.e., 
network disruption) to stop a running presentation.
- In a multiplayer game, the presentation may want to continue running
 to allow new players to join.
- This is just syntactic sugar for listening to `onsessionconnect` and
 keeping track of the number of connected sessions, then calling 
`window.close()` when the count drops to zero.


See https://github.com/w3c/presentation-api/issues/194

Received on Tuesday, 15 September 2015 22:41:39 UTC