- From: Kostiainen, Anssi <anssi.kostiainen@intel.com>
- Date: Mon, 27 Apr 2015 15:28:53 +0000
- To: "mark a. foltz" <mfoltz@google.com>
- CC: "public-secondscreen@w3.org" <public-secondscreen@w3.org>
Hi, > On 25 Apr 2015, at 01:21, mark a. foltz <mfoltz@google.com> wrote: > > Anssi, > > I think your proposal helps the common use case, but has some pitfalls. I'll provide some feedback here but feel free to open a GH issue for further discussion. Thanks for the feedback! The promise-returning attribute is fairly bleeding edge thing, not in use widely, so I wasn't sure whether it would work here. I opened an issue for this: https://github.com/w3c/presentation-api/issues/81 Also added this to the F2F agenda. > (1) There can be multiple availability transitions, and the Promises guide encourages use of Promises for one time events, but not recurring events [1]. When crafting the proposal, I was looking at: [[ In certain cases, promises can be useful as a general mechanism for signaling state transitions. This usage is subtle, but can provide a very nice API for consumers when done correctly. http://www.w3.org/2001/tag/doc/promises-guide#state-transitions ]] ... which seemed to suggest this *might* work. > Promises can only be resolved once, so the ready attribute would have to be refreshed with a new Promise after each transition. But the author doesn't know when that new Promise might be available. What would the code look like - maybe: > > navigator.presentation.ready.then(function(p) { > p.startSession('http://example.org') > .then(setSession) > .catch(endSession); > }); > > function setSession() { > // Do we need to await navigator.presentation.ready while a session is in progress? Since .ready signals display availability the author should not care at this point given she has a session object already (that has .state to monitor PresentationSessionState). .ready would resolve here as long as displays N>1. > } > > function endSession() { > // Clean up previous session > // We might end up missing the next unavailable -> available transition here? Good catch. That transition we could not catch with a single .ready, so calling .ready here would resolve even if the state had transitioned to unavailable and back to available in between. Analogous to roaming from a room to another, while connecting the device with HDMI, yielding a state transition: connected -(1)-> disconnected -(2)-> connected The (1) transition would be singled via PresentationSession.state === "disconnected". The (2) transition would be undetected. > navigator.presentation.ready.then(function(p) { > p.startSession('http://example.org') > .then(setSession) > .catch(endSession); > }); > > Perhaps developing a longer code sample in the GH issue showing handling of both available -> unavailable and unavailable -> available transitions would let us get a clearer picture. All - if you feel like experimenting further with the examples please feel free to do so, and post your results at: https://github.com/w3c/presentation-api/issues/81 > (2) If the UA were to (for example) roam onto a wireless network with a presentation screen, the user would suddenly see a presentation request, which seems a little odd. My understanding was that .ready would resolve when the number of available displays goes from zero to N, where N>1. That in itself would not trigger a presentation request, just inform the web author that there are displays available. The browser chrome might lit some indicator a la web audio in use at this point too, but that's an implementation detail. Only when startSession() or joinSession() would be called, there would be a presentation request to ask for user permission. Thanks, -Anssi (WG chair) > [1] http://www.w3.org/2001/tag/doc/promises-guide#recurring-events
Received on Monday, 27 April 2015 15:29:28 UTC