mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
171 lines
4.9 KiB
JavaScript
171 lines
4.9 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//// Constants
|
||
|
|
||
|
const TOPIC_AUTOCOMPLETE_FEEDBACK_INCOMING = "autocomplete-will-enter-text";
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//// Helpers
|
||
|
|
||
|
/**
|
||
|
* Ensures that we have no data in the tables created by ANALYZE.
|
||
|
*/
|
||
|
function clearAnalyzeData()
|
||
|
{
|
||
|
let db = DBConn();
|
||
|
if (!db.tableExists("sqlite_stat1")) {
|
||
|
return;
|
||
|
}
|
||
|
db.executeSimpleSQL("DELETE FROM sqlite_stat1");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Checks that we ran ANALYZE on the specified table.
|
||
|
*
|
||
|
* @param aTableName
|
||
|
* The table to check if ANALYZE was ran.
|
||
|
* @param aRan
|
||
|
* True if it was expected to run, false otherwise
|
||
|
*/
|
||
|
function do_check_analyze_ran(aTableName, aRan)
|
||
|
{
|
||
|
let db = DBConn();
|
||
|
do_check_true(db.tableExists("sqlite_stat1"));
|
||
|
let stmt = db.createStatement("SELECT idx FROM sqlite_stat1 WHERE tbl = :table");
|
||
|
stmt.params.table = aTableName;
|
||
|
try {
|
||
|
if (aRan) {
|
||
|
do_check_true(stmt.executeStep());
|
||
|
do_check_neq(stmt.row.idx, null);
|
||
|
}
|
||
|
else {
|
||
|
do_check_false(stmt.executeStep());
|
||
|
}
|
||
|
}
|
||
|
finally {
|
||
|
stmt.finalize();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//// Tests
|
||
|
|
||
|
function test_timed()
|
||
|
{
|
||
|
clearAnalyzeData();
|
||
|
|
||
|
let observer = function(aSubject, aTopic, aData) {
|
||
|
Services.obs.removeObserver(observer,
|
||
|
PlacesUtils.TOPIC_EXPIRATION_FINISHED);
|
||
|
setInterval(3600);
|
||
|
do_check_analyze_ran("moz_places", false);
|
||
|
do_check_analyze_ran("moz_bookmarks", false);
|
||
|
do_check_analyze_ran("moz_historyvisits", false);
|
||
|
do_check_analyze_ran("moz_inputhistory", true);
|
||
|
run_next_test();
|
||
|
};
|
||
|
|
||
|
Services.obs.addObserver(observer, PlacesUtils.TOPIC_EXPIRATION_FINISHED,
|
||
|
false);
|
||
|
// Set a low interval and wait for the timed expiration to start.
|
||
|
setInterval(3);
|
||
|
}
|
||
|
|
||
|
function test_debug()
|
||
|
{
|
||
|
clearAnalyzeData();
|
||
|
|
||
|
let observer = function(aSubject, aTopic, aData) {
|
||
|
Services.obs.removeObserver(observer,
|
||
|
PlacesUtils.TOPIC_EXPIRATION_FINISHED);
|
||
|
do_check_analyze_ran("moz_places", true);
|
||
|
do_check_analyze_ran("moz_bookmarks", true);
|
||
|
do_check_analyze_ran("moz_historyvisits", true);
|
||
|
do_check_analyze_ran("moz_inputhistory", true);
|
||
|
run_next_test();
|
||
|
};
|
||
|
|
||
|
Services.obs.addObserver(observer, PlacesUtils.TOPIC_EXPIRATION_FINISHED,
|
||
|
false);
|
||
|
force_expiration_step(1);
|
||
|
}
|
||
|
|
||
|
function test_clear_history()
|
||
|
{
|
||
|
clearAnalyzeData();
|
||
|
|
||
|
let observer = function(aSubject, aTopic, aData) {
|
||
|
Services.obs.removeObserver(observer,
|
||
|
PlacesUtils.TOPIC_EXPIRATION_FINISHED);
|
||
|
do_check_analyze_ran("moz_places", true);
|
||
|
do_check_analyze_ran("moz_bookmarks", false);
|
||
|
do_check_analyze_ran("moz_historyvisits", true);
|
||
|
do_check_analyze_ran("moz_inputhistory", true);
|
||
|
run_next_test();
|
||
|
};
|
||
|
|
||
|
Services.obs.addObserver(observer, PlacesUtils.TOPIC_EXPIRATION_FINISHED,
|
||
|
false);
|
||
|
let listener = Cc["@mozilla.org/places/expiration;1"].
|
||
|
getService(Ci.nsINavHistoryObserver);
|
||
|
listener.onClearHistory();
|
||
|
}
|
||
|
|
||
|
function test_shutdown()
|
||
|
{
|
||
|
clearAnalyzeData();
|
||
|
|
||
|
let observer = function(aSubject, aTopic, aData) {
|
||
|
Services.obs.removeObserver(observer,
|
||
|
PlacesUtils.TOPIC_EXPIRATION_FINISHED);
|
||
|
do_check_analyze_ran("moz_places", false);
|
||
|
do_check_analyze_ran("moz_bookmarks", false);
|
||
|
do_check_analyze_ran("moz_historyvisits", false);
|
||
|
do_check_analyze_ran("moz_inputhistory", false);
|
||
|
run_next_test();
|
||
|
};
|
||
|
|
||
|
Services.obs.addObserver(observer, PlacesUtils.TOPIC_EXPIRATION_FINISHED,
|
||
|
false);
|
||
|
shutdownExpiration();
|
||
|
}
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//// Test Harness
|
||
|
|
||
|
let gTests = [
|
||
|
test_timed,
|
||
|
test_debug,
|
||
|
test_clear_history,
|
||
|
test_shutdown,
|
||
|
];
|
||
|
|
||
|
function run_test()
|
||
|
{
|
||
|
const TEST_URI = NetUtil.newURI("http://mozilla.org/");
|
||
|
const TEST_TITLE = "This is a test";
|
||
|
let bs = PlacesUtils.bookmarks;
|
||
|
bs.insertBookmark(PlacesUtils.unfiledBookmarksFolderId, TEST_URI,
|
||
|
bs.DEFAULT_INDEX, TEST_TITLE);
|
||
|
let hs = PlacesUtils.history;
|
||
|
hs.addVisit(TEST_URI, Date.now() * 1000, null, hs.TRANSITION_TYPED, false, 0);
|
||
|
|
||
|
let thing = {
|
||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteInput,
|
||
|
Ci.nsIAutoCompletePopup,
|
||
|
Ci.nsIAutoCompleteController]),
|
||
|
get popup() { return thing; },
|
||
|
get controller() { return thing; },
|
||
|
popupOpen: true,
|
||
|
selectedIndex: 0,
|
||
|
getValueAt: function() { return TEST_URI.spec; },
|
||
|
searchString: TEST_TITLE,
|
||
|
};
|
||
|
Services.obs.notifyObservers(thing, TOPIC_AUTOCOMPLETE_FEEDBACK_INCOMING,
|
||
|
null);
|
||
|
|
||
|
run_next_test();
|
||
|
}
|