summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/newtab/browser_newtab_bug722273.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/newtab/browser_newtab_bug722273.js')
-rw-r--r--browser/base/content/test/newtab/browser_newtab_bug722273.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/browser/base/content/test/newtab/browser_newtab_bug722273.js b/browser/base/content/test/newtab/browser_newtab_bug722273.js
new file mode 100644
index 000000000..5cbfcd3ff
--- /dev/null
+++ b/browser/base/content/test/newtab/browser_newtab_bug722273.js
@@ -0,0 +1,73 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+const NOW = Date.now() * 1000;
+const URL = "http://fake-site.com/";
+
+var tmp = {};
+Cc["@mozilla.org/moz/jssubscript-loader;1"]
+ .getService(Ci.mozIJSSubScriptLoader)
+ .loadSubScript("chrome://browser/content/sanitize.js", tmp);
+
+var {Sanitizer} = tmp;
+
+add_task(function* () {
+ yield promiseSanitizeHistory();
+ yield promiseAddFakeVisits();
+ yield* addNewTabPageTab();
+
+ let cellUrl = yield performOnCell(0, cell => { return cell.site.url; });
+ is(cellUrl, URL, "first site is our fake site");
+
+ let updatedPromise = whenPagesUpdated();
+ yield promiseSanitizeHistory();
+ yield updatedPromise;
+
+ let isGone = yield performOnCell(0, cell => { return cell.site == null; });
+ ok(isGone, "fake site is gone");
+});
+
+function promiseAddFakeVisits() {
+ let visits = [];
+ for (let i = 59; i > 0; i--) {
+ visits.push({
+ visitDate: NOW - i * 60 * 1000000,
+ transitionType: Ci.nsINavHistoryService.TRANSITION_LINK
+ });
+ }
+ let place = {
+ uri: makeURI(URL),
+ title: "fake site",
+ visits: visits
+ };
+ return new Promise((resolve, reject) => {
+ PlacesUtils.asyncHistory.updatePlaces(place, {
+ handleError: () => reject(new Error("Couldn't add visit")),
+ handleResult: function () {},
+ handleCompletion: function () {
+ NewTabUtils.links.populateCache(function () {
+ NewTabUtils.allPages.update();
+ resolve();
+ }, true);
+ }
+ });
+ });
+}
+
+function promiseSanitizeHistory() {
+ let s = new Sanitizer();
+ s.prefDomain = "privacy.cpd.";
+
+ let prefs = gPrefService.getBranch(s.prefDomain);
+ prefs.setBoolPref("history", true);
+ prefs.setBoolPref("downloads", false);
+ prefs.setBoolPref("cache", false);
+ prefs.setBoolPref("cookies", false);
+ prefs.setBoolPref("formdata", false);
+ prefs.setBoolPref("offlineApps", false);
+ prefs.setBoolPref("passwords", false);
+ prefs.setBoolPref("sessions", false);
+ prefs.setBoolPref("siteSettings", false);
+
+ return s.sanitize();
+}