I'm taking a back-channel discussion on-list per Anne's suggestion. We are 
trying to clarify some text in section 4.6.1, "The open() method" which is 
meant to describe how an XMLHttpRequest instance is associated with a specific 
document. (This association is important for origin checks, security etc.)


The current text says:


"Let *document* be the document associated with the global object for which the 
XMLHttpRequest interface object was created from which this XMLHttpRequest 
object was created."


This is quite convoluted, but precise. The last "object" could perhaps be 
"instance" to make it clearer? However, my proposal is to move this text to the 
constructor section (4.2 Constructors), for example as a new 3rd step in the 
first numbered list, and simplify it to read:


"Let document be the document associated with the global object of the 
XMLHttpRequest interface object."



Anne responded:
 
> You cannot just move it to the constructor without introducing some
> other XHR-wide variable.


Sorry Anne, you could probably edit the XHR spec asleep but however obvious it 
may be to you, I need some more details here ;). We're defining an "instance 
variable" called *document* and discussing whether we should define it when the 
instance is constructed or when the open() method is called. I don't understand 
what state we would need another XHR-wide variable to track if we move it. As 
far as I can tell, nothing can be done after constructing an instance but 
before calling open() that would require *document* to be unset, or require 
knowing if it is set or not.


> But yes, there's an open issue about whether
> we should maybe do that. I'd prefer discussion on a public list.

Hereby implemented, Sir ;-)

> > I also believe the implementation difference can not be observed from JS.
> 
> Not if you make the same requirements, no...


I believe both the old text and the proposal would end up with *document* 
referencing the same document, even in corner cases. If I'm missing something 
please explain, thanks.


(Just for the record, the corner cases we need to consider here include stuff 
like 
var xhr=new iframe.contentWindow.XMLHttpRequest()


XMLHttpRequest.prototype.open.call(xhr, ...)


iframe.contentWindow.XMLHttpRequest.prototype.open.call( xhr=new 
XMLHttpRequest, ... )


and possibly other weirdness. The spec needs to dictate a consistent and 
compatible way to reference the correct document..)


-- 
Hallvord R. M. Steen
Core tester, Opera Software






Reply via email to