summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/homepages
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2012-01-17 10:27:14 -0800
committerJohn Reck <jreck@google.com>2012-01-17 10:27:14 -0800
commit9f733096d8e5a875edcdd63e24ec7d5a029d499b (patch)
tree2d815a51925c8d3618afb8bb0e63225474614312 /src/com/android/browser/homepages
parent0755fcde2dfef68344188a02d16745f516547c69 (diff)
downloadandroid_packages_apps_Gello-9f733096d8e5a875edcdd63e24ec7d5a029d499b.tar.gz
android_packages_apps_Gello-9f733096d8e5a875edcdd63e24ec7d5a029d499b.tar.bz2
android_packages_apps_Gello-9f733096d8e5a875edcdd63e24ec7d5a029d499b.zip
Faster NTP
Optimize the Most Visited NTP query. According to dumpsys dbinfo this speeds up the query from taking over a second to less than 100ms Change-Id: I00c86a5bcb66e126850434845350359f0e7279d5
Diffstat (limited to 'src/com/android/browser/homepages')
-rw-r--r--src/com/android/browser/homepages/RequestHandler.java27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/com/android/browser/homepages/RequestHandler.java b/src/com/android/browser/homepages/RequestHandler.java
index defda612..3eb58e65 100644
--- a/src/com/android/browser/homepages/RequestHandler.java
+++ b/src/com/android/browser/homepages/RequestHandler.java
@@ -20,8 +20,10 @@ import android.content.Context;
import android.content.UriMatcher;
import android.content.res.Resources;
import android.database.Cursor;
+import android.database.MergeCursor;
import android.net.Uri;
-import android.provider.Browser;
+import android.provider.BrowserContract.Bookmarks;
+import android.provider.BrowserContract.History;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
@@ -84,11 +86,28 @@ public class RequestHandler extends Thread {
return TextUtils.htmlEncode(s).getBytes();
}
+ // We can reuse this for both History and Bookmarks queries because the
+ // columns defined actually belong to the CommonColumn and ImageColumn
+ // interfaces that both History and Bookmarks implement
+ private static final String[] PROJECTION = new String[] {
+ History.URL,
+ History.TITLE,
+ History.THUMBNAIL
+ };
+ private static final String SELECTION = History.URL
+ + " NOT LIKE 'content:%' AND " + History.THUMBNAIL + " IS NOT NULL";
void writeTemplatedIndex() throws IOException {
Template t = Template.getCachedTemplate(mContext, R.raw.most_visited);
- Cursor cursor = mContext.getContentResolver().query(Browser.BOOKMARKS_URI,
- new String[] { "DISTINCT url", "title", "thumbnail" },
- "(visits > 0 OR bookmark = 1) AND url NOT LIKE 'content:%' AND thumbnail IS NOT NULL", null, "visits DESC LIMIT 12");
+ Cursor historyResults = mContext.getContentResolver().query(
+ History.CONTENT_URI, PROJECTION, SELECTION,
+ null, History.VISITS + " DESC LIMIT 12");
+ Cursor cursor = historyResults;
+ if (cursor.getCount() < 12) {
+ Cursor bookmarkResults = mContext.getContentResolver().query(
+ Bookmarks.CONTENT_URI, PROJECTION, SELECTION,
+ null, null);
+ cursor = new MergeCursor(new Cursor[] { historyResults, bookmarkResults });
+ }
t.assignLoop("most_visited", new Template.CursorListEntityWrapper(cursor) {
@Override