diff options
author | John Reck <jreck@google.com> | 2011-07-28 17:48:58 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-07-28 18:04:53 -0700 |
commit | 5e8466f11f7acd78b83e0c388796d5ec0ab06c96 (patch) | |
tree | 70170a2baaf32e5a7e0bbd1e2ca5129ff4536fb1 | |
parent | 4e310c9873aa84ba4888327f88ac065d51874071 (diff) | |
download | packages_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.java | 20 | ||||
-rw-r--r-- | src/com/android/browser/provider/BrowserProvider2.java | 44 |
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 "; } |