[scriptable, uuid(14efb76c-5bd6-449e-b36f-0cbd22981f20)]
interface nsIDOMJSWindow : nsISupports


 window.frames in Netscape 4.x and IE is just a reference to the
 window itself (i.e. window.frames === window), but this doesn't
 make sense from a generic API point of view so that's why this is
 JS specific.

 This property is "replaceable" in JavaScript.
readonly attribute nsIDOMWindow frames


 @deprecated These are old Netscape 4 methods. Do not use,
             the implementation is no-op.
void captureEvents(in long eventFlags)

void clearInterval()
 These methods take one optional argument that's the timer ID to
 clear. Often in existing code these methods are passed undefined,
 which is a nop so we need to support that as well.
void clearTimeout()

void disableExternalCapture()

void dump(in DOMString str)

void enableExternalCapture()
 This is the scriptable version of nsIDOMWindowInternal::open()
 that takes 3 optional arguments. Its binary name is OpenJS to
 avoid colliding with nsIDOMWindowInternal::open(), which has the
 same signature. The reason we can't have that collision is that
 the implementation needs to know whether it was called from JS or

[binaryname(OpenJS)] nsIDOMWindow open([optional] in DOMString url, [optional] in DOMString name, [optional] in DOMString options)
 This is the scriptable version of
 nsIDOMWindowInternal::openDialog() that takes 3 optional
 arguments, plus any additional arguments are passed on as
 arguments on the dialog's window object (window.arguments).
nsIDOMWindow openDialog([optional] in DOMString url, [optional] in DOMString name, [optional] in DOMString options)

void releaseEvents(in long eventFlags)

void routeEvent(in nsIDOMEvent evt)

long setInterval()
 This method is here for backwards compatibility with 4.x only,
 its implementation is a no-op
void setResizable(in boolean resizable)
 These methods take typeless arguments and optional arguments, the
 first argument is either a function or a string, the second
 argument must be a number (ms) and the rest of the arguments (2
 ... n) are passed to the callback function
long setTimeout()