Some user-agents return status code 0 when operating off of file: URLs.

Patch by: bobv
Review by: scottb


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5215 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java b/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java
index 21b4d08..de87a62 100644
--- a/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java
+++ b/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java
@@ -116,7 +116,7 @@
       super("HTTP download failed with status " + statusCode);
       this.statusCode = statusCode;
     }
-    
+
     public int getStatusCode() {
       return statusCode;
     }
@@ -169,6 +169,12 @@
 
   private static final String HTTP_GET = "GET";
 
+  /**
+   * Some UA's like Safari will have a "0" status code when loading from file:
+   * URLs.
+   */
+  private static final int HTTP_STATUS_LOCAL = 0;
+
   private static final int HTTP_STATUS_OK = 200;
 
   /**
@@ -365,14 +371,16 @@
         public void onReadyStateChange(XMLHttpRequest xhr) {
           if (xhr.getReadyState() == XMLHttpRequest.DONE) {
             xhr.clearOnReadyStateChange();
-            if (xhr.getStatus() == HTTP_STATUS_OK) {
+            if (xhr.getStatus() == HTTP_STATUS_OK
+                || xhr.getStatus() == HTTP_STATUS_LOCAL) {
               try {
                 installCode(xhr.getResponseText());
               } catch (RuntimeException e) {
                 loadErrorHandler.loadFailed(e);
               }
             } else {
-              loadErrorHandler.loadFailed(new HttpDownloadFailure(xhr.getStatus()));
+              loadErrorHandler.loadFailed(new HttpDownloadFailure(
+                  xhr.getStatus()));
             }
           }
         }