Bug 1250707 - Register url annotations table with BrowserProvider; add query. r=sebastian
MozReview-Commit-ID: FnU7D8p3H1O
--- a/mobile/android/base/java/org/mozilla/gecko/db/BrowserContract.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/BrowserContract.java
@@ -480,20 +480,22 @@ public class BrowserContract {
@RobocopTarget
public static final class SuggestedSites implements CommonColumns, URLColumns {
private SuggestedSites() {}
public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "suggestedsites");
}
+ @RobocopTarget
public static final class UrlAnnotations implements CommonColumns, DateSyncColumns {
private UrlAnnotations() {}
public static final String TABLE_NAME = "urlannotations";
+ public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, TABLE_NAME);
public static final String URL = "url";
public static final String KEY = "key";
public static final String VALUE = "value";
public static final String SYNC_STATUS = "sync_status";
public enum SyncStatus {
// We use a parameter, rather than ordinal(), as defensive coding: we can't let the
--- a/mobile/android/base/java/org/mozilla/gecko/db/BrowserProvider.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/BrowserProvider.java
@@ -13,16 +13,17 @@ import java.util.Map;
import org.mozilla.gecko.db.BrowserContract.Bookmarks;
import org.mozilla.gecko.db.BrowserContract.Combined;
import org.mozilla.gecko.db.BrowserContract.FaviconColumns;
import org.mozilla.gecko.db.BrowserContract.Favicons;
import org.mozilla.gecko.db.BrowserContract.History;
import org.mozilla.gecko.db.BrowserContract.Schema;
import org.mozilla.gecko.db.BrowserContract.Tabs;
import org.mozilla.gecko.db.BrowserContract.Thumbnails;
+import org.mozilla.gecko.db.BrowserContract.UrlAnnotations;
import org.mozilla.gecko.db.DBUtils.UpdateOperation;
import org.mozilla.gecko.sync.Utils;
import android.content.ContentProviderOperation;
import android.content.ContentProviderResult;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.OperationApplicationException;
@@ -55,16 +56,17 @@ public class BrowserProvider extends Sha
// Minimum number of thumbnails to keep around.
static final int DEFAULT_EXPIRY_THUMBNAIL_COUNT = 15;
static final String TABLE_BOOKMARKS = Bookmarks.TABLE_NAME;
static final String TABLE_HISTORY = History.TABLE_NAME;
static final String TABLE_FAVICONS = Favicons.TABLE_NAME;
static final String TABLE_THUMBNAILS = Thumbnails.TABLE_NAME;
static final String TABLE_TABS = Tabs.TABLE_NAME;
+ static final String TABLE_URL_ANNOTATIONS = UrlAnnotations.TABLE_NAME;
static final String VIEW_COMBINED = Combined.VIEW_NAME;
static final String VIEW_BOOKMARKS_WITH_FAVICONS = Bookmarks.VIEW_WITH_FAVICONS;
static final String VIEW_HISTORY_WITH_FAVICONS = History.VIEW_WITH_FAVICONS;
static final String VIEW_COMBINED_WITH_FAVICONS = Combined.VIEW_WITH_FAVICONS;
// Bookmark matches
static final int BOOKMARKS = 100;
@@ -93,30 +95,33 @@ public class BrowserProvider extends Sha
// Search Suggest matches. Obsolete.
static final int SEARCH_SUGGEST = 700;
// Thumbnail matches
static final int THUMBNAILS = 800;
static final int THUMBNAIL_ID = 801;
+ static final int URL_ANNOTATIONS = 900;
+
static final String DEFAULT_BOOKMARKS_SORT_ORDER = Bookmarks.TYPE
+ " ASC, " + Bookmarks.POSITION + " ASC, " + Bookmarks._ID
+ " ASC";
static final String DEFAULT_HISTORY_SORT_ORDER = History.DATE_LAST_VISITED + " DESC";
static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
static final Map<String, String> BOOKMARKS_PROJECTION_MAP;
static final Map<String, String> HISTORY_PROJECTION_MAP;
static final Map<String, String> COMBINED_PROJECTION_MAP;
static final Map<String, String> SCHEMA_PROJECTION_MAP;
static final Map<String, String> FAVICONS_PROJECTION_MAP;
static final Map<String, String> THUMBNAILS_PROJECTION_MAP;
+ static final Map<String, String> URL_ANNOTATIONS_PROJECTION_MAP;
static final Table[] sTables;
static {
sTables = new Table[] {
// See awful shortcut assumption hack in getURLMetadataTable.
new URLMetadataTable()
};
// We will reuse this.
@@ -185,16 +190,29 @@ public class BrowserProvider extends Sha
URI_MATCHER.addURI(BrowserContract.AUTHORITY, "thumbnails/#", THUMBNAIL_ID);
map = new HashMap<String, String>();
map.put(Thumbnails._ID, Thumbnails._ID);
map.put(Thumbnails.URL, Thumbnails.URL);
map.put(Thumbnails.DATA, Thumbnails.DATA);
THUMBNAILS_PROJECTION_MAP = Collections.unmodifiableMap(map);
+ // Url annotations
+ URI_MATCHER.addURI(BrowserContract.AUTHORITY, TABLE_URL_ANNOTATIONS, URL_ANNOTATIONS);
+
+ map = new HashMap<>();
+ map.put(UrlAnnotations._ID, UrlAnnotations._ID);
+ map.put(UrlAnnotations.URL, UrlAnnotations.URL);
+ map.put(UrlAnnotations.KEY, UrlAnnotations.KEY);
+ map.put(UrlAnnotations.VALUE, UrlAnnotations.VALUE);
+ map.put(UrlAnnotations.DATE_CREATED, UrlAnnotations.DATE_CREATED);
+ map.put(UrlAnnotations.DATE_MODIFIED, UrlAnnotations.DATE_MODIFIED);
+ map.put(UrlAnnotations.SYNC_STATUS, UrlAnnotations.SYNC_STATUS);
+ URL_ANNOTATIONS_PROJECTION_MAP = Collections.unmodifiableMap(map);
+
// Combined bookmarks and history
URI_MATCHER.addURI(BrowserContract.AUTHORITY, "combined", COMBINED);
map = new HashMap<String, String>();
map.put(Combined._ID, Combined._ID);
map.put(Combined.BOOKMARK_ID, Combined.BOOKMARK_ID);
map.put(Combined.HISTORY_ID, Combined.HISTORY_ID);
map.put(Combined.URL, Combined.URL);
@@ -731,16 +749,23 @@ public class BrowserProvider extends Sha
debug("Query is on thumbnails: " + uri);
qb.setProjectionMap(THUMBNAILS_PROJECTION_MAP);
qb.setTables(TABLE_THUMBNAILS);
break;
}
+ case URL_ANNOTATIONS:
+ debug("Query is on url annotations: " + uri);
+
+ qb.setProjectionMap(URL_ANNOTATIONS_PROJECTION_MAP);
+ qb.setTables(TABLE_URL_ANNOTATIONS);
+ break;
+
case SCHEMA: {
debug("Query is on schema.");
MatrixCursor schemaCursor = new MatrixCursor(new String[] { Schema.VERSION });
schemaCursor.newRow().add(BrowserDatabaseHelper.DATABASE_VERSION);
return schemaCursor;
}