- From: Marcos Caceres <w3c@marcosc.com>
- Date: Wed, 26 Jun 2013 15:39:15 +0100
- To: Boris Zbarsky <bzbarsky@mit.edu>
- Cc: public-script-coord@w3.org
On Wednesday, June 26, 2013 at 2:44 PM, Boris Zbarsky wrote: > On 6/26/13 6:15 AM, Marcos Caceres wrote: > > What I'm confused about is what does "readonly" mean in the above. Clearly, it means that the reference of the array in the attribute can't be changed - but what about the content of the array? > > Undefined. There are three different kinds of Call[] defined in WebIDL: > readonly, fixed-length, and writable. There is no way to differentiate > between them in IDL (a bug, imo), so you have to say in prose what kind > yours is. I also agree that this is a bug. It would be nice to be able to express this directly in WebIDL through an extended attribute or something. > > Can a developer do the following: > > > > telephony.calls.pop(); > > telephony.calls.push(SomeOldCallObj); > > > > If so, that would obviously be bad. > > Then you presumably want a readonly array. Yes, I had missed this in the spec: http://dev.w3.org/2006/webapi/WebIDL/#dfn-read-only-array. > > Would it then be appropriate to change the calls attribute to a sequence (i.e., sequence<Call> getCalls())? > > Here's the right litmus test for this. If a developer does: > > myCalls = telephonymanager.calls; > > Do we then want them to see the contents of myCalls change as the set of > calls the UA manages changes? Yes, the developer needs to be able to monitor changes to the array. Small question: there is an event defined for monitoring changes to the Calls array in the API ("callschanged" and corresponding "oncallschanged" event handler attribute) which I think kinda sucks (hence my previous email asking about using Object.observe) - I wanted to get rid of the event. Is there some way of monitoring this array without an event? Object.observe(telephony.calls, function(details){...}) feels really right here. > If so, you want a readonly Call[] here. ok, cool. That's super helpful, thank you! > > If not, you want a sequence. Which behavior you want is "just" an API > design decision, as far as I can tell So, for now, I will keep it as is, but put the write prose into the spec about it being a "read only array". Thanks again!
Received on Wednesday, 26 June 2013 14:39:46 UTC