forked from mirrors/gecko-dev
87 lines
3.7 KiB
JavaScript
87 lines
3.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/*
|
|
* These tests make sure that pinning suggested tile results in:
|
|
* - making suggested tile a history tile and replacing enhancedImageURI with imageURI
|
|
* - upond end of campaign, replaces landing url with baseDomain and switches
|
|
* background image to thumbnail
|
|
*/
|
|
|
|
gDirectorySource = "data:application/json," + JSON.stringify({
|
|
"suggested": [{
|
|
url: "http://example.com/landing/page.html",
|
|
imageURI: "data:image/png;base64,helloWORLD3",
|
|
enhancedImageURI: "data:image/png;base64,helloWORLD2",
|
|
title: "title",
|
|
type: "affiliate",
|
|
adgroup_name: "example",
|
|
frecent_sites: ["example0.com"],
|
|
}]
|
|
});
|
|
|
|
add_task(function* () {
|
|
let origGetFrecentSitesName = DirectoryLinksProvider.getFrecentSitesName;
|
|
DirectoryLinksProvider.getFrecentSitesName = () => "";
|
|
|
|
function getData(cellNum) {
|
|
return performOnCell(cellNum, cell => {
|
|
if (!cell.site)
|
|
return null;
|
|
let siteNode = cell.site.node;
|
|
return {
|
|
type: siteNode.getAttribute("type"),
|
|
thumbnail: siteNode.querySelector(".newtab-thumbnail").style.backgroundImage,
|
|
enhanced: siteNode.querySelector(".enhanced-content").style.backgroundImage,
|
|
title: siteNode.querySelector(".newtab-title").textContent,
|
|
suggested: siteNode.getAttribute("suggested"),
|
|
url: siteNode.querySelector(".newtab-link").getAttribute("href"),
|
|
};
|
|
});
|
|
}
|
|
|
|
yield setLinks("0,1,2,3,4,5,6,7,8,9");
|
|
setPinnedLinks("");
|
|
|
|
yield* addNewTabPageTab();
|
|
// load another newtab since the first may not get suggested tile
|
|
yield* addNewTabPageTab();
|
|
yield* checkGrid("http://example.com/landing/page.html,0,1,2,3,4,5,6,7,8,9");
|
|
// evaluate suggested tile
|
|
let tileData = yield getData(0);
|
|
is(tileData.type, "affiliate", "unpinned type");
|
|
is(tileData.thumbnail, "url(\"data:image/png;base64,helloWORLD3\")", "unpinned thumbnail");
|
|
is(tileData.enhanced, "url(\"data:image/png;base64,helloWORLD2\")", "unpinned enhanced");
|
|
is(tileData.suggested, "true", "has suggested set", "unpinned suggested exists");
|
|
is(tileData.url, "http://example.com/landing/page.html", "unpinned landing page");
|
|
|
|
// suggested tile should not be pinned
|
|
is(NewTabUtils.pinnedLinks.isPinned({url: "http://example.com/landing/page.html"}), false, "suggested tile is not pinned");
|
|
|
|
// pin suggested tile
|
|
let updatedPromise = whenPagesUpdated();
|
|
yield BrowserTestUtils.synthesizeMouseAtCenter(".newtab-site > .newtab-control-pin", {}, gBrowser.selectedBrowser);
|
|
yield updatedPromise;
|
|
|
|
// tile should be pinned and turned into history tile
|
|
is(NewTabUtils.pinnedLinks.isPinned({url: "http://example.com/landing/page.html"}), true, "suggested tile is pinned");
|
|
tileData = yield getData(0);
|
|
is(tileData.type, "history", "pinned type");
|
|
is(tileData.suggested, null, "no suggested attribute");
|
|
is(tileData.url, "http://example.com/landing/page.html", "original landing page");
|
|
|
|
// set pinned tile endTime into past and reload the page
|
|
NewTabUtils.pinnedLinks._links[0].endTime = Date.now() - 1000;
|
|
yield* addNewTabPageTab();
|
|
|
|
// check that url is reset to base domain and thumbnail points to moz-page-thumb service
|
|
is(NewTabUtils.pinnedLinks.isPinned({url: "http://example.com/"}), true, "baseDomain url is pinned");
|
|
tileData = yield getData(0);
|
|
is(tileData.type, "history", "type is history");
|
|
is(tileData.title, "example.com", "title changed to baseDomain");
|
|
is(tileData.thumbnail.indexOf("moz-page-thumb") != -1, true, "thumbnail contains moz-page-thumb");
|
|
is(tileData.enhanced, "", "no enhanced image");
|
|
is(tileData.url, "http://example.com/", "url points to baseDomian");
|
|
|
|
DirectoryLinksProvider.getFrecentSitesName = origGetFrecentSitesName;
|
|
});
|