diff options
Diffstat (limited to 'browser/base/content/test/newtab/browser_newtab_update.js')
-rw-r--r-- | browser/base/content/test/newtab/browser_newtab_update.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/browser/base/content/test/newtab/browser_newtab_update.js b/browser/base/content/test/newtab/browser_newtab_update.js new file mode 100644 index 000000000..6cf089dfd --- /dev/null +++ b/browser/base/content/test/newtab/browser_newtab_update.js @@ -0,0 +1,48 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Checks that newtab is updated as its links change. + */ +add_task(function* () { + // First, start with an empty page. setLinks will trigger a hidden page + // update because it calls clearHistory. We need to wait for that update to + // happen so that the next time we wait for a page update below, we catch the + // right update and not the one triggered by setLinks. + let updatedPromise = whenPagesUpdated(); + let setLinksPromise = setLinks([]); + yield Promise.all([updatedPromise, setLinksPromise]); + + // Strategy: Add some visits, open a new page, check the grid, repeat. + yield fillHistoryAndWaitForPageUpdate([1]); + yield* addNewTabPageTab(); + yield* checkGrid("1,,,,,,,,"); + + yield fillHistoryAndWaitForPageUpdate([2]); + yield* addNewTabPageTab(); + yield* checkGrid("2,1,,,,,,,"); + + yield fillHistoryAndWaitForPageUpdate([1]); + yield* addNewTabPageTab(); + yield* checkGrid("1,2,,,,,,,"); + + yield fillHistoryAndWaitForPageUpdate([2, 3, 4]); + yield* addNewTabPageTab(); + yield* checkGrid("2,1,3,4,,,,,"); + + // Make sure these added links have the right type + let type = yield performOnCell(1, cell => { return cell.site.link.type }); + is(type, "history", "added link is history"); +}); + +function fillHistoryAndWaitForPageUpdate(links) { + let updatedPromise = whenPagesUpdated; + let fillHistoryPromise = fillHistory(links.map(link)); + return Promise.all([updatedPromise, fillHistoryPromise]); +} + +function link(id) { + return { url: "http://example" + id + ".com/", title: "site#" + id }; +} |