Re: [WebIDL] Simplify callbacks

Cameron McCormack:
>> Also if someone knows of any interfaces that use a [Callback] with
>> attributes on it, please let me know. It would simplify matters to
>> drop support for that too.

Anne van Kesteren:
> http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-nodefilter
> has them (sad face), but I am not really sure how that ends up being
> exposed.

Luckily that is constants and not attributes, and there is no strict 
need to have the NodeFilter callback be the same as the interface on 
which those constants are defined:

   interface NodeFilter {
     const ...;
   };

   callback NodeFilterCallback = unsigned short acceptNode(Node node);

>> callback EventListener = void handleEvent(Event evt);
>> typedef [FunctionOnly] EventListener EventListenerAttribute;
>> attribute EventListenerAttribute onclick;

> I think we should introduce a native IDL type "eventhandler" so you can
> write
>
> eventhandler onclick;
>
> Event handlers are extremely common and worthy of such blessing, in my
> opinion.

That makes Web IDL have a dependency on DOM Core.  Seems a bit 
backwards.  Why not just include the typedef in DOM Core itself?  You 
can even rename it from "EventListenerAttribute" to "EventHandler" if 
you wish. :)

   // This line you need to include anyway in DOM Core, for
   // addEventListener to use.
   callback EventListener = void handleEvent(Event evt);

   // So you're just adding this one line:
   typedef [FunctionOnly] EventListener EventHandler;

And all specs defining event handler properties just do:

   attribute EventHandler onclick;

Received on Thursday, 15 December 2011 01:52:43 UTC