/* -*- 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/. */ var Ci = Components.interfaces; var Cc = Components.classes; var Cr = Components.results; var Cu = Components.utils; Cu.import("resource://gre/modules/Services.jsm"); // Import common head. { let commonFile = do_get_file("../head_common.js", false); let uri = Services.io.newFileURI(commonFile); Services.scriptloader.loadSubScript(uri.spec, this); } // Put any other stuff relative to this test folder below. // Simulates an expiration at shutdown. function shutdownExpiration() { let expire = Cc["@mozilla.org/places/expiration;1"].getService(Ci.nsIObserver); expire.observe(null, "places-will-close-connection", null); } /** * Causes expiration component to start, otherwise it would wait for the first * history notification. */ function force_expiration_start() { Cc["@mozilla.org/places/expiration;1"] .getService(Ci.nsIObserver) .observe(null, "testing-mode", null); } /** * Forces an expiration run. * * @param [optional] aLimit * Limit for the expiration. Pass -1 for unlimited. * Any other non-positive value will just expire orphans. * * @return {Promise} * @resolves When expiration finishes. * @rejects Never. */ function promiseForceExpirationStep(aLimit) { let promise = promiseTopicObserved(PlacesUtils.TOPIC_EXPIRATION_FINISHED); let expire = Cc["@mozilla.org/places/expiration;1"].getService(Ci.nsIObserver); expire.observe(null, "places-debug-start-expiration", aLimit); return promise; } /** * Expiration preferences helpers. */ function setInterval(aNewInterval) { Services.prefs.setIntPref("places.history.expiration.interval_seconds", aNewInterval); } function getInterval() { return Services.prefs.getIntPref("places.history.expiration.interval_seconds"); } function clearInterval() { try { Services.prefs.clearUserPref("places.history.expiration.interval_seconds"); } catch (ex) {} } function setMaxPages(aNewMaxPages) { Services.prefs.setIntPref("places.history.expiration.max_pages", aNewMaxPages); } function getMaxPages() { return Services.prefs.getIntPref("places.history.expiration.max_pages"); } function clearMaxPages() { try { Services.prefs.clearUserPref("places.history.expiration.max_pages"); } catch (ex) {} } function setHistoryEnabled(aHistoryEnabled) { Services.prefs.setBoolPref("places.history.enabled", aHistoryEnabled); } function getHistoryEnabled() { return Services.prefs.getBoolPref("places.history.enabled"); } function clearHistoryEnabled() { try { Services.prefs.clearUserPref("places.history.enabled"); } catch (ex) {} } /** * Returns a PRTime in the past usable to add expirable visits. * * param [optional] daysAgo * Expiration ignores any visit added in the last 7 days, so by default * this will be set to 7. * @note to be safe against DST issues we go back one day more. */ function getExpirablePRTime(daysAgo = 7) { let dateObj = new Date(); // Normalize to midnight dateObj.setHours(0); dateObj.setMinutes(0); dateObj.setSeconds(0); dateObj.setMilliseconds(0); dateObj = new Date(dateObj.getTime() - (daysAgo + 1) * 86400000); return dateObj.getTime() * 1000; }