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
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 2575857..a54a59a 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -31,6 +31,8 @@
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 @@
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;
+ 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();
}
- if (address.mHost.length() == 0) {
- mAddress.setError(r.getText(R.string.bookmark_url_not_valid));
- return false;
- }
- 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 b7ff0d3..91b08a3 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 @@
s.setNeedInitialFocus(false);
// Browser supports multiple windows
s.setSupportMultipleWindows(true);
- // Turn off file access
- s.setAllowFileAccess(false);
// HTML5 API flags
s.setAppCacheEnabled(b.appCacheEnabled);