summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/newtab/browser_newtab_update.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/newtab/browser_newtab_update.js')
-rw-r--r--browser/base/content/test/newtab/browser_newtab_update.js48
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 };
+}