diff options
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/browser/Bookmarks.java | 186 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserActivity.java | 20 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserDownloadPage.java | 44 |
3 files changed, 137 insertions, 113 deletions
diff --git a/src/com/android/browser/Bookmarks.java b/src/com/android/browser/Bookmarks.java index 2cbd85122..5ada9dcb8 100644 --- a/src/com/android/browser/Bookmarks.java +++ b/src/com/android/browser/Bookmarks.java @@ -47,6 +47,7 @@ import java.util.Date; "content:" }; + private final static String LOGTAG = "Bookmarks"; /** * Add a bookmark to the database. * @param context Context of the calling Activity. This is used to make @@ -66,66 +67,74 @@ import java.util.Date; // Want to append to the beginning of the list long creationTime = new Date().getTime(); ContentValues map = new ContentValues(); - Cursor cursor = Browser.getVisitedLike(cr, url); - if (cursor.moveToFirst() && cursor.getInt( - Browser.HISTORY_PROJECTION_BOOKMARK_INDEX) == 0) { - // This means we have been to this site but not bookmarked - // it, so convert the history item to a bookmark - map.put(Browser.BookmarkColumns.CREATED, creationTime); - map.put(Browser.BookmarkColumns.TITLE, name); - map.put(Browser.BookmarkColumns.BOOKMARK, 1); - map.put(Browser.BookmarkColumns.THUMBNAIL, bitmapToBytes(thumbnail)); - cr.update(Browser.BOOKMARKS_URI, map, - "_id = " + cursor.getInt(0), null); - } else { - int count = cursor.getCount(); - boolean matchedTitle = false; - for (int i = 0; i < count; i++) { - // One or more bookmarks already exist for this site. - // Check the names of each - cursor.moveToPosition(i); - if (cursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX) - .equals(name)) { - // The old bookmark has the same name. - // Update its creation time. - map.put(Browser.BookmarkColumns.CREATED, - creationTime); - cr.update(Browser.BOOKMARKS_URI, map, - "_id = " + cursor.getInt(0), null); - matchedTitle = true; - break; - } - } - if (!matchedTitle) { - // Adding a bookmark for a site the user has visited, - // or a new bookmark (with a different name) for a site - // the user has visited - map.put(Browser.BookmarkColumns.TITLE, name); - map.put(Browser.BookmarkColumns.URL, url); + Cursor cursor = null; + try { + cursor = Browser.getVisitedLike(cr, url); + if (cursor.moveToFirst() && cursor.getInt( + Browser.HISTORY_PROJECTION_BOOKMARK_INDEX) == 0) { + // This means we have been to this site but not bookmarked + // it, so convert the history item to a bookmark map.put(Browser.BookmarkColumns.CREATED, creationTime); + map.put(Browser.BookmarkColumns.TITLE, name); map.put(Browser.BookmarkColumns.BOOKMARK, 1); - map.put(Browser.BookmarkColumns.DATE, 0); - map.put(Browser.BookmarkColumns.THUMBNAIL, bitmapToBytes(thumbnail)); - int visits = 0; - if (count > 0) { - // The user has already bookmarked, and possibly - // visited this site. However, they are creating - // a new bookmark with the same url but a different - // name. The new bookmark should have the same - // number of visits as the already created bookmark. - visits = cursor.getInt( - Browser.HISTORY_PROJECTION_VISITS_INDEX); + map.put(Browser.BookmarkColumns.THUMBNAIL, + bitmapToBytes(thumbnail)); + cr.update(Browser.BOOKMARKS_URI, map, + "_id = " + cursor.getInt(0), null); + } else { + int count = cursor.getCount(); + boolean matchedTitle = false; + for (int i = 0; i < count; i++) { + // One or more bookmarks already exist for this site. + // Check the names of each + cursor.moveToPosition(i); + if (cursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX) + .equals(name)) { + // The old bookmark has the same name. + // Update its creation time. + map.put(Browser.BookmarkColumns.CREATED, + creationTime); + cr.update(Browser.BOOKMARKS_URI, map, + "_id = " + cursor.getInt(0), null); + matchedTitle = true; + break; + } + } + if (!matchedTitle) { + // Adding a bookmark for a site the user has visited, + // or a new bookmark (with a different name) for a site + // the user has visited + map.put(Browser.BookmarkColumns.TITLE, name); + map.put(Browser.BookmarkColumns.URL, url); + map.put(Browser.BookmarkColumns.CREATED, creationTime); + map.put(Browser.BookmarkColumns.BOOKMARK, 1); + map.put(Browser.BookmarkColumns.DATE, 0); + map.put(Browser.BookmarkColumns.THUMBNAIL, + bitmapToBytes(thumbnail)); + int visits = 0; + if (count > 0) { + // The user has already bookmarked, and possibly + // visited this site. However, they are creating + // a new bookmark with the same url but a different + // name. The new bookmark should have the same + // number of visits as the already created bookmark. + visits = cursor.getInt( + Browser.HISTORY_PROJECTION_VISITS_INDEX); + } + // Bookmark starts with 3 extra visits so that it will + // bubble up in the most visited and goto search box + map.put(Browser.BookmarkColumns.VISITS, visits + 3); + cr.insert(Browser.BOOKMARKS_URI, map); } - // Bookmark starts with 3 extra visits so that it will - // bubble up in the most visited and goto search box - map.put(Browser.BookmarkColumns.VISITS, visits + 3); - cr.insert(Browser.BOOKMARKS_URI, map); } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "addBookmark", e); + } finally { + if (cursor != null) cursor.close(); } if (retainIcon) { WebIconDatabase.getInstance().retainIconForPageUrl(url); } - cursor.deactivate(); if (context != null) { Toast.makeText(context, R.string.added_to_bookmarks, Toast.LENGTH_LONG).show(); @@ -144,41 +153,48 @@ import java.util.Date; */ /* package */ static void removeFromBookmarks(Context context, ContentResolver cr, String url, String title) { - Cursor cursor = cr.query( - Browser.BOOKMARKS_URI, - Browser.HISTORY_PROJECTION, - "url = ? AND title = ?", - new String[] { url, title }, - null); - boolean first = cursor.moveToFirst(); - // Should be in the database no matter what - if (!first) { - throw new AssertionError("URL is not in the database! " + url + " " + title); - } - // Remove from bookmarks - WebIconDatabase.getInstance().releaseIconForPageUrl(url); - Uri uri = ContentUris.withAppendedId(Browser.BOOKMARKS_URI, - cursor.getInt(Browser.HISTORY_PROJECTION_ID_INDEX)); - int numVisits = cursor.getInt( - Browser.HISTORY_PROJECTION_VISITS_INDEX); - if (0 == numVisits) { - cr.delete(uri, null, null); - } else { - // It is no longer a bookmark, but it is still a visited - // site. - ContentValues values = new ContentValues(); - values.put(Browser.BookmarkColumns.BOOKMARK, 0); - try { - cr.update(uri, values, null, null); - } catch (IllegalStateException e) { - Log.e("removeFromBookmarks", "no database!"); + Cursor cursor = null; + try { + cursor = cr.query( + Browser.BOOKMARKS_URI, + Browser.HISTORY_PROJECTION, + "url = ? AND title = ?", + new String[] { url, title }, + null); + boolean first = cursor.moveToFirst(); + // Should be in the database no matter what + if (!first) { + throw new AssertionError("URL is not in the database! " + url + + " " + title); } + // Remove from bookmarks + WebIconDatabase.getInstance().releaseIconForPageUrl(url); + Uri uri = ContentUris.withAppendedId(Browser.BOOKMARKS_URI, + cursor.getInt(Browser.HISTORY_PROJECTION_ID_INDEX)); + int numVisits = cursor.getInt( + Browser.HISTORY_PROJECTION_VISITS_INDEX); + if (0 == numVisits) { + cr.delete(uri, null, null); + } else { + // It is no longer a bookmark, but it is still a visited + // site. + ContentValues values = new ContentValues(); + values.put(Browser.BookmarkColumns.BOOKMARK, 0); + try { + cr.update(uri, values, null, null); + } catch (IllegalStateException e) { + Log.e("removeFromBookmarks", "no database!"); + } + } + if (context != null) { + Toast.makeText(context, R.string.removed_from_bookmarks, + Toast.LENGTH_LONG).show(); + } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "removeFromBookmarks", e); + } finally { + if (cursor != null) cursor.close(); } - if (context != null) { - Toast.makeText(context, R.string.removed_from_bookmarks, - Toast.LENGTH_LONG).show(); - } - cursor.deactivate(); } private static byte[] bitmapToBytes(Bitmap bm) { diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java index 2f4f39aa2..4308a2cb9 100644 --- a/src/com/android/browser/BrowserActivity.java +++ b/src/com/android/browser/BrowserActivity.java @@ -1249,20 +1249,20 @@ public class BrowserActivity extends Activity private void retainIconsOnStartup() { final WebIconDatabase db = WebIconDatabase.getInstance(); db.open(getDir("icons", 0).getPath()); + Cursor c = null; try { - Cursor c = Browser.getAllBookmarks(mResolver); - if (!c.moveToFirst()) { - c.deactivate(); - return; + c = Browser.getAllBookmarks(mResolver); + if (c.moveToFirst()) { + int urlIndex = c.getColumnIndex(Browser.BookmarkColumns.URL); + do { + String url = c.getString(urlIndex); + db.retainIconForPageUrl(url); + } while (c.moveToNext()); } - int urlIndex = c.getColumnIndex(Browser.BookmarkColumns.URL); - do { - String url = c.getString(urlIndex); - db.retainIconForPageUrl(url); - } while (c.moveToNext()); - c.deactivate(); } catch (IllegalStateException e) { Log.e(LOGTAG, "retainIconsOnStartup", e); + } finally { + if (c!= null) c.close(); } } diff --git a/src/com/android/browser/BrowserDownloadPage.java b/src/com/android/browser/BrowserDownloadPage.java index c56991e80..6a5ef283d 100644 --- a/src/com/android/browser/BrowserDownloadPage.java +++ b/src/com/android/browser/BrowserDownloadPage.java @@ -31,6 +31,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.provider.Downloads; +import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; @@ -63,6 +64,7 @@ public class BrowserDownloadPage extends ExpandableListActivity { // will be reopened on this View. private View mSelectedView; + private final static String LOGTAG = "BrowserDownloadPage"; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -252,25 +254,31 @@ public class BrowserDownloadPage extends ExpandableListActivity { @Override public void onChange(boolean selfChange) { - Cursor cursor = getContentResolver().query(mTrack, - new String[] { Downloads.Impl.COLUMN_STATUS }, null, null, - null); - if (cursor.moveToFirst() && Downloads.Impl.isStatusSuccess( - cursor.getInt(0))) { - // Do this right away, so we get no more updates. - getContentResolver().unregisterContentObserver( - mContentObserver); - // Post a runnable in case this ContentObserver gets notified - // before the one that updates the ListView. - mListView.post(new Runnable() { - public void run() { - // Close the context menu, reopen with up to date data. - closeContextMenu(); - openContextMenu(mSelectedView); - } - }); + Cursor cursor = null; + try { + cursor = getContentResolver().query(mTrack, + new String[] { Downloads.Impl.COLUMN_STATUS }, null, null, + null); + if (cursor.moveToFirst() && Downloads.Impl.isStatusSuccess( + cursor.getInt(0))) { + // Do this right away, so we get no more updates. + getContentResolver().unregisterContentObserver( + mContentObserver); + // Post a runnable in case this ContentObserver gets notified + // before the one that updates the ListView. + mListView.post(new Runnable() { + public void run() { + // Close the context menu, reopen with up to date data. + closeContextMenu(); + openContextMenu(mSelectedView); + } + }); + } + } catch (IllegalStateException e) { + Log.e(LOGTAG, "onChange", e); + } finally { + if (cursor != null) cursor.close(); } - cursor.deactivate(); } } |
