Test that WebViewClient.onReceivedSslError() is called with the correct WebView and URL

Bug: 5410252
Change-Id: Iba9d394b8c36038914ad3c1fcbdae612f1039a2b
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
index 3934f40..afdde44 100755
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
@@ -2239,6 +2239,45 @@
 
     @TestTargetNew(
         level = TestLevel.COMPLETE,
+        method = "WebViewClient.onReceivedSslError",
+        args = {}
+    )
+    public void testOnReceivedSslError() throws Throwable {
+        final class MockWebViewClient extends WebViewClient {
+            private String mErrorUrl;
+            private WebView mWebView;
+            @Override
+            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
+                mWebView = view;
+                mErrorUrl = error.getUrl();
+                handler.proceed();
+            }
+            public String errorUrl() {
+                return mErrorUrl;
+            }
+            public WebView webView() {
+                return mWebView;
+            }
+        }
+
+        startWebServer(true);
+        final String errorUrl = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        final MockWebViewClient webViewClient = new MockWebViewClient();
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.setWebViewClient(webViewClient);
+                mWebView.setWebChromeClient(new LoadCompleteWebChromeClient());
+                mWebView.loadUrl(errorUrl);
+            }
+        });
+        waitForUiThreadDone();
+
+        assertEquals(webViewClient.webView(), mWebView);
+        assertEquals(webViewClient.errorUrl(), errorUrl);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
         method = "requestChildRectangleOnScreen",
         args = {View.class, Rect.class, boolean.class}
     )