summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2009-10-12 10:29:00 +0100
committerBen Murdoch <benm@google.com>2009-10-14 10:59:12 +0100
commitde353621650d17a412b6ffe2cbf0366db5f11c40 (patch)
treed2fc420b0e279d642432e994c1d8432671cd7fdd /src/com/android
parent94b10fe271909535c559527a5b5edcdc61b435a0 (diff)
downloadpackages_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.java11
-rw-r--r--src/com/android/browser/Bookmarks.java25
-rw-r--r--src/com/android/browser/BrowserActivity.java2
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");