commit 730809f3983bb5d9ecaed7c305fea480f3f1e575
parent 1aeb89553ad9edbe5e46d809a1a8817d205e2995
Author: Nathan Barrett <nbarrett@mozilla.com>
Date: Thu, 8 Jan 2026 21:56:22 +0000
Bug 2008733 - Retrieve random frecency boosted tile r=ini,home-newtab-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D278154
Diffstat:
1 file changed, 44 insertions(+), 0 deletions(-)
diff --git a/browser/extensions/newtab/lib/FrecencyBoostProvider/FrecencyBoostProvider.mjs b/browser/extensions/newtab/lib/FrecencyBoostProvider/FrecencyBoostProvider.mjs
@@ -237,4 +237,48 @@ export class FrecencyBoostProvider {
link => !lazy.NewTabUtils.blockedLinks.isBlocked({ url: link.url })
);
}
+
+ async retrieveRandomFrecencyTile() {
+ if (!this._frecencyBoostedSponsors.size) {
+ await this._importFrecencyBoostedSponsors();
+ }
+
+ const storedTile = await this.cache.get("randomFrecencyTile");
+ if (storedTile) {
+ const tile = JSON.parse(storedTile);
+ if (
+ this._frecencyBoostedSponsors.has(tile.hostname) &&
+ !lazy.NewTabUtils.blockedLinks.isBlocked({ url: tile.url })
+ ) {
+ return tile;
+ }
+ await this.cache.set("randomFrecencyTile", null);
+ }
+
+ const candidates = Array.from(
+ this._frecencyBoostedSponsors.values()
+ ).filter(s => !lazy.NewTabUtils.blockedLinks.isBlocked({ url: s.domain }));
+
+ if (!candidates.length) {
+ return null;
+ }
+
+ const selected = candidates[Math.floor(Math.random() * candidates.length)];
+ const tile = {
+ hostname: selected.hostname,
+ url: selected.redirectURL,
+ label: selected.title,
+ partner: SPONSORED_TILE_PARTNER_FREC_BOOST,
+ type: "frecency-boost-random",
+ show_sponsored_label: true,
+ favicon: selected.faviconDataURI,
+ faviconSize: 96,
+ };
+ await this.cache.set("randomFrecencyTile", JSON.stringify(tile));
+ return tile;
+ }
+
+ async clearRandomFrecencyTile() {
+ await this.cache.set("randomFrecencyTile", null);
+ }
}