[whatwg] Window and WindowProxy

Boris Zbarsky bzbarsky at MIT.EDU
Wed Aug 7 20:53:19 PDT 2013


On 8/7/13 5:18 PM, Ian Hickson wrote:
> We could indeed move the indexed properties to WindowProxy, while leaving
> the security checks (which apply to non-indexed properties only) on
> Window. This would still address my concern, which is that if we move the
> security checks to WindowProxy, and then break the invariant whereby you
> can't actually get to a cross-origin Window directly

If we break that invariant, fwiw, then I suspect we have much bigger 
problems.

> Would it address your concerns?

I think it would be a step up from where we are right now...

> (I'm not sure I 100%
> understand what those are yet, i.e. why you want this moved.)

Because the current spec effectively calls for the global to be a 
proxy-like object (or some sort of object that's not describable in ES 
spec terms at all, of course, but the idea of ES proxies is to be able 
to describe anything remotely sane).  That's not actually compatible 
with ES because of how "var" needs to behave in global scope.

So it seems to me that any implementor trying to implement this spec 
will go to their favorite ES implementation and discover that the spec 
cannot be implemented as written and must instead be mapped to some 
other conceptual model.  After thinking about it for a bit, the only 
obvious way to avoid having proxy-like behavior on the Window is to put 
it all on WindowProxy, which _already_ has proxy-like behavior no matter 
what.

At which point, I think we should spec it that way, for two reasons:

1)  It reduces the burden on implementors trying to understand this part 
of the spec and map it to what ES will let them do.

2)  It reduces the likelihood that some modification to ES or the 
Window/WindowProxy specs will in fact make things unimplementable 
altogether in the future.

> The difficulty with moving just the indexed properties are that "length"
> would now be on a different object than what it describes.

I don't think that's a problem, honestly.  "length" on a Window returns 
the number of child windows.  An indexed access on a WindowProxy returns 
the corresponding child of its current Window.  It seems fairly 
straightforward...

> Also, it would
> complicate the WindowProxy magic -- now, instead of it just being a proxy,
> it would be a proxy except for certain properties.

Indeed.  Of course WindowProxy is already not "just a proxy": it doesn't 
transparently proxy enumeration or getOwnPropertyNames, for example. 
That's just not very clearly specified...  Again, I think we should just 
clearly define the behavior of WindowProxy using the ES MOP primitives.

> Can you elaborate on what the problem is with the current approach?

Does the above help?

-Boris




More information about the whatwg mailing list