summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-07-28 17:48:58 -0700
committerJohn Reck <jreck@google.com>2011-07-28 18:04:53 -0700
commit5e8466f11f7acd78b83e0c388796d5ec0ab06c96 (patch)
tree70170a2baaf32e5a7e0bbd1e2ca5129ff4536fb1
parent4e310c9873aa84ba4888327f88ac065d51874071 (diff)
downloadpackages_apps_Browser-5e8466f11f7acd78b83e0c388796d5ec0ab06c96.zip
packages_apps_Browser-5e8466f11f7acd78b83e0c388796d5ec0ab06c96.tar.gz
packages_apps_Browser-5e8466f11f7acd78b83e0c388796d5ec0ab06c96.tar.bz2
Turbobox!
Bug: 5080207 Fix the omnibox's slow performance. It's now pretty snappy if I do say so myself Change-Id: I42d9ed87bcfa1a30f2413e0241afc254ae1e472d
-rw-r--r--src/com/android/browser/SuggestionsAdapter.java20
-rw-r--r--src/com/android/browser/provider/BrowserProvider2.java44
2 files changed, 53 insertions, 11 deletions
diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java
index 9a099cb..30b4738 100644
--- a/src/com/android/browser/SuggestionsAdapter.java
+++ b/src/com/android/browser/SuggestionsAdapter.java
@@ -17,6 +17,7 @@
package com.android.browser;
import com.android.browser.provider.BrowserProvider2;
+import com.android.browser.provider.BrowserProvider2.OmniboxSuggestions;
import com.android.browser.search.SearchEngine;
import android.app.SearchManager;
@@ -53,9 +54,12 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable,
public static final int TYPE_SUGGEST = 4;
public static final int TYPE_VOICE_SEARCH = 5;
- private static final String[] COMBINED_PROJECTION =
- {BrowserContract.Combined._ID, BrowserContract.Combined.TITLE,
- BrowserContract.Combined.URL, BrowserContract.Combined.IS_BOOKMARK};
+ private static final String[] COMBINED_PROJECTION = {
+ OmniboxSuggestions._ID,
+ OmniboxSuggestions.TITLE,
+ OmniboxSuggestions.URL,
+ OmniboxSuggestions.IS_BOOKMARK
+ };
private static final String COMBINED_SELECTION =
"(url LIKE ? OR url LIKE ? OR url LIKE ? OR url LIKE ? OR title LIKE ?)";
@@ -470,18 +474,14 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable,
args[4] = like;
selection = COMBINED_SELECTION;
}
- Uri.Builder ub = BrowserContract.Combined.CONTENT_URI.buildUpon();
+ Uri.Builder ub = OmniboxSuggestions.CONTENT_URI.buildUpon();
ub.appendQueryParameter(BrowserContract.PARAM_LIMIT,
Integer.toString(Math.max(mLinesLandscape, mLinesPortrait)));
ub.appendQueryParameter(BrowserProvider2.PARAM_GROUP_BY,
- BrowserContract.Combined.URL);
+ OmniboxSuggestions.URL);
mCursor =
mContext.getContentResolver().query(ub.build(), COMBINED_PROJECTION,
- selection,
- (constraint != null) ? args : null,
- BrowserContract.Combined.IS_BOOKMARK + " DESC, " +
- BrowserContract.Combined.VISITS + " DESC, " +
- BrowserContract.Combined.DATE_LAST_VISITED + " DESC");
+ selection, (constraint != null) ? args : null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 36064a5..1821b50 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -81,6 +81,15 @@ public class BrowserProvider2 extends SQLiteContentProvider {
public static final String THUMBNAIL = "thumbnail";
}
+ public static interface OmniboxSuggestions {
+ public static final Uri CONTENT_URI = Uri.withAppendedPath(
+ BrowserContract.AUTHORITY_URI, "omnibox_suggestions");
+ public static final String _ID = "_id";
+ public static final String URL = "url";
+ public static final String TITLE = "title";
+ public static final String IS_BOOKMARK = "bookmark";
+ }
+
static final String TABLE_BOOKMARKS = "bookmarks";
static final String TABLE_HISTORY = "history";
static final String TABLE_IMAGES = "images";
@@ -97,6 +106,7 @@ public class BrowserProvider2 extends SQLiteContentProvider {
static final String VIEW_ACCOUNTS = "v_accounts";
static final String VIEW_SNAPSHOTS_COMBINED = "v_snapshots_combined";
+ static final String VIEW_OMNIBOX_SUGGESTIONS = "v_omnibox_suggestions";
static final String FORMAT_COMBINED_JOIN_SUBQUERY_JOIN_IMAGES =
"history LEFT OUTER JOIN (%s) bookmarks " +
@@ -121,6 +131,7 @@ public class BrowserProvider2 extends SQLiteContentProvider {
static final int THUMBNAILS = 10;
static final int THUMBNAILS_ID = 11;
+ static final int OMNIBOX_SUGGESTIONS = 20;
static final int BOOKMARKS = 1000;
static final int BOOKMARKS_ID = 1001;
@@ -200,6 +211,7 @@ public class BrowserProvider2 extends SQLiteContentProvider {
matcher.addURI(authority, "settings", SETTINGS);
matcher.addURI(authority, "thumbnails", THUMBNAILS);
matcher.addURI(authority, "thumbnails/#", THUMBNAILS_ID);
+ matcher.addURI(authority, "omnibox_suggestions", OMNIBOX_SUGGESTIONS);
// Legacy
matcher.addURI(LEGACY_AUTHORITY, "searches", SEARCHES);
@@ -346,7 +358,7 @@ public class BrowserProvider2 extends SQLiteContentProvider {
final class DatabaseHelper extends SQLiteOpenHelper {
static final String DATABASE_NAME = "browser2.db";
- static final int DATABASE_VERSION = 31;
+ static final int DATABASE_VERSION = 32;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@@ -418,6 +430,11 @@ public class BrowserProvider2 extends SQLiteContentProvider {
}
enableSync(db);
+ createOmniboxSuggestions(db);
+ }
+
+ void createOmniboxSuggestions(SQLiteDatabase db) {
+ db.execSQL(SQL_CREATE_VIEW_OMNIBOX_SUGGESTIONS);
}
void createThumbnails(SQLiteDatabase db) {
@@ -545,6 +562,9 @@ public class BrowserProvider2 extends SQLiteContentProvider {
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ if (oldVersion < 32) {
+ createOmniboxSuggestions(db);
+ }
if (oldVersion < 31) {
createThumbnails(db);
}
@@ -1034,6 +1054,11 @@ public class BrowserProvider2 extends SQLiteContentProvider {
break;
}
+ case OMNIBOX_SUGGESTIONS: {
+ qb.setTables(VIEW_OMNIBOX_SUGGESTIONS);
+ break;
+ }
+
default: {
throw new UnsupportedOperationException("Unknown URL " + uri.toString());
}
@@ -2062,4 +2087,21 @@ public class BrowserProvider2 extends SQLiteContentProvider {
return mSource.moveToPosition(newPosition);
}
}
+
+ // ---------------------------------------------------
+ // SQL below, be warned
+ // ---------------------------------------------------
+
+ private static final String SQL_CREATE_VIEW_OMNIBOX_SUGGESTIONS =
+ "CREATE VIEW IF NOT EXISTS v_omnibox_suggestions "
+ + " AS "
+ + " SELECT _id, url, title, 1 AS bookmark, 0 AS visits, 0 AS date"
+ + " FROM bookmarks "
+ + " WHERE deleted = 0 AND folder = 0 "
+ + " UNION ALL "
+ + " SELECT _id, url, title, 0 AS bookmark, visits, date "
+ + " FROM history "
+ + " WHERE url NOT IN (SELECT url FROM bookmarks"
+ + " WHERE deleted = 0 AND folder = 0) "
+ + " ORDER BY bookmark DESC, visits DESC, date DESC ";
}