Bug 997782 - Use suggested sites in the top sites query (r=wesj)

This commit is contained in:
Lucas Rocha 2014-05-09 16:34:55 +01:00
parent 6214b01e23
commit 19ec32fd93
2 changed files with 24 additions and 2 deletions

View File

@ -25,6 +25,7 @@ import org.mozilla.gecko.animation.ViewHelper;
import org.mozilla.gecko.db.BrowserContract.Combined;
import org.mozilla.gecko.db.BrowserContract.ReadingListItems;
import org.mozilla.gecko.db.BrowserDB;
import org.mozilla.gecko.db.SuggestedSites;
import org.mozilla.gecko.favicons.Favicons;
import org.mozilla.gecko.favicons.LoadFaviconTask;
import org.mozilla.gecko.favicons.OnFaviconLoadedListener;
@ -478,6 +479,10 @@ abstract public class BrowserApp extends GeckoApp
((GeckoApplication) getApplication()).prepareLightweightTheme();
super.onCreate(savedInstanceState);
// Init suggested sites engine in BrowserDB.
final SuggestedSites suggestedSites = new SuggestedSites(getApplicationContext());
BrowserDB.setSuggestedSites(suggestedSites);
mViewFlipper = (ViewFlipper) findViewById(R.id.browser_actionbar);
mActionBar = (ActionModeCompatView) findViewById(R.id.actionbar);

View File

@ -8,6 +8,7 @@ package org.mozilla.gecko.db;
import java.util.List;
import org.mozilla.gecko.db.BrowserContract.ExpirePriority;
import org.mozilla.gecko.db.SuggestedSites;
import org.mozilla.gecko.favicons.decoders.LoadFaviconResult;
import org.mozilla.gecko.mozglue.RobocopTarget;
@ -31,6 +32,7 @@ public class BrowserDB {
}
private static BrowserDBIface sDb = null;
private static SuggestedSites sSuggestedSites;
public interface BrowserDBIface {
public void invalidateCachedState();
@ -145,6 +147,10 @@ public class BrowserDB {
sDb = new LocalBrowserDB(profile);
}
public static void setSuggestedSites(SuggestedSites suggestedSites) {
sSuggestedSites = suggestedSites;
}
public static void invalidateCachedState() {
sDb.invalidateCachedState();
}
@ -158,8 +164,19 @@ public class BrowserDB {
// Note this is not a single query anymore, but actually returns a mixture
// of two queries, one for topSites and one for pinned sites.
Cursor pinnedSites = sDb.getPinnedSites(cr, minLimit);
Cursor topSites = sDb.getTopSites(cr, maxLimit - pinnedSites.getCount());
return new TopSitesCursorWrapper(pinnedSites, topSites, minLimit);
int pinnedCount = pinnedSites.getCount();
Cursor topSites = sDb.getTopSites(cr, maxLimit - pinnedCount);
Cursor suggestedSites = null;
if (sSuggestedSites != null) {
final int count = minLimit - pinnedCount - topSites.getCount();
if (count > 0) {
suggestedSites = sSuggestedSites.get(count);
}
}
return new TopSitesCursorWrapper(pinnedSites, topSites, suggestedSites, minLimit);
}
public static void updateVisitedHistory(ContentResolver cr, String uri) {