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