diff options
| author | Patrick Scott <phanna@android.com> | 2009-08-13 15:39:20 -0400 |
|---|---|---|
| committer | Patrick Scott <phanna@android.com> | 2009-08-14 08:15:30 -0400 |
| commit | 68e530047786b4f9d219d17652d7429e6e5a21bd (patch) | |
| tree | 9ac6f3fa5a9f6caf6e770acf686d414372489626 /core/java/android/webkit/FrameLoader.java | |
| parent | a31deaf4a960058e533da35d6229f7aa8d4f00c1 (diff) | |
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.
Diffstat (limited to 'core/java/android/webkit/FrameLoader.java')
| -rw-r--r-- | core/java/android/webkit/FrameLoader.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/core/java/android/webkit/FrameLoader.java b/core/java/android/webkit/FrameLoader.java index 81ed3670c708..c1eeb3b2a0b7 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()); |
