Chromium WebView warn long URLs

Chromium has a URL restriction of no longer than 2M. For content of this
size, should prefer using WebViewClient#shouldInterceptRequest instead
for memory and performance reasons.

For apps targeting pre-K, log a message. And for apps targetting K or
later, throw an IllegalArgumentException instead.

BUG: 10742235
Change-Id: Ia5ea31ff55c77aecc404aa9bd344f20195ed32e0
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromium.java b/chromium/java/com/android/webview/chromium/WebViewChromium.java
index 061eb27..56b8eb3 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromium.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromium.java
@@ -514,6 +514,17 @@
 
     private void loadUrlOnUiThread(final LoadUrlParams loadUrlParams) {
         if (ThreadUtils.runningOnUiThread()) {
+            final int MAX_ALLOWED_URL_LENGTH = 2 * 1024 * 1024;
+            if (loadUrlParams.getUrl().length() > MAX_ALLOWED_URL_LENGTH) {
+                final String msg = "Load data/url length (" + loadUrlParams.getUrl().length() +
+                        ") too long. Use WebViewClient#shouldInterceptRequest instead.";
+                if (mAppTargetSdkVersion >= Build.VERSION_CODES.KITKAT) {
+                    throw new IllegalArgumentException(msg);
+                } else {
+                    Log.w(TAG, msg);
+                }
+            }
+
             mAwContents.loadUrl(loadUrlParams);
         } else {
             // Disallowed in WebView API for apps targetting a new SDK