- From: Harald Alvestrand <harald@alvestrand.no>
- Date: Mon, 12 Aug 2013 10:21:13 +0200
- To: Jan-Ivar Bruaroey <jib@mozilla.com>
- CC: "public-webrtc@w3.org" <public-webrtc@w3.org>
On 08/06/2013 05:57 PM, Jan-Ivar Bruaroey wrote: > I think this looks great - I'm working on implementing this for > Firefox, so I appreciate all the good info! > > I have a few general comments on the webidl to start (sorry if this is > outside the scope of your post). > > Our webidl guy (behind our webidl compiler), had two concerns with the > spec that he shared with me: > > The first was the polymorphism implied in the RTCStats-derived > dictionaries returned. He thinks webidl wont work that way and that > any bindings generated (for c++ for instance) from this as written, > will only ever return timestamp, type and id this way, and none of the > derived fields. I think this can be circumvented using a union: > > typedef (RTCStats or > RTCRTPStreamStats or > RTCInboundRTPStreamStats or > RTCOutboundRTPStreamStats or > RTCMediaStreamTrackStats or > MediaStream or > RTCTransport or > RTCIceComponentStats or > RTCIceCandidatePairStats or > RTCIceCandidate or > RTCCodec) AnyRTCStats; > > and have the API return AnyRTCStats. Yes, WebKit has this issue too, which leads to convoluted stuff. We solved a similar situation elsewhere by telling WebIDL that the API object was an Object with a custom getter, rather than a dictionary (and then waiting for Blink / WebIDL to support dictionaries better. The union defeats our purpose, since it limits the legal forms of stats to just those that made it into the union; we want to be able to add new stats at will, including implementation-defined ones. > > The second point was that getters apparently have name collision > issues, and he was wondering if it would be better for our needs to > return a (read-only) "Map-like" object > http://dev.w3.org/2006/webapi/WebIDL/#MapClass like this: > > [MapClass(DOMString, AnyRTCStats)] > interface RTCStatsReport {}; This seems like an interesting direction to go - would this be instead of using Dictionary? Which interfaces today utilize the [MapClass] extended attribute? (I like to look at examples...) BTW, shouldn't it be MapClass(DOMString, DOMString or Integer or ....) above? > > A third comment from someone else was that we could use interfaces > here, which would give us inheritance (to avoid the long and growing > typedef above), though that seems like overkill, to me, for data > that's never passed back to the browser, but I wanted to mention it. > > --- > > I have no specific comment on the specific fields yet, except that the > naming seems to be inconsistent in a few places. For instance, I would > have expected "RTCMediaStreamStats" rather than "MediaStream" etc. Are > those short-hands or typos? Probably a combination of both.
Received on Monday, 12 August 2013 08:21:01 UTC