[webkit-dev] document()->frame()->script()->globalObject()

Maciej Stachowiak mjs at apple.com
Thu Jul 23 17:50:14 PDT 2009


On Jul 23, 2009, at 5:38 PM, Eric Seidel wrote:

> I'm trying to get a JSDOMGlobalObject from a Node*.  A Node* should
> always have one, but our current path through Frame* can sometimes
> fail.

Right - what confuses me is that you posted the toJS() function for  
DOMWindow, where there's no document or node involved. It does go  
through the frame, but that's to convert properly to the outer window,  
which is what you should get when you expose a window object to JS. I  
think it's reasonable for a document to know about its innner window,  
in our current design.

  - Maciej

>
> -eric
>
> On Thu, Jul 23, 2009 at 5:33 PM, Maciej Stachowiak<mjs at apple.com>  
> wrote:
>>
>> On Jul 23, 2009, at 5:23 PM, Eric Seidel wrote:
>>
>> It seems all lookups of the current globalObject go through the  
>> frame.
>> document()->frame()->script()->globalObject() is one example.
>>
>> Another:
>> JSValue toJS(ExecState*, DOMWindow* domWindow)
>> {
>>    if (!domWindow)
>>        return jsNull();
>>    Frame* frame = domWindow->frame();
>>    if (!frame)
>>        return jsNull();
>>    return frame->script()->windowShell();
>> }
>>
>> Why?  Shouldn't the Document know what its JSDOMGlobalObject is,
>> regardless of whether its currently in a Frame or not?
>>
>> The document should probably know its own inner window object,  
>> while the
>> frame should hold on to the outer window. I'm not entirely clear on  
>> how the
>> document relates to the code you quoted though.
>>  - Maciej
>>



More information about the webkit-dev mailing list