summaryrefslogtreecommitdiffstats
path: root/toolkit/components/places/tests/expiration/test_debug_expiration.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/places/tests/expiration/test_debug_expiration.js')
-rw-r--r--toolkit/components/places/tests/expiration/test_debug_expiration.js225
1 files changed, 225 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/expiration/test_debug_expiration.js b/toolkit/components/places/tests/expiration/test_debug_expiration.js
new file mode 100644
index 000000000..456c03363
--- /dev/null
+++ b/toolkit/components/places/tests/expiration/test_debug_expiration.js
@@ -0,0 +1,225 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * What this is aimed to test:
+ *
+ * Expiration can be manually triggered through a debug topic, but that should
+ * only expire orphan entries, unless -1 is passed as limit.
+ */
+
+var gNow = getExpirablePRTime(60);
+
+add_task(function* test_expire_orphans()
+{
+ // Add visits to 2 pages and force a orphan expiration. Visits should survive.
+ yield PlacesTestUtils.addVisits({
+ uri: uri("http://page1.mozilla.org/"),
+ visitDate: gNow++
+ });
+ yield PlacesTestUtils.addVisits({
+ uri: uri("http://page2.mozilla.org/"),
+ visitDate: gNow++
+ });
+ // Create a orphan place.
+ let bm = yield PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: "http://page3.mozilla.org/",
+ title: ""
+ });
+ yield PlacesUtils.bookmarks.remove(bm);
+
+ // Expire now.
+ yield promiseForceExpirationStep(0);
+
+ // Check that visits survived.
+ do_check_eq(visits_in_database("http://page1.mozilla.org/"), 1);
+ do_check_eq(visits_in_database("http://page2.mozilla.org/"), 1);
+ do_check_false(page_in_database("http://page3.mozilla.org/"));
+
+ // Clean up.
+ yield PlacesTestUtils.clearHistory();
+});
+
+add_task(function* test_expire_orphans_optionalarg()
+{
+ // Add visits to 2 pages and force a orphan expiration. Visits should survive.
+ yield PlacesTestUtils.addVisits({
+ uri: uri("http://page1.mozilla.org/"),
+ visitDate: gNow++
+ });
+ yield PlacesTestUtils.addVisits({
+ uri: uri("http://page2.mozilla.org/"),
+ visitDate: gNow++
+ });
+ // Create a orphan place.
+ let bm = yield PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: "http://page3.mozilla.org/",
+ title: ""
+ });
+ yield PlacesUtils.bookmarks.remove(bm);
+
+ // Expire now.
+ yield promiseForceExpirationStep();
+
+ // Check that visits survived.
+ do_check_eq(visits_in_database("http://page1.mozilla.org/"), 1);
+ do_check_eq(visits_in_database("http://page2.mozilla.org/"), 1);
+ do_check_false(page_in_database("http://page3.mozilla.org/"));
+
+ // Clean up.
+ yield PlacesTestUtils.clearHistory();
+});
+
+add_task(function* test_expire_limited()
+{
+ yield PlacesTestUtils.addVisits([
+ { // Should be expired cause it's the oldest visit
+ uri: "http://old.mozilla.org/",
+ visitDate: gNow++
+ },
+ { // Should not be expired cause we limit 1
+ uri: "http://new.mozilla.org/",
+ visitDate: gNow++
+ },
+ ]);
+
+ // Expire now.
+ yield promiseForceExpirationStep(1);
+
+ // Check that newer visit survived.
+ do_check_eq(visits_in_database("http://new.mozilla.org/"), 1);
+ // Other visits should have been expired.
+ do_check_false(page_in_database("http://old.mozilla.org/"));
+
+ // Clean up.
+ yield PlacesTestUtils.clearHistory();
+});
+
+add_task(function* test_expire_limited_longurl()
+{
+ let longurl = "http://long.mozilla.org/" + "a".repeat(232);
+ yield PlacesTestUtils.addVisits([
+ { // Should be expired cause it's the oldest visit
+ uri: "http://old.mozilla.org/",
+ visitDate: gNow++
+ },
+ { // Should be expired cause it's a long url older than 60 days.
+ uri: longurl,
+ visitDate: gNow++
+ },
+ { // Should not be expired cause younger than 60 days.
+ uri: longurl,
+ visitDate: getExpirablePRTime(58)
+ }
+ ]);
+
+ yield promiseForceExpirationStep(1);
+
+ // Check that some visits survived.
+ do_check_eq(visits_in_database(longurl), 1);
+ // Other visits should have been expired.
+ do_check_false(page_in_database("http://old.mozilla.org/"));
+
+ // Clean up.
+ yield PlacesTestUtils.clearHistory();
+});
+
+add_task(function* test_expire_limited_exoticurl()
+{
+ yield PlacesTestUtils.addVisits([
+ { // Should be expired cause it's the oldest visit
+ uri: "http://old.mozilla.org/",
+ visitDate: gNow++
+ },
+ { // Should be expired cause it's a long url older than 60 days.
+ uri: "http://download.mozilla.org",
+ visitDate: gNow++,
+ transition: 7
+ },
+ { // Should not be expired cause younger than 60 days.
+ uri: "http://nonexpirable-download.mozilla.org",
+ visitDate: getExpirablePRTime(58),
+ transition: 7
+ }
+ ]);
+
+ yield promiseForceExpirationStep(1);
+
+ // Check that some visits survived.
+ do_check_eq(visits_in_database("http://nonexpirable-download.mozilla.org/"), 1);
+ // The visits are gone, the url is not yet, cause we limited the expiration
+ // to one entry, and we already removed http://old.mozilla.org/.
+ // The page normally would be expired by the next expiration run.
+ do_check_eq(visits_in_database("http://download.mozilla.org/"), 0);
+ // Other visits should have been expired.
+ do_check_false(page_in_database("http://old.mozilla.org/"));
+
+ // Clean up.
+ yield PlacesTestUtils.clearHistory();
+});
+
+add_task(function* test_expire_unlimited()
+{
+ let longurl = "http://long.mozilla.org/" + "a".repeat(232);
+ yield PlacesTestUtils.addVisits([
+ {
+ uri: "http://old.mozilla.org/",
+ visitDate: gNow++
+ },
+ {
+ uri: "http://new.mozilla.org/",
+ visitDate: gNow++
+ },
+ // Add expirable visits.
+ {
+ uri: "http://download.mozilla.org/",
+ visitDate: gNow++,
+ transition: PlacesUtils.history.TRANSITION_DOWNLOAD
+ },
+ {
+ uri: longurl,
+ visitDate: gNow++
+ },
+
+ // Add non-expirable visits
+ {
+ uri: "http://nonexpirable.mozilla.org/",
+ visitDate: getExpirablePRTime(5)
+ },
+ {
+ uri: "http://nonexpirable-download.mozilla.org/",
+ visitDate: getExpirablePRTime(5),
+ transition: PlacesUtils.history.TRANSITION_DOWNLOAD
+ },
+ {
+ uri: longurl,
+ visitDate: getExpirablePRTime(5)
+ }
+ ]);
+
+ yield promiseForceExpirationStep(-1);
+
+ // Check that some visits survived.
+ do_check_eq(visits_in_database("http://nonexpirable.mozilla.org/"), 1);
+ do_check_eq(visits_in_database("http://nonexpirable-download.mozilla.org/"), 1);
+ do_check_eq(visits_in_database(longurl), 1);
+ // Other visits should have been expired.
+ do_check_false(page_in_database("http://old.mozilla.org/"));
+ do_check_false(page_in_database("http://download.mozilla.org/"));
+ do_check_false(page_in_database("http://new.mozilla.org/"));
+
+ // Clean up.
+ yield PlacesTestUtils.clearHistory();
+});
+
+function run_test()
+{
+ // Set interval to a large value so we don't expire on it.
+ setInterval(3600); // 1h
+ // Set maxPages to a low value, so it's easy to go over it.
+ setMaxPages(1);
+
+ run_next_test();
+}