[webkit-dev] Question about Constructors in WebKit JS Bindings

Maciej Stachowiak mjs at apple.com
Tue Jun 23 16:41:18 PDT 2009

On Jun 23, 2009, at 3:44 PM, Adam Barth wrote:

> I don't mean to pick on workers specifically.  We have lots of bugs in
> the bindings where we attach the __proto__ property of new objects to
> the wrong prototype chain.  My specific concern is that we should fix
> these bugs.  :)

Tentatively speaking, I think it's always right to attach to the  
prototype chain from the constructor object actually used (i.e. the  
one present in its "prototype" property). Any time we don't do that, I  
believe it is a bug. (I'm qualifying all my statements because this  
area is complex enough that I'm unsure whether there are exceptions.)

  - Maciej

> Adam
> On Tue, Jun 23, 2009 at 3:38 PM, Drew Wilson<atwilson at google.com>  
> wrote:
>> BTW, Adam - can you elaborate your specific concerns?
>> On Tue, Jun 23, 2009 at 3:37 PM, Drew Wilson <atwilson at google.com>  
>> wrote:
>>> Not sure. There's language in the WebIDL spec around prototype  
>>> objects of
>>> interface objects, but I'm not sure how window.Worker.prototype is  
>>> intended
>>> to relate to
>>> new Worker().prototype (if at all), based on my 10 minutes of  
>>> scanning specs.
>>> -atw
>>> On Tue, Jun 23, 2009 at 3:26 PM, Adam Barth <abarth at webkit.org>  
>>> wrote:
>>>> 2009/6/23 Drew Wilson <atwilson at google.com>:
>>>>> On Tue, Jun 23, 2009 at 11:49 AM, Adam Barth <abarth at webkit.org>  
>>>>> wrote:
>>>>>>> I am not even sure all of these should have the same behavior,
>>>>>>> however. For instance, as I read the Web Workers spec, the  
>>>>>>> lexical
>>>>>>> global
>>>>>>> object may be correct thing to use for the Worker constructor.
>>>>>> I looked at the spec briefly.  What leads you to think that?   
>>>>>> It's
>>>>>> probably a bug in the spec.
>>>>> Section 4.5 of the web workers spec reads:
>>>>>> Given a script's global scope o when creating or obtaining a  
>>>>>> worker,
>>>>>> the list of relevant Document objects to add depends on the  
>>>>>> type of o. If o
>>>>>> is a WorkerGlobalScope object (i.e. if we are creating a nested  
>>>>>> worker),
>>>>>> then the relevant Documents are the Documents that are in o's  
>>>>>> own list of
>>>>>> the worker's Documents. Otherwise, o is a Window object, and  
>>>>>> the relevant
>>>>>> Document is just the Document that is the active document of  
>>>>>> the Window
>>>>>> object o.
>>>>> So it seems to imply that parent document for a worker is  
>>>>> derived from
>>>>> the currently executing script's global scope. I'll ping IanH  
>>>>> about this -
>>>>> it may not be what he intended.
>>>> There's another question, which is where does the prototype chain  
>>>> of
>>>> the JS object you get out of the worker constructor point?  It  
>>>> might
>>>> not have anything to do with this Document calculation.
>>>> Adam

More information about the webkit-dev mailing list