Merge changes Ic9531e3c,I3f04433b into froyo

* changes:
  Cherry pick from master.
  Cherry pick from master.
diff --git a/core/java/android/webkit/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java
index 188ab2a..8af2492 100644
--- a/core/java/android/webkit/CallbackProxy.java
+++ b/core/java/android/webkit/CallbackProxy.java
@@ -736,14 +736,12 @@
                 }
                 break;
             case AUTH_CREDENTIALS:
-                if (mWebViewClient != null) {
-                    String host = msg.getData().getString("host");
-                    String realm = msg.getData().getString("realm");
-                    username = msg.getData().getString("username");
-                    password = msg.getData().getString("password");
-                    mWebViewClient.onReceivedHttpAuthCredentials(
-                            mWebView, host, realm, username, password);
-                }
+                String host = msg.getData().getString("host");
+                String realm = msg.getData().getString("realm");
+                username = msg.getData().getString("username");
+                password = msg.getData().getString("password");
+                mWebView.setHttpAuthUsernamePassword(
+                        host, realm, username, password);
                 break;
         }
     }
@@ -929,19 +927,6 @@
         sendMessage(msg);
     }
 
-    public void onReceivedHttpAuthCredentials(String host, String realm,
-            String username, String password) {
-        if (mWebViewClient == null) {
-            return;
-        }
-        Message msg = obtainMessage(AUTH_CREDENTIALS);
-        msg.getData().putString("host", host);
-        msg.getData().putString("realm", realm);
-        msg.getData().putString("username", username);
-        msg.getData().putString("password", password);
-        sendMessage(msg);
-    }
-
     /**
      * @hide - hide this because it contains a parameter of type SslError.
      * SslError is located in a hidden package.
@@ -1078,6 +1063,16 @@
         return false;
     }
 
+    public void onReceivedHttpAuthCredentials(String host, String realm,
+            String username, String password) {
+        Message msg = obtainMessage(AUTH_CREDENTIALS);
+        msg.getData().putString("host", host);
+        msg.getData().putString("realm", realm);
+        msg.getData().putString("username", username);
+        msg.getData().putString("password", password);
+        sendMessage(msg);
+    }
+
     //--------------------------------------------------------------------------
     // WebChromeClient methods
     //--------------------------------------------------------------------------
diff --git a/core/java/android/webkit/HttpAuthHandler.java b/core/java/android/webkit/HttpAuthHandler.java
index 6a8d88d..ed85da6 100644
--- a/core/java/android/webkit/HttpAuthHandler.java
+++ b/core/java/android/webkit/HttpAuthHandler.java
@@ -269,7 +269,7 @@
     }
 
     /**
-     * Informs the proxy of a new set of credentials.
+     * Informs the WebView of a new set of credentials.
      * @hide Pending API council review
      */
     public static void onReceivedCredentials(LoadListener loader,
diff --git a/core/java/android/webkit/WebViewClient.java b/core/java/android/webkit/WebViewClient.java
index 4ac660e..02c7210 100644
--- a/core/java/android/webkit/WebViewClient.java
+++ b/core/java/android/webkit/WebViewClient.java
@@ -197,22 +197,6 @@
     }
 
     /**
-     * Notify the host application that authentication credentials have been
-     * supplied from Script.
-     * The default behavior is to do nothing.
-     * @hide Pending API council review
-     *
-     * @param view The WebView that is initiating the callback.
-     * @param host The host requiring authentication.
-     * @param realm A description to help store user credentials for future
-     * @param username The username
-     * @param password The password
-     */
-    public void onReceivedHttpAuthCredentials(WebView view, String host,
-            String realm, String username, String password) {
-    }
-
-    /**
      * Give the host application a chance to handle the key event synchronously.
      * e.g. menu shortcut key events need to be filtered this way. If return
      * true, WebView will not handle the key event. If return false, WebView
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java b/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
index d10e382..77fd3ed 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
@@ -82,7 +82,6 @@
         // This first block of tests are for HTML5 features, for which Android
         // should pass all tests. They are skipped only temporarily.
         // TODO: Fix these failing tests and remove them from this list.
-        ignoreResultList.add("http/tests/appcache/auth.html"); // DumpRenderTree throws exception when authentication fails
         ignoreResultList.add("http/tests/appcache/empty-manifest.html"); // flaky
         ignoreResultList.add("http/tests/appcache/foreign-iframe-main.html"); // flaky - skips states
         ignoreResultList.add("http/tests/appcache/manifest-with-empty-file.html"); // flaky
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java b/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
index 24f58b2..81d5b08 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
@@ -515,6 +515,13 @@
         @Override
         public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler,
                 String host, String realm) {
+            if (handler.useHttpAuthUsernamePassword() && view != null) {
+                String[] credentials = view.getHttpAuthUsernamePassword(host, realm);
+                if (credentials != null && credentials.length == 2) {
+                    handler.proceed(credentials[0], credentials[1]);
+                    return;
+                }
+            }
             handler.cancel();
         }