- From: Anton Vayvod via GitHub <sysbot+gh@w3.org>
- Date: Wed, 29 Jun 2016 07:41:41 +0000
- To: public-secondscreen@w3.org
I've looked at the IntersectionObserver and IDBObserver. Both seem a
bit too complex for our use case, creating new objects and all. I
think I'd settle for using what Mark initially proposed - live
```availability``` attribute with an unknown value for when the state
is unobserved or the media element source has changed, but using an
observer pattern to work around the event handler issue of having to
dispatch a fake change event for the listeners attached when the
availability is known:
```webidl
enum RemotePlaybackAvailability {
"available",
"unavailable",
"unknown"
};
partial interface RemotePlayback {
// "unknown" if there's no callbacks observing its changes or if
observers are not supported.
// May become "available" or "unavailable" if and only if there're
any observers registered with
// |observeAvailability|.
readonly attribute RemotePlaybackAvailability availability;
// The returned promise is fullfilled if the website should expect
the callback to be called,
// meaning the background monitoring of remote playback device
availability is supported.
// The |availability| may now change from "unknown" to other
values.
Promise<void>
observeAvailability(RemotePlaybackAvailabilityCallback callback);
// Stops calling the specified |callback| whenever |availability|
changes. May stop the background
// availability monitoring and change |availability| to "unknown".
// If no callback is specified, stops calling any callbacks and
changes |availability| to "unknown".
// |availability| becomes "unknown".
void unobserveAvailability(optional
RemotePlaybackAvailabilityCallback callback);
};
// |available| is the new value that indicates if the devices are now
available or not
// for the |element|.
callback RemotePlaybackAvailabilityCallback = void(boolean available);
```
In the essence this adds special versions
addEventListener/removeEventListener methods to RemotePlayback to
workaround the "adding/removing event handlers should have no side
effects" rule.
--
GitHub Notification of comment by avayvod
Please view or discuss this issue at
https://github.com/w3c/remote-playback/issues/39#issuecomment-229073637
using your GitHub account
Received on Wednesday, 29 June 2016 07:41:49 UTC