Re: Hypothetical WebIDL block for EventTarget

On Wed, Oct 14, 2009 at 12:26 PM, Travis Leithead <travil@microsoft.com> wrote:

(crossposting to public-script-coord@w3.org, as there is some
crossover of standards).

> I realize I'm touching on a controversial topic, but I was wondering what feedback we might get by proposing that the EventTarget interface in DOM Level 3 Events be marked up with WebIDL as follows (I don't imagine controversy on any other interface):
>
What is controversial?

Can you please clarify the problem that this proposal solves?

[...]

>
> Note, this is different from http://dev.w3.org/2006/webapi/WebIDL/dom/dom2events.idl
> The point of contention is whether EventTarget should be bound to an "interface object" in the ECMAScript binding or whether it participates in the mix-in algorithm, however that will end up working (not finalized in WebIDL at the moment).
>
> For reference:
>

Where is your test code?

> Browser     this.hasOwnProperty("EventTarget")
> ===============================================
> IE8             false
> FF3.5           false (but EventTarget.prototype exists)?
> Safari4 false
> Opera10 false
>

The expectation of a |true| result would be based on on a few preconditions:
  (1) A global EventTarget property
  (2) The global object has Object.prototype in its prototype chain.
  (3) hasOwnProperty checks the both the Window and the WindowProxy.

ECMA-262 r3, s 15.1 states:
| The values of the [[Prototype]] and [[Class]] properties of the
| global object are implementation-dependent.

Off the top of my head, I'll wager that you are wrong about Firefox
3.5 and Safari.

Opera's global object is a bit different, and so event if it does have
a global EventTarget, then - this.hasOwnProperty("EventTarget") -
would probably result in the same false as:

  this.hasOwnProperty("window"); .// false in Opera.

A program would not care about outcome of whatever it is your test expects.

What is the reason for this proposal?

Garrett

Received on Wednesday, 14 October 2009 20:53:30 UTC