diff options
author | John Reck <jreck@google.com> | 2010-12-16 12:38:19 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2010-12-16 12:38:19 -0800 |
commit | a00cbbde0b77a3e1eef5691a7adb17edd5d8ab9e (patch) | |
tree | 6cd046d0d914fccba33b09faf5acf7fe4158f4a5 /src | |
parent | 8e8e71ca9a24996eedfacba2bf5a4b587149727f (diff) | |
download | packages_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.java | 57 |
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 { |