Files
tubestation/toolkit/components/extensions/parent/ext-topSites.js
2018-03-25 21:20:17 -07:00

38 lines
1.3 KiB
JavaScript

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
ChromeUtils.defineModuleGetter(this, "NewTabUtils",
"resource://gre/modules/NewTabUtils.jsm");
this.topSites = class extends ExtensionAPI {
getAPI(context) {
return {
topSites: {
get: function(options) {
return new Promise((resolve) => {
NewTabUtils.links.populateCache(async () => {
let urls;
// The placesProvider is a superset of activityStream if sites are blocked, etc.,
// there is no need to attempt a merge of multiple provider lists.
if (options.providers.includes("places")) {
urls = NewTabUtils.getProviderLinks(NewTabUtils.placesProvider).slice();
} else {
urls = await NewTabUtils.activityStreamLinks.getTopSites();
}
resolve(urls.filter(link => !!link)
.map(link => {
return {
url: link.url,
title: link.title,
};
}));
}, false);
});
},
},
};
}
};