toolkit/components/places/tests/expiration/test_pref_maxpages.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:0bea71e29105
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 /**
8 * What this is aimed to test:
9 *
10 * Expiration will obey to hardware spec, but user can set a custom maximum
11 * number of pages to retain, to restrict history, through
12 * "places.history.expiration.max_pages".
13 * This limit is used at next expiration run.
14 * If the pref is set to a number < 0 we will use the default value.
15 */
16
17 let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
18 getService(Ci.nsINavHistoryService);
19
20 let tests = [
21
22 { desc: "Set max_pages to a negative value, with 1 page.",
23 maxPages: -1,
24 addPages: 1,
25 expectedNotifications: 0, // Will ignore and won't expire anything.
26 },
27
28 { desc: "Set max_pages to 0.",
29 maxPages: 0,
30 addPages: 1,
31 expectedNotifications: 1,
32 },
33
34 { desc: "Set max_pages to 0, with 2 pages.",
35 maxPages: 0,
36 addPages: 2,
37 expectedNotifications: 2, // Will expire everything.
38 },
39
40 // Notice if we are over limit we do a full step of expiration. So we ensure
41 // that we will expire if we are over the limit, but we don't ensure that we
42 // will expire exactly up to the limit. Thus in this case we expire
43 // everything.
44 { desc: "Set max_pages to 1 with 2 pages.",
45 maxPages: 1,
46 addPages: 2,
47 expectedNotifications: 2, // Will expire everything (in this case).
48 },
49
50 { desc: "Set max_pages to 10, with 9 pages.",
51 maxPages: 10,
52 addPages: 9,
53 expectedNotifications: 0, // We are at the limit, won't expire anything.
54 },
55
56 { desc: "Set max_pages to 10 with 10 pages.",
57 maxPages: 10,
58 addPages: 10,
59 expectedNotifications: 0, // We are below the limit, won't expire anything.
60 },
61 ];
62
63 function run_test() {
64 run_next_test();
65 }
66
67 add_task(function test_pref_maxpages() {
68 // The pref should not exist by default.
69 try {
70 getMaxPages();
71 do_throw("interval pref should not exist by default");
72 }
73 catch (ex) {}
74
75 // Set interval to a large value so we don't expire on it.
76 setInterval(3600); // 1h
77
78 for (let testIndex = 1; testIndex <= tests.length; testIndex++) {
79 let currentTest = tests[testIndex -1];
80 print("\nTEST " + testIndex + ": " + currentTest.desc);
81 currentTest.receivedNotifications = 0;
82
83 // Setup visits.
84 let now = getExpirablePRTime();
85 for (let i = 0; i < currentTest.addPages; i++) {
86 let page = "http://" + testIndex + "." + i + ".mozilla.org/";
87 yield promiseAddVisits({ uri: uri(page), visitDate: now++ });
88 }
89
90 // Observe history.
91 historyObserver = {
92 onBeginUpdateBatch: function PEX_onBeginUpdateBatch() {},
93 onEndUpdateBatch: function PEX_onEndUpdateBatch() {},
94 onClearHistory: function() {},
95 onVisit: function() {},
96 onTitleChanged: function() {},
97 onDeleteURI: function(aURI) {
98 print("onDeleteURI " + aURI.spec);
99 currentTest.receivedNotifications++;
100 },
101 onPageChanged: function() {},
102 onDeleteVisits: function(aURI, aTime) {
103 print("onDeleteVisits " + aURI.spec + " " + aTime);
104 },
105 };
106 hs.addObserver(historyObserver, false);
107
108 setMaxPages(currentTest.maxPages);
109
110 // Expire now.
111 yield promiseForceExpirationStep(-1);
112
113 hs.removeObserver(historyObserver, false);
114
115 do_check_eq(currentTest.receivedNotifications,
116 currentTest.expectedNotifications);
117
118 // Clean up.
119 yield promiseClearHistory();
120 }
121
122 clearMaxPages();
123 yield promiseClearHistory();
124 });

mercurial