Re: [webkit-dev] Setting event handlers on the global context

2009-07-20 Thread Drew Wilson
Ran a quick test on Opera and IE along these lines:
htmlbodyscript function onload() { alert(onload); }
/script/body/html

Only firefox displayed the alert dialog when loading this page -
IE/Opera/WebKit do not. So if this behavior is incorrect, at least we have
lots of company.

-atw

On Sun, Jul 19, 2009 at 4:28 PM, Maciej Stachowiak m...@apple.com wrote:


 On Jul 19, 2009, at 11:10 AM, Adam Barth wrote:

  I think we should do what Firefox does in the window.onload case.  :)

 I'm not familiar with the history through.  Is there some particular
 reason we have our current behavior?


 The current behavior is an accident of implementation, but I think the
 relevant applicable spec is somewhat ambiguous. A function declaration
 creates a new var-like binding which shadows the underlying onmessage
 setter.

 The relevant spec here is ECMAScript, not HTML5. In ECMA-262, section
 10.1.3 is what would apply, I haven't checked the proper reference for the
 fifth edition draft. Regarding the declaration of a function with the same
 name as an existing property, it says: If the variable object already has a
 property with this name, replace its value and attributes. So a vanilla
 property should get replaced with a DontDelete property, but in the case of
 a setter it's not clear whether it should be replaced or shadowed.

 It would probably be good to match other browsers. I am curious what IE and
 Opera do here. I would also be curious if ECMAScript 5 is more clear about
 what to do when a function declaration has the same name as a setter
 property, since it supports getters and setters in the spec.

  his would be slightly, but not insanely tricky to fix. The relevant code
 is all in BytecodeGenerator::BytecodeGenerator(ProgramNode*
 programNode), since this only affects global scope. The change could
 have far-reaching consequences so we'd have to be on the lookout for Web
 compatibility regressions if we change this.

 Regards,
 Maciej



 Adam


 On Sun, Jul 19, 2009 at 10:56 AM, Drew Wilsonatwil...@google.com wrote:

 Yes, it happens with window.onload() too (I didn't mean to imply that it
 was
 a worker-only issue).
 This seems like precisely the type of inoperability that the HTML5 spec
 should address, but I figured I should get some input here before
 bringing
 it up there.
 -atw

 On Sun, Jul 19, 2009 at 10:31 AM, Adam Barth aba...@webkit.org wrote:


 You should test the same thing with window.onload.  If I recall
 correctly, you'll see similar inoperability.

 Adam


 On Sun, Jul 19, 2009 at 9:29 AM, Drew Wilsonatwil...@google.com
 wrote:

 I was writing a new worker unit test and I noticed that all of our unit
 tests set event handlers in worker global context like so:
 onmessage = function(event) { ... do something ... };
 I note that Firefox also allows setting event handlers like this:
 function onmessage(event) { ... do something ... };
 In WebKit, the latter form creates a function at global scope named
 onmessage but does not set it as an event handler.
 I'm trying to figure out what the correct behavior should be - I've
 asked
 IanH, and his response was that he dimly recalls that both forms should
 be
 valid (through a convoluted argument that I forget right now, but
 which
 should be examined carefully by whoever implements this, and which
 requires
 careful examination of at least the ECMAScript spec and maybe also the
 WebIDL and HTML5 specs) - basically, he wasn't entirely certain and
 thought
 I should check here and with the Mozilla devs to get your opinions.
 Anyone familiar enough with the various specs to make a definitive
 argument
 one way or the other?
 -atw







 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev




  ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev



___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Setting event handlers on the global context

2009-07-20 Thread Adam Barth
You might want to ask someone at Mozilla if they'd be willing to
change their behavior to match everyone else.  The whatwg might be a
good forum for that if you're not sure who to contact individually.

Adam


On Mon, Jul 20, 2009 at 6:30 PM, Drew Wilsonatwil...@google.com wrote:
 Ran a quick test on Opera and IE along these lines:
 htmlbodyscript function onload() { alert(onload); }
 /script/body/html
 Only firefox displayed the alert dialog when loading this page -
 IE/Opera/WebKit do not. So if this behavior is incorrect, at least we have
 lots of company.
 -atw

 On Sun, Jul 19, 2009 at 4:28 PM, Maciej Stachowiak m...@apple.com wrote:

 On Jul 19, 2009, at 11:10 AM, Adam Barth wrote:

 I think we should do what Firefox does in the window.onload case.  :)

 I'm not familiar with the history through.  Is there some particular
 reason we have our current behavior?

 The current behavior is an accident of implementation, but I think the
 relevant applicable spec is somewhat ambiguous. A function declaration
 creates a new var-like binding which shadows the underlying onmessage
 setter.

 The relevant spec here is ECMAScript, not HTML5. In ECMA-262, section
 10.1.3 is what would apply, I haven't checked the proper reference for the
 fifth edition draft. Regarding the declaration of a function with the same
 name as an existing property, it says: If the variable object already has a
 property with this name, replace its value and attributes. So a vanilla
 property should get replaced with a DontDelete property, but in the case of
 a setter it's not clear whether it should be replaced or shadowed.

 It would probably be good to match other browsers. I am curious what IE
 and Opera do here. I would also be curious if ECMAScript 5 is more clear
 about what to do when a function declaration has the same name as a setter
 property, since it supports getters and setters in the spec.

  his would be slightly, but not insanely tricky to fix. The relevant code
 is all in BytecodeGenerator::BytecodeGenerator(ProgramNode*
 programNode), since this only affects global scope. The change could
 have far-reaching consequences so we'd have to be on the lookout for Web
 compatibility regressions if we change this.

 Regards,
 Maciej


 Adam


 On Sun, Jul 19, 2009 at 10:56 AM, Drew Wilsonatwil...@google.com wrote:

 Yes, it happens with window.onload() too (I didn't mean to imply that it
 was
 a worker-only issue).
 This seems like precisely the type of inoperability that the HTML5 spec
 should address, but I figured I should get some input here before
 bringing
 it up there.
 -atw

 On Sun, Jul 19, 2009 at 10:31 AM, Adam Barth aba...@webkit.org wrote:

 You should test the same thing with window.onload.  If I recall
 correctly, you'll see similar inoperability.

 Adam


 On Sun, Jul 19, 2009 at 9:29 AM, Drew Wilsonatwil...@google.com
 wrote:

 I was writing a new worker unit test and I noticed that all of our
 unit
 tests set event handlers in worker global context like so:
 onmessage = function(event) { ... do something ... };
 I note that Firefox also allows setting event handlers like this:
 function onmessage(event) { ... do something ... };
 In WebKit, the latter form creates a function at global scope named
 onmessage but does not set it as an event handler.
 I'm trying to figure out what the correct behavior should be - I've
 asked
 IanH, and his response was that he dimly recalls that both forms
 should
 be
 valid (through a convoluted argument that I forget right now, but
 which
 should be examined carefully by whoever implements this, and which
 requires
 careful examination of at least the ECMAScript spec and maybe also the
 WebIDL and HTML5 specs) - basically, he wasn't entirely certain and
 thought
 I should check here and with the Mozilla devs to get your opinions.
 Anyone familiar enough with the various specs to make a definitive
 argument
 one way or the other?
 -atw







 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev




 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev



___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Setting event handlers on the global context

2009-07-19 Thread Adam Barth
You should test the same thing with window.onload.  If I recall
correctly, you'll see similar inoperability.

Adam


On Sun, Jul 19, 2009 at 9:29 AM, Drew Wilsonatwil...@google.com wrote:
 I was writing a new worker unit test and I noticed that all of our unit
 tests set event handlers in worker global context like so:
 onmessage = function(event) { ... do something ... };
 I note that Firefox also allows setting event handlers like this:
 function onmessage(event) { ... do something ... };
 In WebKit, the latter form creates a function at global scope named
 onmessage but does not set it as an event handler.
 I'm trying to figure out what the correct behavior should be - I've asked
 IanH, and his response was that he dimly recalls that both forms should be
 valid (through a convoluted argument that I forget right now, but which
 should be examined carefully by whoever implements this, and which requires
 careful examination of at least the ECMAScript spec and maybe also the
 WebIDL and HTML5 specs) - basically, he wasn't entirely certain and thought
 I should check here and with the Mozilla devs to get your opinions.
 Anyone familiar enough with the various specs to make a definitive argument
 one way or the other?
 -atw







 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Setting event handlers on the global context

2009-07-19 Thread Drew Wilson
Yes, it happens with window.onload() too (I didn't mean to imply that it was
a worker-only issue).
This seems like precisely the type of inoperability that the HTML5 spec
should address, but I figured I should get some input here before bringing
it up there.

-atw

On Sun, Jul 19, 2009 at 10:31 AM, Adam Barth aba...@webkit.org wrote:

 You should test the same thing with window.onload.  If I recall
 correctly, you'll see similar inoperability.

 Adam


 On Sun, Jul 19, 2009 at 9:29 AM, Drew Wilsonatwil...@google.com wrote:
  I was writing a new worker unit test and I noticed that all of our unit
  tests set event handlers in worker global context like so:
  onmessage = function(event) { ... do something ... };
  I note that Firefox also allows setting event handlers like this:
  function onmessage(event) { ... do something ... };
  In WebKit, the latter form creates a function at global scope named
  onmessage but does not set it as an event handler.
  I'm trying to figure out what the correct behavior should be - I've asked
  IanH, and his response was that he dimly recalls that both forms should
 be
  valid (through a convoluted argument that I forget right now, but which
  should be examined carefully by whoever implements this, and which
 requires
  careful examination of at least the ECMAScript spec and maybe also the
  WebIDL and HTML5 specs) - basically, he wasn't entirely certain and
 thought
  I should check here and with the Mozilla devs to get your opinions.
  Anyone familiar enough with the various specs to make a definitive
 argument
  one way or the other?
  -atw
 
 
 
 
 
 
 
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
  http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Setting event handlers on the global context

2009-07-19 Thread Adam Barth
I think we should do what Firefox does in the window.onload case.  :)

I'm not familiar with the history through.  Is there some particular
reason we have our current behavior?

Adam


On Sun, Jul 19, 2009 at 10:56 AM, Drew Wilsonatwil...@google.com wrote:
 Yes, it happens with window.onload() too (I didn't mean to imply that it was
 a worker-only issue).
 This seems like precisely the type of inoperability that the HTML5 spec
 should address, but I figured I should get some input here before bringing
 it up there.
 -atw

 On Sun, Jul 19, 2009 at 10:31 AM, Adam Barth aba...@webkit.org wrote:

 You should test the same thing with window.onload.  If I recall
 correctly, you'll see similar inoperability.

 Adam


 On Sun, Jul 19, 2009 at 9:29 AM, Drew Wilsonatwil...@google.com wrote:
  I was writing a new worker unit test and I noticed that all of our unit
  tests set event handlers in worker global context like so:
  onmessage = function(event) { ... do something ... };
  I note that Firefox also allows setting event handlers like this:
  function onmessage(event) { ... do something ... };
  In WebKit, the latter form creates a function at global scope named
  onmessage but does not set it as an event handler.
  I'm trying to figure out what the correct behavior should be - I've
  asked
  IanH, and his response was that he dimly recalls that both forms should
  be
  valid (through a convoluted argument that I forget right now, but which
  should be examined carefully by whoever implements this, and which
  requires
  careful examination of at least the ECMAScript spec and maybe also the
  WebIDL and HTML5 specs) - basically, he wasn't entirely certain and
  thought
  I should check here and with the Mozilla devs to get your opinions.
  Anyone familiar enough with the various specs to make a definitive
  argument
  one way or the other?
  -atw
 
 
 
 
 
 
 
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
  http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 


___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Setting event handlers on the global context

2009-07-19 Thread Maciej Stachowiak


On Jul 19, 2009, at 11:10 AM, Adam Barth wrote:


I think we should do what Firefox does in the window.onload case.  :)

I'm not familiar with the history through.  Is there some particular
reason we have our current behavior?


The current behavior is an accident of implementation, but I think the  
relevant applicable spec is somewhat ambiguous. A function declaration  
creates a new var-like binding which shadows the underlying onmessage  
setter.


The relevant spec here is ECMAScript, not HTML5. In ECMA-262, section  
10.1.3 is what would apply, I haven't checked the proper reference for  
the fifth edition draft. Regarding the declaration of a function with  
the same name as an existing property, it says: If the variable  
object already has a property with this name, replace its value and  
attributes. So a vanilla property should get replaced with a  
DontDelete property, but in the case of a setter it's not clear  
whether it should be replaced or shadowed.


It would probably be good to match other browsers. I am curious what  
IE and Opera do here. I would also be curious if ECMAScript 5 is more  
clear about what to do when a function declaration has the same name  
as a setter property, since it supports getters and setters in the spec.


 his would be slightly, but not insanely tricky to fix. The relevant  
code is all in BytecodeGenerator::BytecodeGenerator(ProgramNode*  
programNode), since this only affects global scope. The change  
could have far-reaching consequences so we'd have to be on the lookout  
for Web compatibility regressions if we change this.


Regards,
Maciej



Adam


On Sun, Jul 19, 2009 at 10:56 AM, Drew Wilsonatwil...@google.com  
wrote:
Yes, it happens with window.onload() too (I didn't mean to imply  
that it was

a worker-only issue).
This seems like precisely the type of inoperability that the HTML5  
spec
should address, but I figured I should get some input here before  
bringing

it up there.
-atw

On Sun, Jul 19, 2009 at 10:31 AM, Adam Barth aba...@webkit.org  
wrote:


You should test the same thing with window.onload.  If I recall
correctly, you'll see similar inoperability.

Adam


On Sun, Jul 19, 2009 at 9:29 AM, Drew Wilsonatwil...@google.com  
wrote:
I was writing a new worker unit test and I noticed that all of  
our unit

tests set event handlers in worker global context like so:
onmessage = function(event) { ... do something ... };
I note that Firefox also allows setting event handlers like this:
function onmessage(event) { ... do something ... };
In WebKit, the latter form creates a function at global scope named
onmessage but does not set it as an event handler.
I'm trying to figure out what the correct behavior should be - I've
asked
IanH, and his response was that he dimly recalls that both forms  
should

be
valid (through a convoluted argument that I forget right now,  
but which

should be examined carefully by whoever implements this, and which
requires
careful examination of at least the ECMAScript spec and maybe  
also the
WebIDL and HTML5 specs) - basically, he wasn't entirely certain  
and

thought
I should check here and with the Mozilla devs to get your opinions.
Anyone familiar enough with the various specs to make a definitive
argument
one way or the other?
-atw







___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev






___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev