Bug 1264057 - Don't show stale clients on the History Panel r=margaret
Currently we might have old (aka stale) clients appear on the History panel, which could be confusing.
This patch modifies underlying query to select only those clients whose LAST_MODIFIED timestamp
is newer than three weeks ago.
MozReview-Commit-ID: JsZJwNONDJG
--- a/mobile/android/base/java/org/mozilla/gecko/db/LocalTabsAccessor.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/LocalTabsAccessor.java
@@ -22,16 +22,17 @@ import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.Log;
public class LocalTabsAccessor implements TabsAccessor {
private static final String LOGTAG = "GeckoTabsAccessor";
+ private static final long THREE_WEEKS_IN_MILLISECONDS = 1000 * 60 * 60 * 24 * 7 * 3;
public static final String[] TABS_PROJECTION_COLUMNS = new String[] {
BrowserContract.Tabs.TITLE,
BrowserContract.Tabs.URL,
BrowserContract.Clients.GUID,
BrowserContract.Clients.NAME,
BrowserContract.Tabs.LAST_USED,
BrowserContract.Clients.LAST_MODIFIED,
@@ -43,16 +44,18 @@ public class LocalTabsAccessor implement
BrowserContract.Clients.NAME,
BrowserContract.Clients.LAST_MODIFIED,
BrowserContract.Clients.DEVICE_TYPE
};
private static final String REMOTE_CLIENTS_SELECTION = BrowserContract.Clients.GUID + " IS NOT NULL";
private static final String LOCAL_TABS_SELECTION = BrowserContract.Tabs.CLIENT_GUID + " IS NULL";
private static final String REMOTE_TABS_SELECTION = BrowserContract.Tabs.CLIENT_GUID + " IS NOT NULL";
+ private static final String REMOTE_TABS_SELECTION_CLIENT_RECENCY = REMOTE_TABS_SELECTION +
+ " AND " + BrowserContract.Clients.LAST_MODIFIED + " > ?";
private static final String REMOTE_TABS_SORT_ORDER =
// Most recently synced clients first.
BrowserContract.Clients.LAST_MODIFIED + " DESC, " +
// If two clients somehow had the same last modified time, this will
// group them (arbitrarily).
BrowserContract.Clients.GUID + " DESC, " +
// Within a single client, most recently used tabs first.
@@ -182,22 +185,23 @@ public class LocalTabsAccessor implement
Uri uri = tabsUriWithProfile;
if (limit > 0) {
uri = uri.buildUpon()
.appendQueryParameter(BrowserContract.PARAM_LIMIT, String.valueOf(limit))
.build();
}
- final Cursor cursor = context.getContentResolver().query(uri,
+ final String threeWeeksAgoTimestampMillis = Long.valueOf(
+ System.currentTimeMillis() - THREE_WEEKS_IN_MILLISECONDS).toString();
+ return context.getContentResolver().query(uri,
TABS_PROJECTION_COLUMNS,
- REMOTE_TABS_SELECTION,
- null,
+ REMOTE_TABS_SELECTION_CLIENT_RECENCY,
+ new String[] {threeWeeksAgoTimestampMillis},
REMOTE_TABS_SORT_ORDER);
- return cursor;
}
// This method returns all tabs from all remote clients,
// ordered by most recent client first, most recent tab first
@Override
public void getTabs(final Context context, final OnQueryTabsCompleteListener listener) {
getTabs(context, 0, listener);
}