X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=blobdiff_plain;f=build%2Fruntest%2Fenv.js;h=23ffaedddbedbd06e4406623b7f5c09dad545ac8;hp=f3afb1959ebcd7ebd4bb73a74560d53d3b1f3abf;hb=de71a046e619884292b122ddcf1401ad9932a5c7;hpb=b147039acc32884b50b955ebd94eeaa430713786 diff --git a/build/runtest/env.js b/build/runtest/env.js index f3afb19..23ffaed 100644 --- a/build/runtest/env.js +++ b/build/runtest/env.js @@ -19,7 +19,8 @@ var window = this; window.__defineSetter__("location", function(url){ window.document = new DOMDocument( - new Packages.org.xml.sax.InputSource( new java.io.InputStreamReader( + new Packages.org.xml.sax.InputSource( + new java.io.InputStreamReader( new java.io.FileInputStream(url)))); }); @@ -357,7 +358,10 @@ var window = this; set selected(val) { return this.setAttribute("selected",val); }, get className() { return this.getAttribute("class") || ""; }, - set className(val) { return this.setAttribute("class",val); }, + set className(val) { + return this.setAttribute("class", + val.replace(/(^\s*|\s*$)/g,"")); + }, get type() { return this.getAttribute("type") || ""; }, set type(val) { return this.setAttribute("type",val); }, @@ -465,16 +469,107 @@ 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){ + function makeRequest(){ + var url = new java.net.URL(this.url), + connection = url.openConnection(); + + // Add headers to Java connection + for (var header in this.headers) + connection.addRequestProperty(header, this.headers[header]); + + connection.connect(); + + // Stick the response headers into responseHeaders + for (i=0; ; i++) { + var headerName = connection.getHeaderFieldKey(i); + var headerValue = connection.getHeaderField(i); + if (!headerName && !headerValue) break; + if (headerName) + this.responseHeaders[headerName] = headerValue; + } + + this.readyState = 4; + this.status = parseInt(connection.responseCode); + this.statusText = connection.responseMessage; + + var stream = new java.io.InputStreamReader( + connection.getInputStream()), + buffer = new java.io.BufferedReader(stream), + line; + + while ((line = buffer.readLine()) != null) + this.responseText += line; + + try { + this.responseXML = new DOMDocument(this.responseText); + } catch(e) { + this.responseXML = null; + } + + this.onreadystatechange(); + } + + if (this.async) + (new java.lang.Thread(new java.lang.Runnable({ + run: makeRequest + }))).start(); + else + makeRequest(); + }, + abort: function(){}, + onreadystatechange: function(){}, + getResponseHeader: function(header){ + if (this.readyState < 3) + throw new Error("INVALID_STATE_ERR"); + else { + var returnedHeaders = []; + for (var rHeader in this.responseHeaders) { + if (rHeader.match(new Regexp(header, "i"))) + returnedHeaders.push(this.responseHeaders[rHeader]); + } + + if (returnedHeaders.length) + return returnedHeaders.join(", "); + } + + return null; + }, + getAllResponseHeaders: function(header){ + if (this.readyState < 3) + throw new Error("INVALID_STATE_ERR"); + else { + var returnedHeaders = []; + + for (var header in this.responseHeaders) + returnedHeaders.push( header + ": " + this.responseHeaders[header] ); + + return returnedHeaders.join("\r\n"); + } + }, + async: true, readyState: 0, responseText: "", - responseXML: {}, status: 0 }; })();