diff options
| author | Cary Clark <cary@android.com> | 2009-09-04 12:25:10 -0400 |
|---|---|---|
| committer | Cary Clark <cary@android.com> | 2009-09-09 11:01:03 -0400 |
| commit | f2407c682fafef77d568deba9987b193a5f2d361 (patch) | |
| tree | ae058430de9dbda1a5ba0f507f418f40921484d6 /src/com/android | |
| parent | 3aa8204dffd85a291305cc5fbf133c05cc6fbc91 (diff) | |
| download | packages_apps_Browser-f2407c682fafef77d568deba9987b193a5f2d361.tar.gz packages_apps_Browser-f2407c682fafef77d568deba9987b193a5f2d361.tar.bz2 packages_apps_Browser-f2407c682fafef77d568deba9987b193a5f2d361.zip | |
allow file: scheme in the browser
When creating a bookmark, allow the book's URL to start with
javascript: . Use URI to isolate the scheme
to take care of case and special characters.
fixes http://b/issue?id=2059889
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/browser/AddBookmarkPage.java | 34 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserSettings.java | 3 |
2 files changed, 22 insertions, 15 deletions
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java index 257585790..a54a59a1d 100644 --- a/src/com/android/browser/AddBookmarkPage.java +++ b/src/com/android/browser/AddBookmarkPage.java @@ -31,6 +31,8 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; +import java.net.URI; +import java.net.URISyntaxException; import java.util.Date; public class AddBookmarkPage extends Activity { @@ -123,20 +125,26 @@ public class AddBookmarkPage extends Activity { return false; } String url = unfilteredUrl; - if (!(url.startsWith("about:") || url.startsWith("data:") || url - .startsWith("file:") || url.startsWith("content:"))) { - WebAddress address; - try { - address = new WebAddress(unfilteredUrl); - } catch (ParseException e) { - mAddress.setError(r.getText(R.string.bookmark_url_not_valid)); - return false; - } - if (address.mHost.length() == 0) { - mAddress.setError(r.getText(R.string.bookmark_url_not_valid)); - return false; + try { + URI uriObj = new URI(url); + String scheme = uriObj.getScheme(); + if (!("about".equals(scheme) || "data".equals(scheme) + || "javascript".equals(scheme) + || "file".equals(scheme) || "content".equals(scheme))) { + WebAddress address; + try { + address = new WebAddress(unfilteredUrl); + } catch (ParseException e) { + throw new URISyntaxException("", ""); + } + if (address.mHost.length() == 0) { + throw new URISyntaxException("", ""); + } + url = address.toString(); } - url = address.toString(); + } catch (URISyntaxException e) { + mAddress.setError(r.getText(R.string.bookmark_url_not_valid)); + return false; } try { if (mEditingExisting) { diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index b7ff0d372..91b08a3bb 100644 --- a/src/com/android/browser/BrowserSettings.java +++ b/src/com/android/browser/BrowserSettings.java @@ -1,3 +1,4 @@ + /* * Copyright (C) 2007 The Android Open Source Project * @@ -207,8 +208,6 @@ class BrowserSettings extends Observable { s.setNeedInitialFocus(false); // Browser supports multiple windows s.setSupportMultipleWindows(true); - // Turn off file access - s.setAllowFileAccess(false); // HTML5 API flags s.setAppCacheEnabled(b.appCacheEnabled); |
