summaryrefslogtreecommitdiffstats
path: root/toolkit/components/places/tests/expiration/test_annos_expire_history.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/places/tests/expiration/test_annos_expire_history.js')
-rw-r--r--toolkit/components/places/tests/expiration/test_annos_expire_history.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/expiration/test_annos_expire_history.js b/toolkit/components/places/tests/expiration/test_annos_expire_history.js
new file mode 100644
index 000000000..f9568a769
--- /dev/null
+++ b/toolkit/components/places/tests/expiration/test_annos_expire_history.js
@@ -0,0 +1,93 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
+ * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * What this is aimed to test:
+ *
+ * EXPIRE_WITH_HISTORY annotations should be expired when a page has no more
+ * visits, even if the page still exists in the database.
+ * This expiration policy is only valid for page annotations.
+ */
+
+var as = Cc["@mozilla.org/browser/annotation-service;1"].
+ getService(Ci.nsIAnnotationService);
+
+function run_test() {
+ run_next_test();
+}
+
+add_task(function* test_annos_expire_history() {
+ // Set interval to a large value so we don't expire on it.
+ setInterval(3600); // 1h
+
+ // Expire all expirable pages.
+ setMaxPages(0);
+
+ // Add some visited page and a couple expire with history annotations for each.
+ let now = getExpirablePRTime();
+ for (let i = 0; i < 5; i++) {
+ let pageURI = uri("http://page_anno." + i + ".mozilla.org/");
+ yield PlacesTestUtils.addVisits({ uri: pageURI, visitDate: now++ });
+ as.setPageAnnotation(pageURI, "page_expire1", "test", 0, as.EXPIRE_WITH_HISTORY);
+ as.setPageAnnotation(pageURI, "page_expire2", "test", 0, as.EXPIRE_WITH_HISTORY);
+ }
+
+ let pages = as.getPagesWithAnnotation("page_expire1");
+ do_check_eq(pages.length, 5);
+ pages = as.getPagesWithAnnotation("page_expire2");
+ do_check_eq(pages.length, 5);
+
+ // Add some bookmarked page and a couple session annotations for each.
+ for (let i = 0; i < 5; i++) {
+ let pageURI = uri("http://item_anno." + i + ".mozilla.org/");
+ // We also add a visit before bookmarking.
+ yield PlacesTestUtils.addVisits({ uri: pageURI, visitDate: now++ });
+ yield PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: pageURI,
+ title: null
+ });
+ // Notice we use page annotations here, items annotations can't use this
+ // kind of expiration policy.
+ as.setPageAnnotation(pageURI, "item_persist1", "test", 0, as.EXPIRE_WITH_HISTORY);
+ as.setPageAnnotation(pageURI, "item_persist2", "test", 0, as.EXPIRE_WITH_HISTORY);
+ }
+
+ let items = as.getPagesWithAnnotation("item_persist1");
+ do_check_eq(items.length, 5);
+ items = as.getPagesWithAnnotation("item_persist2");
+ do_check_eq(items.length, 5);
+
+ // Add other visited page and a couple expire with history annotations for each.
+ // We won't expire these visits, so the annotations should survive.
+ for (let i = 0; i < 5; i++) {
+ let pageURI = uri("http://persist_page_anno." + i + ".mozilla.org/");
+ yield PlacesTestUtils.addVisits({ uri: pageURI, visitDate: now++ });
+ as.setPageAnnotation(pageURI, "page_persist1", "test", 0, as.EXPIRE_WITH_HISTORY);
+ as.setPageAnnotation(pageURI, "page_persist2", "test", 0, as.EXPIRE_WITH_HISTORY);
+ }
+
+ pages = as.getPagesWithAnnotation("page_persist1");
+ do_check_eq(pages.length, 5);
+ pages = as.getPagesWithAnnotation("page_persist2");
+ do_check_eq(pages.length, 5);
+
+ // Expire all visits for the first 5 pages and the bookmarks.
+ yield promiseForceExpirationStep(10);
+
+ pages = as.getPagesWithAnnotation("page_expire1");
+ do_check_eq(pages.length, 0);
+ pages = as.getPagesWithAnnotation("page_expire2");
+ do_check_eq(pages.length, 0);
+ items = as.getItemsWithAnnotation("item_persist1");
+ do_check_eq(items.length, 0);
+ items = as.getItemsWithAnnotation("item_persist2");
+ do_check_eq(items.length, 0);
+ pages = as.getPagesWithAnnotation("page_persist1");
+ do_check_eq(pages.length, 5);
+ pages = as.getPagesWithAnnotation("page_persist2");
+ do_check_eq(pages.length, 5);
+});