summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2010-12-16 12:38:19 -0800
committerJohn Reck <jreck@google.com>2010-12-16 12:38:19 -0800
commita00cbbde0b77a3e1eef5691a7adb17edd5d8ab9e (patch)
tree6cd046d0d914fccba33b09faf5acf7fe4158f4a5 /src
parent8e8e71ca9a24996eedfacba2bf5a4b587149727f (diff)
downloadpackages_apps_browser-a00cbbde0b77a3e1eef5691a7adb17edd5d8ab9e.zip
packages_apps_browser-a00cbbde0b77a3e1eef5691a7adb17edd5d8ab9e.tar.gz
packages_apps_browser-a00cbbde0b77a3e1eef5691a7adb17edd5d8ab9e.tar.bz2
Fix crash trying to add data: URLs to icon db
bug: 3291958 Made it so that only web urls have screenshots added to the database, preventing us from trying to query with extremely long data: urls Change-Id: Iabd3ebd5308d965a0ee383a6cdfbab15c91c5d91
Diffstat (limited to 'src')
-rw-r--r--src/com/android/browser/Controller.java57
1 files changed, 32 insertions, 25 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 4c17308..487c69c 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -57,6 +57,7 @@ import android.speech.RecognizerIntent;
import android.speech.RecognizerResultsIntent;
import android.text.TextUtils;
import android.util.Log;
+import android.util.Patterns;
import android.view.ActionMode;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
@@ -399,6 +400,7 @@ public class Controller
mDb = db;
}
+ @Override
protected Void doInBackground(Void... unused) {
mDb.open(mActivity.getDir("icons", 0).getPath());
Cursor c = null;
@@ -1891,33 +1893,38 @@ public class Controller
final String url = view.getUrl();
final String originalUrl = view.getOriginalUrl();
- new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... unused) {
- Cursor cursor = null;
- try {
- cursor = Bookmarks.queryCombinedForUrl(cr, originalUrl, url);
- if (cursor != null && cursor.moveToFirst()) {
- final ByteArrayOutputStream os =
- new ByteArrayOutputStream();
- bm.compress(Bitmap.CompressFormat.PNG, 100, os);
-
- ContentValues values = new ContentValues();
- values.put(Images.THUMBNAIL, os.toByteArray());
- values.put(Images.URL, cursor.getString(0));
-
- do {
- cr.update(Images.CONTENT_URI, values, null, null);
- } while (cursor.moveToNext());
+ // Only update thumbnails for web urls (http(s)://), not for
+ // about:, javascript:, data:, etc...
+ if (Patterns.WEB_URL.matcher(url).matches()) {
+ new AsyncTask<Void, Void, Void>() {
+ @Override
+ protected Void doInBackground(Void... unused) {
+ Cursor cursor = null;
+ try {
+ // TODO: Clean this up
+ cursor = Bookmarks.queryCombinedForUrl(cr, originalUrl, url);
+ if (cursor != null && cursor.moveToFirst()) {
+ final ByteArrayOutputStream os =
+ new ByteArrayOutputStream();
+ bm.compress(Bitmap.CompressFormat.PNG, 100, os);
+
+ ContentValues values = new ContentValues();
+ values.put(Images.THUMBNAIL, os.toByteArray());
+ values.put(Images.URL, cursor.getString(0));
+
+ do {
+ cr.update(Images.CONTENT_URI, values, null, null);
+ } while (cursor.moveToNext());
+ }
+ } catch (IllegalStateException e) {
+ // Ignore
+ } finally {
+ if (cursor != null) cursor.close();
}
- } catch (IllegalStateException e) {
- // Ignore
- } finally {
- if (cursor != null) cursor.close();
+ return null;
}
- return null;
- }
- }.execute();
+ }.execute();
+ }
}
private class Copy implements OnMenuItemClickListener {