Bug 1264057 - Don't show stale clients on the History Panel r=margaret draft
authorGrigory Kruglov <gkruglov@mozilla.com>
Thu, 02 Jun 2016 15:31:10 -0700
changeset 374882 a905d63da3b3ca30f167c6227bfad8fa2ed71196
parent 374881 f76a0fdadbf053c3373961f9afbc966c011a50fe
child 522705 35700140a9742100e3ebc3c500c6fc4940a0f214
push id20101
push usergkruglov@mozilla.com
push dateThu, 02 Jun 2016 22:47:07 +0000
reviewersmargaret
bugs1264057
milestone49.0a1
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
mobile/android/base/java/org/mozilla/gecko/db/LocalTabsAccessor.java
--- 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);
     }