Fixes Issue 3608.  XMLHttpRequest now does "new $wnd.XMLHttpRequest"
rather than a bare "new XMLHttpRequest".  Also, it tolerates libraries
that install a non-function as $wnd.XMLHttpRequest on IE6.


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7631 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
index 08adeb6..f18cc85 100644
--- a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
+++ b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
@@ -82,14 +82,22 @@
    */
   public static native XMLHttpRequest create() /*-{
     if ($wnd.XMLHttpRequest) {
-      return new XMLHttpRequest();
-    } else {
       try {
-        return new ActiveXObject('MSXML2.XMLHTTP.3.0');
-      } catch (e) {
-        return new ActiveXObject("Microsoft.XMLHTTP");
+        return new $wnd.XMLHttpRequest;
+      } catch(e) {
+        // Some third-party libraries define it but not as a function.
+        // See Issue 3608.
+        // Fall through to alternatives.
       }
     }
+
+    try {
+      // some IE6 installations can use this
+      return new ActiveXObject('MSXML2.XMLHTTP.3.0');
+    } catch (e) {
+      // other IE6 installations need this
+      return new ActiveXObject("Microsoft.XMLHTTP"); 
+    }    
   }-*/;
 
   protected XMLHttpRequest() {