forked from mirrors/gecko-dev
83 lines
2.8 KiB
JavaScript
83 lines
2.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const PRELOAD_PREF = "browser.newtab.preload";
|
|
|
|
gDirectorySource = "data:application/json," + JSON.stringify({
|
|
"directory": [{
|
|
url: "http://example.com/organic",
|
|
type: "organic"
|
|
}, {
|
|
url: "http://localhost/sponsored",
|
|
type: "sponsored"
|
|
}]
|
|
});
|
|
|
|
add_task(function* () {
|
|
yield pushPrefs([PRELOAD_PREF, false]);
|
|
|
|
let originalReportSitesAction = DirectoryLinksProvider.reportSitesAction;
|
|
registerCleanupFunction(() => {
|
|
DirectoryLinksProvider.reportSitesAction = originalReportSitesAction;
|
|
});
|
|
|
|
let expected = {};
|
|
|
|
function expectReportSitesAction() {
|
|
return new Promise(resolve => {
|
|
DirectoryLinksProvider.reportSitesAction = function(sites, action, siteIndex) {
|
|
let {link} = sites[siteIndex];
|
|
is(link.type, expected.type, "got expected type");
|
|
is(action, expected.action, "got expected action");
|
|
is(NewTabUtils.pinnedLinks.isPinned(link), expected.pinned, "got expected pinned");
|
|
resolve();
|
|
}
|
|
});
|
|
}
|
|
|
|
// Test that the last visible site (index 1) is reported
|
|
let reportSitesPromise = expectReportSitesAction();
|
|
expected.type = "sponsored";
|
|
expected.action = "view";
|
|
expected.pinned = false;
|
|
yield* addNewTabPageTab();
|
|
yield reportSitesPromise;
|
|
|
|
// Click the pin button on the link in the 1th tile spot
|
|
expected.action = "pin";
|
|
// tiles become "history" when pinned
|
|
expected.type = "history";
|
|
expected.pinned = true;
|
|
let pagesUpdatedPromise = whenPagesUpdated();
|
|
reportSitesPromise = expectReportSitesAction();
|
|
|
|
yield BrowserTestUtils.synthesizeMouseAtCenter(".newtab-cell + .newtab-cell .newtab-control-pin", {}, gBrowser.selectedBrowser);
|
|
yield pagesUpdatedPromise;
|
|
yield reportSitesPromise;
|
|
|
|
// Unpin that link
|
|
expected.action = "unpin";
|
|
expected.pinned = false;
|
|
pagesUpdatedPromise = whenPagesUpdated();
|
|
reportSitesPromise = expectReportSitesAction();
|
|
yield BrowserTestUtils.synthesizeMouseAtCenter(".newtab-cell + .newtab-cell .newtab-control-pin", {}, gBrowser.selectedBrowser);
|
|
yield pagesUpdatedPromise;
|
|
yield reportSitesPromise;
|
|
|
|
// Block the site in the 0th tile spot
|
|
expected.type = "organic";
|
|
expected.action = "block";
|
|
expected.pinned = false;
|
|
pagesUpdatedPromise = whenPagesUpdated();
|
|
reportSitesPromise = expectReportSitesAction();
|
|
yield BrowserTestUtils.synthesizeMouseAtCenter(".newtab-site .newtab-control-block", {}, gBrowser.selectedBrowser);
|
|
yield pagesUpdatedPromise;
|
|
yield reportSitesPromise;
|
|
|
|
// Click the 1th link now in the 0th tile spot
|
|
expected.type = "history";
|
|
expected.action = "click";
|
|
reportSitesPromise = expectReportSitesAction();
|
|
yield BrowserTestUtils.synthesizeMouseAtCenter(".newtab-site", {}, gBrowser.selectedBrowser);
|
|
yield reportSitesPromise;
|
|
});
|