- From: Anton Vayvod via GitHub <sysbot+gh@w3.org>
- Date: Tue, 01 Sep 2015 09:06:03 +0000
- To: public-secondscreen@w3.org
I'd think user would prefer being in control - imagine a presentation
that
misbehaves intentionally or not and doesn't shut itself down. There
must be
a way to explicitly stop the presentation that doesn't involve
rebooting
the second screen.
On 1 Sep 2015 4:23 a.m., "Mark Foltz" <notifications@github.com>
wrote:
> I actually think we can come to a good solution here by adjusting
the
> semantics I proposed earlier, and without any API facing changes.
Let's
> assume we redefine close() to mean disconnect() as discussed above.
>
> Below "controlling session" means a PresentationSession in the
controlling
> page and "presentation session" means one in the presented page.
>
> 1. Controlling page calls session.close():
> - Controlling session transitions to terminated
> - Corresponding presentation session also transitions to
terminated
> 2. Presentation is closed (by itself, by user agent, by user)
> - All controlling sessions transition to terminated
> 3. Controlling session is disconnected from presentation without
any
> call to close() (e.g. user changes WiFi networks away from TV,
> navigates away, etc.)
> - Controlling session (if it exists) transitions to closed
> - Corresponding presentation session on the presentation also
> transitions to closed
> - Presentation continues to run
> - Controlling page may want to offer "reconnect" as an option
to
> the user to resume connection via join().
> 4. Presentation wishes to "kick out" a controller (idle timeout,
etc.)
> - Calls session.close() which causes the corresponding
controlling
> session to transition to terminated.
> 5. Last connected session to the presentation transitions to
closed or
> terminated .
> - Presentation will see that all sessions are in the
non-connected
> state. It can close itself with window.close() it if wants to,
or
> wait for new connections.
>
> To simplify case 5, we can add a boolean connected property to the
change
> event fired at a session's onstatechange. The property would be true
if
> there are any sessions held by that browsing context that remain
connected
> to the presentation, false otherwise.
>
> Here is a bit of sample code for the presenting page under this
proposal:
>
> // Assume that the page already is adding the following handler to
> // incoming connected sessions.
> session.onstatechange = function(e) {
> if (e.state == 'closed' || e.state == 'terminated') {
> // Show a message that a player/controller left the
presentation.
> }
> if (!e.connected) {
> // The last controller disconnected. Close ourselves. We could
also
> // set a timer to await new connections.
> window.close();
> }
>
> This proposal does not give a single controlling session the ability
to
> terminate the entire presentation. This may actually be desirable; a
single
> player should not be able to kill the whole game, and as @sicking
> <https://github.com/sicking> argues above the presentation may be in
a
> better position to know when to quit.
>
> I still prefer using window.close() as an explicit mechanism for
> terminating the presentation page, rather than relying on a new
event's
> default behavior. If there is a good reason to create the
default-close
> behavior, is there a way to do it without adding a new event?
>
> —
> Reply to this email directly or view it on GitHub
>
<https://github.com/w3c/presentation-api/issues/35#issuecomment-136564607>
> .
>
--
GitHub Notif of comment by avayvod
See
https://github.com/w3c/presentation-api/issues/35#issuecomment-136642042
Received on Tuesday, 1 September 2015 09:06:30 UTC