Re: [TreatNonCallableAsNull] alternative?

On Tuesday, 6 March 2012 at 23:50, Cameron McCormack wrote:

> Cameron McCormack:
> > > Regardless, I don't think we want to allow [TreatNonCallableAsNull]
> > > behaviour elsewhere. It's not consistent with how type conversion is
> > > done elsewhere.
> >  
>  
>  
>  
> Anne van Kesteren:
> > Okay, so you
> >  
> > 1. Only want to use [TreatNonCallableAsNull] for event handler attributes
>  
> Yes.
>  
> > 2. Favor consistency of type conversion over event handler attribute
> > consistency
>  
>  
>  
> When it comes to using [TreatNonCallableAsNull] for things other than  
> event handler attributes, yes.
>  
> > I and some others argue for
> >  
> > A. Only want to use [TreatNonCallableAsNull] for event handler attributes
> > B. Favor consistency of event handler attributes
>  
>  
>  
> Consistency among event handler attributes? That's my preference too.  
> But not Boris'.
>  
> Anyway, the strongest objection I have in this issue is against the use  
> of [TreatNonCallableAsNull] for things other than event handler  
> attributes. My opinion on whether [TreatNonCallableAsNull] should be  
> used only for specific event handler attributes or for all of them is a  
> weak one.
>  
> > So it seems we both only want [TreatNonCallableAsNull] for event handler
> > attributes, but the disagreement is about whether all event handler
> > attributes should be the same IDL-wise. So lets focus on that (maybe
> > issue a CfC?) because I think it would be really great if
> >  
> > [TreatNonCallableAsNull] attribute Function? oncanplaythrough;
> >  
> > [Callback=FunctionOnly, NoInterfaceObject]
> > interface Function {
> > any call(any... arguments);
> > };
> >  
> > could become
> >  
> > eventhandler oncanplaythrough;
> >  
> > with "eventhandler" being a defined type in IDL reserved for members
> > starting with "on" having equivalent semantics to other members starting
> > with "on" throughout the platform.
>  
>  
>  
> [Callback=FunctionOnly] is gone from the spec, so what you currently do  
> have to write is:
>  
> callback Function = any (any... arguments);
> typedef [TreatNonCallableAsNull] Function? eventhandler;
>  
> in one place, say DOM Core, and then all definitions of event handler  
> attributes can become
>  
> attribute eventhandler onblah;
>  
> I am sympathetic to having
>  
> callback Function = any (any... arguments);
>  
> built-in, in fact I would be happy to include that to the Common  
> Definitions section at the bottom of the spec, if you like.
>  
> > On top of that you still need the boilerplate language from HTML (which
> > cannot move to DOM last time I checked because some dependencies), but
> > at least the IDL will look clean, [TreatNonCallableAsNull] will not
> > accidentally be used elsewhere, and one-time typedef's are not needed
> > either.
>  
>  
>  
> I don't see what's so bad about the one-time typedef. Typedefs exist to  
> avoid repetition like that!
>  
> Defining "eventhandler" as a built-in type in the IDL just seems like an  
> abstraction violation to me.

FWIW, I'm swinging towards agreeing with Cam hereā€¦ maybe DOM4 is actually the right place to define this in the manner that he states above. DOM4 does govern event handlers after all.    

--  
Marcos Caceres

http://datadriven.com.au  

Received on Wednesday, 7 March 2012 11:25:00 UTC