Oh, certainly - I just started looking at the Worker constructor code, so I definitely have no sense of ownership there, so pick away. I was just trying to understand the issues well enough to understand what the Worker code is doing before I steal it :) Looking at the Workers code (since that happens to be where I'm poking around):
JSWorkerConstructor::JSWorkerConstructor(ExecState* exec) : DOMObject(JSWorkerConstructor::createStructure(exec->lexicalGlobalObject()->objectPrototype())) { *putDirect(exec->propertyNames().prototype, JSWorkerPrototype::self(exec, exec->lexicalGlobalObject()), None);* putDirect(exec->propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum); } It looks like the constructor's .prototype is taken from the originating window (set at the time the constructor itself is created) - I haven't followed the construction code, but I'm guessing that results in the prototype property of new objects being attached to the chain from the original window. Is that incorrect behavior? -atw On Tue, Jun 23, 2009 at 3:44 PM, Adam Barth <aba...@webkit.org> 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. :) > > Adam > > > On Tue, Jun 23, 2009 at 3:38 PM, Drew Wilson<atwil...@google.com> wrote: > > BTW, Adam - can you elaborate your specific concerns? > > > > On Tue, Jun 23, 2009 at 3:37 PM, Drew Wilson <atwil...@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 <aba...@webkit.org> wrote: > >>> > >>> 2009/6/23 Drew Wilson <atwil...@google.com>: > >>> > On Tue, Jun 23, 2009 at 11:49 AM, Adam Barth <aba...@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 > >> > > > > >
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev