diff options
| author | Ben Murdoch <benm@google.com> | 2009-10-12 10:29:00 +0100 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2009-10-14 10:59:12 +0100 |
| commit | de353621650d17a412b6ffe2cbf0366db5f11c40 (patch) | |
| tree | d2fc420b0e279d642432e994c1d8432671cd7fdd /src/com/android | |
| parent | 94b10fe271909535c559527a5b5edcdc61b435a0 (diff) | |
| download | packages_apps_Browser-de353621650d17a412b6ffe2cbf0366db5f11c40.tar.gz packages_apps_Browser-de353621650d17a412b6ffe2cbf0366db5f11c40.tar.bz2 packages_apps_Browser-de353621650d17a412b6ffe2cbf0366db5f11c40.zip | |
Don't allow the user to save bookmarks with a scheme that the Browser cannot directly handle.
Change-Id: I9cbdfeaaeef4ded3dac1623854ecb9c5c603eb91
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/browser/AddBookmarkPage.java | 11 | ||||
| -rw-r--r-- | src/com/android/browser/Bookmarks.java | 25 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserActivity.java | 2 |
3 files changed, 35 insertions, 3 deletions
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java index 81123ba2c..9ab8473da 100644 --- a/src/com/android/browser/AddBookmarkPage.java +++ b/src/com/android/browser/AddBookmarkPage.java @@ -182,9 +182,14 @@ public class AddBookmarkPage extends Activity { 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))) { + if (!Bookmarks.urlHasAcceptableScheme(url)) { + // If the scheme was non-null, let the user know that we + // can't save their bookmark. If it was null, we'll assume + // they meant http when we parse it in the WebAddress class. + if (scheme != null) { + mAddress.setError(r.getText(R.string.bookmark_cannot_save_url)); + return false; + } WebAddress address; try { address = new WebAddress(unfilteredUrl); diff --git a/src/com/android/browser/Bookmarks.java b/src/com/android/browser/Bookmarks.java index c8aaee700..8d98f8995 100644 --- a/src/com/android/browser/Bookmarks.java +++ b/src/com/android/browser/Bookmarks.java @@ -41,6 +41,18 @@ import java.util.Date; private static String[] SELECTION_ARGS; + // We only want the user to be able to bookmark content that + // the browser can handle directly. + private static final String acceptableBookmarkSchemes[] = { + "http:", + "https:", + "about:", + "data:", + "javascript:", + "file:", + "content:" + }; + /** * Add a bookmark to the database. * @param context Context of the calling Activity. This is used to make @@ -214,4 +226,17 @@ import java.util.Date; bm.compress(Bitmap.CompressFormat.PNG, 100, os); return os.toByteArray(); } + + /* package */ static boolean urlHasAcceptableScheme(String url) { + if (url == null) { + return false; + } + + for (int i = 0; i < acceptableBookmarkSchemes.length; i++) { + if (url.startsWith(acceptableBookmarkSchemes[i])) { + return true; + } + } + return false; + } } diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java index 7e7426216..c6f40565c 100644 --- a/src/com/android/browser/BrowserActivity.java +++ b/src/com/android/browser/BrowserActivity.java @@ -1664,6 +1664,8 @@ public class BrowserActivity extends Activity // decide whether to show the open link in new tab option menu.findItem(R.id.open_newtab_context_menu_id).setVisible( mTabControl.canCreateNewTab()); + menu.findItem(R.id.bookmark_context_menu_id).setVisible( + Bookmarks.urlHasAcceptableScheme(extra)); PackageManager pm = getPackageManager(); Intent send = new Intent(Intent.ACTION_SEND); send.setType("text/plain"); |
