X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=build%2Fruntest%2Fenv.js;h=b2a94ff061dbd6b1288fa155f43f2e6ed5af613a;hb=d776dc9d5c5322e81b56272728325990ed6892bb;hp=bf53efa0166842ff8d71b4303fe411b40f87c8ef;hpb=b09043fbf6d98adfd22f85a347256f545afb2c11;p=jquery.git diff --git a/build/runtest/env.js b/build/runtest/env.js index bf53efa..b2a94ff 100644 --- a/build/runtest/env.js +++ b/build/runtest/env.js @@ -17,16 +17,21 @@ var window = this; } }; + var curLocation = (new java.io.File("./")).toURL(); + window.__defineSetter__("location", function(url){ + curLocation = new java.net.URL( curLocation, url ); + window.document = new DOMDocument( - new Packages.org.xml.sax.InputSource( new java.io.InputStreamReader( - new java.io.FileInputStream(url)))); + new Packages.org.xml.sax.InputSource( + new java.io.InputStreamReader( + new java.io.FileInputStream( url )))); }); window.__defineGetter__("location", function(url){ return { get protocol(){ - return "file:"; + return curLocation.getProtocol() + ":"; } }; }); @@ -468,16 +473,114 @@ var window = this; } // XMLHttpRequest + // Originally implemented by Yehuda Katz - window.XMLHttpRequest = function(){ }; + window.XMLHttpRequest = function(){ + this.headers = {}; + this.responseHeaders = {}; + }; XMLHttpRequest.prototype = { - open: function(){ }, - setRequestHeader: function(){ }, - getResponseHeader: function(){ }, + open: function(method, url, async, user, password){ + this.readyState = 1; + if (async) + this.async = true; + this.method = method || "GET"; + this.url = url; + this.onreadystatechange(); + }, + setRequestHeader: function(header, value){ + this.headers[header] = value; + }, + getResponseHeader: function(header){ }, + send: function(data){ + var self = this; + + function makeRequest(){ + var url = new java.net.URL(curLocation, self.url), + connection = url.openConnection(); + + // Add headers to Java connection + for (var header in self.headers) + connection.addRequestProperty(header, self.headers[header]); + + connection.connect(); + + // Stick the response headers into responseHeaders + for (var i=0; ; i++) { + var headerName = connection.getHeaderFieldKey(i); + var headerValue = connection.getHeaderField(i); + if (!headerName && !headerValue) break; + if (headerName) + self.responseHeaders[headerName] = headerValue; + } + + self.readyState = 4; + self.status = parseInt(connection.responseCode); + self.statusText = connection.responseMessage; + + var stream = new java.io.InputStreamReader( + connection.getInputStream()), + buffer = new java.io.BufferedReader(stream), + line; + + while ((line = buffer.readLine()) != null) + self.responseText += line; + + self.responseXML = null; + + if ( self.responseText.match(/^\s*