summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2009-09-17 13:51:30 -0400
committerPatrick Scott <phanna@android.com>2009-09-17 13:58:05 -0400
commit8f0076b720c9ee1e9ef9d29910c261634fd5fb25 (patch)
tree14e20312e0e49cb4112e548fca0873565fbf6ff0 /src/com/android
parent799fccd2479184178e13c3342d3051b997893793 (diff)
downloadpackages_apps_Browser-8f0076b720c9ee1e9ef9d29910c261634fd5fb25.tar.gz
packages_apps_Browser-8f0076b720c9ee1e9ef9d29910c261634fd5fb25.tar.bz2
packages_apps_Browser-8f0076b720c9ee1e9ef9d29910c261634fd5fb25.zip
Display favicons for history items.
Use the data from the java database before talking to the native database. The bookmarks database may contain favicons that the native database does not have a mapping for. Used the native icon database for recent history items since those are not stored in the java db. Request the icons each time the activity is created since the url->bitmap mapping is a global.
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/browser/BrowserBookmarksAdapter.java15
-rw-r--r--src/com/android/browser/BrowserHistoryPage.java15
-rw-r--r--src/com/android/browser/CombinedBookmarkHistoryActivity.java8
-rw-r--r--src/com/android/browser/MostVisitedActivity.java19
4 files changed, 41 insertions, 16 deletions
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index a7fa19c34..e2c09cfb8 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -383,11 +383,17 @@ class BrowserBookmarksAdapter extends BaseAdapter {
/* package */ void populateBookmarkItem(BookmarkItem b, int position) {
mCursor.moveToPosition(position - mExtraOffset);
- b.setUrl(mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX));
+ String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
+ b.setUrl(url);
b.setName(mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
- Bitmap bitmap = (null == data) ? null :
- BitmapFactory.decodeByteArray(data, 0, data.length);
+ Bitmap bitmap = null;
+ if (data == null) {
+ bitmap = CombinedBookmarkHistoryActivity.getIconListenerSet()
+ .getFavicon(url);
+ } else {
+ bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
+ }
b.setFavicon(bitmap);
}
@@ -544,7 +550,8 @@ class BrowserBookmarksAdapter extends BaseAdapter {
if (data != null) {
b.setFavicon(BitmapFactory.decodeByteArray(data, 0, data.length));
} else {
- b.setFavicon(null);
+ b.setFavicon(CombinedBookmarkHistoryActivity.getIconListenerSet()
+ .getFavicon(url));
}
}
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index c130a7933..d364c9c00 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -25,6 +25,7 @@ import android.database.ContentObserver;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.ServiceManager;
@@ -131,7 +132,7 @@ public class BrowserHistoryPage extends ExpandableListActivity {
}
mDisableNewWindow = getIntent().getBooleanExtra("disable_new_window",
false);
- CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+ CombinedBookmarkHistoryActivity.getIconListenerSet()
.addListener(mIconReceiver);
// initialize the result to canceled, so that if the user just presses
@@ -142,7 +143,7 @@ public class BrowserHistoryPage extends ExpandableListActivity {
@Override
protected void onDestroy() {
super.onDestroy();
- CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+ CombinedBookmarkHistoryActivity.getIconListenerSet()
.removeListener(mIconReceiver);
}
@@ -424,8 +425,14 @@ public class BrowserHistoryPage extends ExpandableListActivity {
item.setName(mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
item.setUrl(url);
- item.setFavicon(CombinedBookmarkHistoryActivity.getIconListenerSet(
- getContentResolver()).getFavicon(url));
+ byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
+ if (data != null) {
+ item.setFavicon(BitmapFactory.decodeByteArray(data, 0,
+ data.length));
+ } else {
+ item.setFavicon(CombinedBookmarkHistoryActivity
+ .getIconListenerSet().getFavicon(url));
+ }
item.setIsBookmark(1 ==
mCursor.getInt(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX));
return item;
diff --git a/src/com/android/browser/CombinedBookmarkHistoryActivity.java b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
index 816731a87..25bc0e2e7 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryActivity.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
@@ -67,10 +67,9 @@ public class CombinedBookmarkHistoryActivity extends TabActivity
}
}
private static IconListenerSet sIconListenerSet;
- static IconListenerSet getIconListenerSet(ContentResolver cr) {
+ static IconListenerSet getIconListenerSet() {
if (null == sIconListenerSet) {
sIconListenerSet = new IconListenerSet();
- Browser.requestAllIcons(cr, null, sIconListenerSet);
}
return sIconListenerSet;
}
@@ -84,7 +83,10 @@ public class CombinedBookmarkHistoryActivity extends TabActivity
Bundle extras = getIntent().getExtras();
- getIconListenerSet(getContentResolver());
+ getIconListenerSet();
+ // Do this every time we create a new activity so that we get the
+ // newest icons.
+ Browser.requestAllIcons(getContentResolver(), null, sIconListenerSet);
Intent bookmarksIntent = new Intent(this, BrowserBookmarksPage.class);
bookmarksIntent.putExtras(extras);
diff --git a/src/com/android/browser/MostVisitedActivity.java b/src/com/android/browser/MostVisitedActivity.java
index 65cb89ff6..d03c7a3ad 100644
--- a/src/com/android/browser/MostVisitedActivity.java
+++ b/src/com/android/browser/MostVisitedActivity.java
@@ -23,6 +23,7 @@ import android.database.ContentObserver;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.provider.Browser;
@@ -50,7 +51,7 @@ public class MostVisitedActivity extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new MyAdapter();
- CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+ CombinedBookmarkHistoryActivity.getIconListenerSet()
.addListener(mIconReceiver);
setListAdapter(mAdapter);
ListView list = getListView();
@@ -63,7 +64,7 @@ public class MostVisitedActivity extends ListActivity {
@Override
protected void onDestroy() {
super.onDestroy();
- CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+ CombinedBookmarkHistoryActivity.getIconListenerSet()
.removeListener(mIconReceiver);
}
@@ -97,13 +98,15 @@ public class MostVisitedActivity extends ListActivity {
private static final int mUrlIndex = 0;
private static final int mTitleIndex = 1;
private static final int mBookmarkIndex = 2;
+ private static final int mFaviconIndex = 3;
MyAdapter() {
mObservers = new Vector<DataSetObserver>();
String[] projection = new String[] {
Browser.BookmarkColumns.URL,
Browser.BookmarkColumns.TITLE,
- Browser.BookmarkColumns.BOOKMARK };
+ Browser.BookmarkColumns.BOOKMARK,
+ Browser.BookmarkColumns.FAVICON };
String whereClause = Browser.BookmarkColumns.VISITS + " != 0";
String orderBy = Browser.BookmarkColumns.VISITS + " DESC";
mCursor = managedQuery(Browser.BOOKMARKS_URI, projection,
@@ -145,8 +148,14 @@ public class MostVisitedActivity extends ListActivity {
item.setName(mCursor.getString(mTitleIndex));
String url = mCursor.getString(mUrlIndex);
item.setUrl(url);
- item.setFavicon(CombinedBookmarkHistoryActivity.getIconListenerSet(
- getContentResolver()).getFavicon(url));
+ byte[] data = mCursor.getBlob(mFaviconIndex);
+ if (data != null) {
+ item.setFavicon(BitmapFactory.decodeByteArray(data, 0,
+ data.length));
+ } else {
+ item.setFavicon(CombinedBookmarkHistoryActivity
+ .getIconListenerSet().getFavicon(url));
+ }
item.setIsBookmark(1 == mCursor.getInt(mBookmarkIndex));
return item;
}