summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/FrameLoader.java
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2009-08-13 15:39:20 -0400
committerPatrick Scott <phanna@android.com>2009-08-14 08:15:30 -0400
commit68e530047786b4f9d219d17652d7429e6e5a21bd (patch)
tree9ac6f3fa5a9f6caf6e770acf686d414372489626 /core/java/android/webkit/FrameLoader.java
parenta31deaf4a960058e533da35d6229f7aa8d4f00c1 (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.java12
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());