Add testOnReceivedLoginRequest to WebViewClientTest in mnc-dev

Change-Id: I597c24f537ddd044c64443fd3acb9347f0c43b6c
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
index 7f51cdc..ecc57d4 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
@@ -34,11 +34,14 @@
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 import android.webkit.cts.WebViewOnUiThread.WaitForLoadedClient;
+import android.util.Pair;
 
 import java.io.ByteArrayInputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
 
 public class WebViewClientTest extends ActivityInstrumentationTestCase2<WebViewCtsActivity> {
     private static final long TEST_TIMEOUT = 5000;
@@ -210,6 +213,41 @@
         }.run();
     }
 
+    public void testOnReceivedLoginRequest() throws Exception {
+        if (!NullWebViewUtils.isWebViewAvailable()) {
+            return;
+        }
+        final MockWebViewClient webViewClient = new MockWebViewClient();
+        mOnUiThread.setWebViewClient(webViewClient);
+        TestWebServer testServer = null;
+        //set the url and html
+        final String path = "/main";
+        final String page = "<head></head><body>test onReceivedLoginRequest</body>";
+        final String headerName = "x-auto-login";
+        final String headerValue = "realm=com.google&account=foo%40bar.com&args=random_string";
+        List<Pair<String, String>> headers = new ArrayList<Pair<String, String>>();
+        headers.add(Pair.create(headerName, headerValue));
+
+        try {
+            testServer = new TestWebServer(false);
+            String url = testServer.setResponse(path, page, headers);
+            assertFalse(webViewClient.hasOnReceivedLoginRequest());
+            mOnUiThread.loadUrlAndWaitForCompletion(url);
+            assertTrue(webViewClient.hasOnReceivedLoginRequest());
+            new PollingCheck(TEST_TIMEOUT) {
+                @Override
+                protected boolean check() {
+                    return webViewClient.hasOnReceivedLoginRequest();
+                }
+            }.run();
+           assertEquals("com.google", webViewClient.getLoginRequestRealm());
+           assertEquals("foo@bar.com", webViewClient.getLoginRequestAccount());
+           assertEquals("random_string", webViewClient.getLoginRequestArgs());
+        } finally {
+            testServer.shutdown();
+        }
+    }
+
     public void testOnReceivedError() throws Exception {
         if (!NullWebViewUtils.isWebViewAvailable()) {
             return;
@@ -541,6 +579,10 @@
         private boolean mOnFormResubmissionCalled;
         private boolean mDoUpdateVisitedHistoryCalled;
         private boolean mOnReceivedHttpAuthRequestCalled;
+        private boolean mOnReceivedLoginRequest;
+        private String mOnReceivedLoginAccount;
+        private String mOnReceivedLoginArgs;
+        private String mOnReceivedLoginRealm;
         private boolean mOnUnhandledKeyEventCalled;
         private boolean mOnScaleChangedCalled;
         private int mShouldOverrideUrlLoadingCallCount;
@@ -566,6 +608,10 @@
             return mOnReceivedErrorCode;
         }
 
+        public boolean hasOnReceivedLoginRequest() {
+            return mOnReceivedLoginRequest;
+        }
+
         public WebResourceError hasOnReceivedResourceError() {
             return mOnReceivedResourceError;
         }
@@ -602,6 +648,18 @@
             return mLastShouldOverrideUrl;
         }
 
+        public String getLoginRequestRealm() {
+            return mOnReceivedLoginRealm;
+        }
+
+        public String getLoginRequestAccount() {
+            return mOnReceivedLoginAccount;
+        }
+
+        public String getLoginRequestArgs() {
+            return mOnReceivedLoginArgs;
+        }
+
         @Override
         public void onPageStarted(WebView view, String url, Bitmap favicon) {
             super.onPageStarted(view, url, favicon);