summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/provider/BrowserProvider2.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/browser/provider/BrowserProvider2.java')
-rw-r--r--src/com/android/browser/provider/BrowserProvider2.java61
1 files changed, 56 insertions, 5 deletions
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index fe7a31b..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) {
@@ -471,6 +488,7 @@ public class BrowserProvider2 extends SQLiteContentProvider {
BookmarkColumns.TITLE, // 1
BookmarkColumns.FAVICON, // 2
BookmarkColumns.TOUCH_ICON, // 3
+ BookmarkColumns.CREATED, // 4
}, BookmarkColumns.BOOKMARK + "!=0", null,
null, null, null);
if (c != null) {
@@ -478,6 +496,7 @@ public class BrowserProvider2 extends SQLiteContentProvider {
ContentValues values = new ContentValues();
values.put(Bookmarks.URL, c.getString(0));
values.put(Bookmarks.TITLE, c.getString(1));
+ values.put(Bookmarks.DATE_CREATED, c.getInt(4));
values.put(Bookmarks.POSITION, 0);
values.put(Bookmarks.PARENT, FIXED_ID_ROOT);
ContentValues imageValues = new ContentValues();
@@ -497,7 +516,9 @@ public class BrowserProvider2 extends SQLiteContentProvider {
BookmarkColumns.VISITS, // 2
BookmarkColumns.DATE, // 3
BookmarkColumns.CREATED, // 4
- }, null, null, null, null, null);
+ }, BookmarkColumns.VISITS + " > 0 OR "
+ + BookmarkColumns.BOOKMARK + " = 0",
+ null, null, null, null);
if (c != null) {
while (c.moveToNext()) {
ContentValues values = new ContentValues();
@@ -541,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);
}
@@ -1030,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());
}
@@ -1227,6 +1256,7 @@ public class BrowserProvider2 extends SQLiteContentProvider {
new String[] { Long.toString(id) });
}
}
+ c.close();
break;
}
case THUMBNAILS_ID: {
@@ -1259,8 +1289,12 @@ public class BrowserProvider2 extends SQLiteContentProvider {
" AND account_type = ? AND account_name = ?",
new String[] { ChromeSyncColumns.FOLDER_NAME_BOOKMARKS_BAR,
accountType, accountName }, null, null, null);
- if (c.moveToFirst()) {
- return c.getLong(0);
+ try {
+ if (c.moveToFirst()) {
+ return c.getLong(0);
+ }
+ } finally {
+ c.close();
}
}
return FIXED_ID_ROOT;
@@ -1737,8 +1771,8 @@ public class BrowserProvider2 extends SQLiteContentProvider {
if (c.moveToFirst()) {
parentAccountName = c.getString(0);
parentAccountType = c.getString(1);
- c.close();
}
+ c.close();
} else if (values.containsKey(Bookmarks.ACCOUNT_NAME)
|| values.containsKey(Bookmarks.ACCOUNT_TYPE)) {
// TODO: Implement if needed (no one needs this yet)
@@ -2053,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 ";
}