Re: [remote-playback] RemotePlaybackState enum can become misleading when changing media.src (#125)

> My concern is that by introducing a new state, it makes things more confusing. I see the RemotePlaybackState as a connection state and unsupported isn't much of a connection state. Can you go from unsupported to disconnected? or to connecting?

To answer your question with another question, can you go from `disconnected` to `disconnected`?  I don't think that makes sense, but that's what would happen if you used the default media controls to try to initiate remote playback, or if the system/UA tried to initiate Remote Playback. You'd either get a `disconnected` event without a matching `connecting` one, or you'd get nothing at all, which is worse.

So, can you go from `unsupported` to `disconnected`? Sure, if the user explicitly selects local playback as a result of `prompt()`, or in a similar interface provided by the UA, or if the remote device becomes unavailable.  Can you go from `unsupported` to `connecting`? Sure, if the `video.src` changes to a supported media type, or if the user selects a different endpoint that does support the current media type. I think all that state transition is clear and makes sense.

> Is it what we want though? If we tell the page what happened, shouldn't we let the page decide?

As I said above, there's a hole in that flow, namely around UA-driven remote playback. I also think it's weird that every time a page gets a "disconnected" event, they have to check some status code to try and tell if the disconnection is recoverable.  Another is that a) `video.src = null; video.load(); video.src = 'foo.mp4'`, b) `video.src = 'foo.mp4'` and c) `video.srcObject = mediaSource; video.src = 'foo.mp4' all have different behaviors. If you start with a connected remote playback session, b) will result in a connected remote playback session, c) will result in a disconnected remote playback session, and a) is not really clear about whether it will or not.  Introducing a `unsupported` state would mean all three would result in the same behavior: "foo.mp4" would start playing remotely.

-- 
GitHub Notification of comment by jernoble
Please view or discuss this issue at https://github.com/w3c/remote-playback/issues/125#issuecomment-523576898 using your GitHub account

Received on Wednesday, 21 August 2019 17:53:39 UTC