Bug 1243558 - Add UrlAnnotations.getScreenshots method. r=sebastian
MozReview-Commit-ID: GOjliERct95
--- a/mobile/android/base/java/org/mozilla/gecko/db/BrowserContract.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/BrowserContract.java
@@ -492,16 +492,27 @@ public class BrowserContract {
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 Key {
+ // We use a parameter, rather than name(), as defensive coding: we can't let the
+ // enum name change because we've already stored values into the DB.
+ SCREENSHOT ("screenshot");
+
+ private final String dbValue;
+
+ Key(final String dbValue) { this.dbValue = dbValue; }
+ public String getDbValue() { return dbValue; }
+ }
+
public enum SyncStatus {
// We use a parameter, rather than ordinal(), as defensive coding: we can't let the
// ordinal values change because we've already stored values into the DB.
NEW (0);
// Value stored into the database for this column.
private final int dbValue;
--- a/mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java
@@ -1,18 +1,23 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.db;
import android.content.ContentResolver;
import android.content.ContentValues;
+import android.database.Cursor;
import android.net.Uri;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import org.json.JSONObject;
import org.mozilla.gecko.annotation.RobocopTarget;
+import org.mozilla.gecko.db.BrowserContract.UrlAnnotations.Key;
public class LocalUrlAnnotations implements UrlAnnotations {
private Uri urlAnnotationsTableWithProfile;
public LocalUrlAnnotations(final String profile) {
urlAnnotationsTableWithProfile = DBUtils.appendProfile(profile, BrowserContract.UrlAnnotations.CONTENT_URI);
}
@@ -23,9 +28,31 @@ public class LocalUrlAnnotations impleme
final ContentValues values = new ContentValues(5);
values.put(BrowserContract.UrlAnnotations.URL, url);
values.put(BrowserContract.UrlAnnotations.KEY, key);
values.put(BrowserContract.UrlAnnotations.VALUE, value);
values.put(BrowserContract.UrlAnnotations.DATE_CREATED, creationTime);
values.put(BrowserContract.UrlAnnotations.DATE_MODIFIED, creationTime);
cr.insert(urlAnnotationsTableWithProfile, values);
}
+
+ private Cursor queryByKey(final ContentResolver cr, @NonNull final Key key, @Nullable final String[] projections,
+ @Nullable final String sortOrder) {
+ return cr.query(urlAnnotationsTableWithProfile,
+ projections,
+ BrowserContract.UrlAnnotations.KEY + " = ?", new String[] { key.getDbValue() },
+ sortOrder);
+ }
+
+ @Override
+ public Cursor getScreenshots(ContentResolver cr) {
+ return queryByKey(cr,
+ Key.SCREENSHOT,
+ new String[] {
+ BrowserContract.UrlAnnotations._ID,
+ BrowserContract.UrlAnnotations.URL,
+ BrowserContract.UrlAnnotations.KEY,
+ BrowserContract.UrlAnnotations.VALUE,
+ BrowserContract.UrlAnnotations.DATE_CREATED,
+ },
+ BrowserContract.UrlAnnotations.DATE_CREATED + " DESC");
+ }
}
--- a/mobile/android/base/java/org/mozilla/gecko/db/StubBrowserDB.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/StubBrowserDB.java
@@ -148,16 +148,19 @@ class StubTabsAccessor implements TabsAc
}
public synchronized void persistLocalTabs(final ContentResolver cr, final Iterable<Tab> tabs) { }
}
class StubUrlAnnotations implements UrlAnnotations {
@Override
public void insertAnnotation(ContentResolver cr, String url, String key, String value) {}
+
+ @Override
+ public Cursor getScreenshots(ContentResolver cr) { return null; }
}
/*
* This base implementation just stubs all methods. For the
* real implementations, see LocalBrowserDB.java.
*/
public class StubBrowserDB implements BrowserDB {
private final StubSearches searches = new StubSearches();
--- a/mobile/android/base/java/org/mozilla/gecko/db/UrlAnnotations.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/UrlAnnotations.java
@@ -1,12 +1,14 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.db;
import android.content.ContentResolver;
+import android.database.Cursor;
import org.mozilla.gecko.annotation.RobocopTarget;
public interface UrlAnnotations {
@RobocopTarget void insertAnnotation(ContentResolver cr, String url, String key, String value);
+ Cursor getScreenshots(ContentResolver cr);
}