Touched up the XMLHttpRequest code (fixed some bugs, fixed formatting, etc.).
authorJohn Resig <jeresig@gmail.com>
Mon, 9 Jul 2007 00:48:16 +0000 (00:48 +0000)
committerJohn Resig <jeresig@gmail.com>
Mon, 9 Jul 2007 00:48:16 +0000 (00:48 +0000)
build/runtest/env.js

index de422f7..23ffaed 100644 (file)
@@ -469,82 +469,103 @@ var window = this;
        }
        
        // XMLHttpRequest
+       // Originally implemented by Yehuda Katz
 
        window.XMLHttpRequest = function(){
-         this.headers = {};
-         this.responseHeaders = {};
+               this.headers = {};
+               this.responseHeaders = {};
        };
        
        XMLHttpRequest.prototype = {
                open: function(method, url, async, user, password){ 
-                 this.readyState = 1;
-                 if(async) this.async = true;
-                 this.method = method || "GET";
-                 this.url = url;
-                 this.onreadystatechange();
+                       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;
+                       this.headers[header] = value;
                },
                getResponseHeader: function(header){ },
                send: function(data){
-                 var makeRequest = function() {
-                   var url = new java.net.URL(this.url);
-                   var connection = url.openConnection();
-                   // Add headers to Java connection
-                   for(header in this.headers) connection.addRequestProperty(header, this.headers[header]);
-                   connection.connect();
-                   // Stick the response headers into responseHeaders
-                   for(i=0;;i++) { 
-                     headerName = connection.getHeaderFieldKey(i); 
-                     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());
-        var buffer = new java.io.BufferedReader(stream);
-        var 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) {
-                 var requestThread = (new java.lang.Thread(new java.lang.Runnable({
-                   run: makeRequest
-                 })));
-                 requestThread.start();
-                 }
-               else makeRequest();
-               },
-               abort: function(){ },
-               onreadystatechange: function(){ },
-               getResponseHeader: function(header) {
-                 if(this.readyState < 3) throw new Error("INVALID_STATE_ERR");
-                 else {
-                   var returnedHeaders = [];
-                   for(rHeader in this.responseHeaders) {
-                     if(rHeader.match(new Regexp(header, "i"))) returnedHeaders.push(this.responseHeaders[rHeader]);
-                   }
-                   if(returnedHeaders != []) return returnedHeaders.join(", ");
-                 }
-                 return null;
-               },
-               getAllResponseHeaders: function(header) {
-                 if(this.readyState < 3) throw new Error("INVALID_STATE_ERR");
-                 else {
-                   returnedHeaders = [];
-                   for(var header in this.responseHeaders) {
-                     returnedHeaders += (header + ": " + this.responseHeaders[header]);
-                   }
-                   return returnedHeaders.join("\r\n");
-                 }
+                       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,