From 68e530047786b4f9d219d17652d7429e6e5a21bd Mon Sep 17 00:00:00 2001 From: Patrick Scott Date: Thu, 13 Aug 2009 15:39:20 -0400 Subject: [PATCH] The local loaders assume the url given to them is decoded. Decode the url before passing down to the local loaders since they do not decode the url themselves. This was creating a crash on youtube.com since the data url was percent-encoded and failing to parse from base64. --- core/java/android/webkit/FrameLoader.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/java/android/webkit/FrameLoader.java b/core/java/android/webkit/FrameLoader.java index 81ed3670c7080..c1eeb3b2a0b70 100644 --- a/core/java/android/webkit/FrameLoader.java +++ b/core/java/android/webkit/FrameLoader.java @@ -128,6 +128,18 @@ class FrameLoader { /* package */ static boolean handleLocalFile(String url, LoadListener loadListener, WebSettings settings) { + // Attempt to decode the percent-encoded url before passing to the + // local loaders. + try { + url = new String(URLUtil.decode(url.getBytes())); + } catch (IllegalArgumentException e) { + loadListener.error(EventHandler.ERROR_BAD_URL, + loadListener.getContext().getString( + com.android.internal.R.string.httpErrorBadUrl)); + // Return true here so we do not trigger an unsupported scheme + // error. + return true; + } if (URLUtil.isAssetUrl(url)) { FileLoader.requestUrl(url, loadListener, loadListener.getContext(), true, settings.getAllowFileAccess());