mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 486008 - test_browserGlue_corrupt_nobackup.js is wrong, r=dietrich a=tests-only
This commit is contained in:
parent
d2012e9b33
commit
2d20882353
@ -187,6 +187,8 @@ const SMART_BOOKMARKS_ON_MENU = 2;
|
||||
* @return nsIFile object for the file.
|
||||
*/
|
||||
function create_bookmarks_html(aFilename) {
|
||||
if (!aFilename)
|
||||
do_throw("you must pass a filename to create_bookmarks_html function");
|
||||
remove_bookmarks_html();
|
||||
let bookmarksHTMLFile = gTestDir.clone();
|
||||
bookmarksHTMLFile.append(aFilename);
|
||||
@ -232,6 +234,8 @@ function check_bookmarks_html() {
|
||||
* @return nsIFile object for the file.
|
||||
*/
|
||||
function create_JSON_backup(aFilename) {
|
||||
if (!aFilename)
|
||||
do_throw("you must pass a filename to create_JSON_backup function");
|
||||
remove_all_JSON_backups();
|
||||
let bookmarksBackupDir = gProfD.clone();
|
||||
bookmarksBackupDir.append("bookmarkbackups");
|
||||
@ -273,3 +277,56 @@ function check_JSON_backup() {
|
||||
do_check_true(profileBookmarksJSONFile.exists());
|
||||
return profileBookmarksJSONFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dumps the rows of a table out to the console.
|
||||
*
|
||||
* @param aName
|
||||
* The name of the table or view to output.
|
||||
*/
|
||||
function dump_table(aName)
|
||||
{
|
||||
let db = Cc["@mozilla.org/browser/nav-history-service;1"].
|
||||
getService(Ci.nsPIPlacesDatabase).
|
||||
DBConnection;
|
||||
let stmt = db.createStatement("SELECT * FROM " + aName);
|
||||
|
||||
dump("\n*** Printing data from " + aName + ":\n");
|
||||
let count = 0;
|
||||
while (stmt.executeStep()) {
|
||||
let columns = stmt.numEntries;
|
||||
|
||||
if (count == 0) {
|
||||
// print the column names
|
||||
for (let i = 0; i < columns; i++)
|
||||
dump(stmt.getColumnName(i) + "\t");
|
||||
dump("\n");
|
||||
}
|
||||
|
||||
// print the row
|
||||
for (let i = 0; i < columns; i++) {
|
||||
switch (stmt.getTypeOfIndex(i)) {
|
||||
case Ci.mozIStorageValueArray.VALUE_TYPE_NULL:
|
||||
dump("NULL\t");
|
||||
break;
|
||||
case Ci.mozIStorageValueArray.VALUE_TYPE_INTEGER:
|
||||
dump(stmt.getInt64(i) + "\t");
|
||||
break;
|
||||
case Ci.mozIStorageValueArray.VALUE_TYPE_FLOAT:
|
||||
dump(stmt.getDouble(i) + "\t");
|
||||
break;
|
||||
case Ci.mozIStorageValueArray.VALUE_TYPE_TEXT:
|
||||
dump(stmt.getString(i) + "\t");
|
||||
break;
|
||||
}
|
||||
}
|
||||
dump("\n");
|
||||
|
||||
count++;
|
||||
}
|
||||
dump("*** There were a total of " + count + " rows of data.\n\n");
|
||||
|
||||
stmt.reset();
|
||||
stmt.finalize();
|
||||
stmt = null;
|
||||
}
|
||||
|
@ -41,14 +41,42 @@
|
||||
* is corrupt but a JSON backup is not available.
|
||||
*/
|
||||
|
||||
const NS_PLACES_INIT_COMPLETE_TOPIC = "places-init-complete";
|
||||
|
||||
// Create an observer for the Places notifications
|
||||
var os = Cc["@mozilla.org/observer-service;1"].
|
||||
getService(Ci.nsIObserverService);
|
||||
var observer = {
|
||||
observe: function thn_observe(aSubject, aTopic, aData) {
|
||||
if (aTopic == NS_PLACES_INIT_COMPLETE_TOPIC) {
|
||||
os.removeObserver(this, NS_PLACES_INIT_COMPLETE_TOPIC);
|
||||
var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
|
||||
getService(Ci.nsINavHistoryService);
|
||||
// Check the database was corrupt.
|
||||
// nsBrowserGlue uses databaseStatus to manage initialization.
|
||||
do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CORRUPT);
|
||||
|
||||
// Enqueue next part of the test.
|
||||
var tm = Cc["@mozilla.org/thread-manager;1"].
|
||||
getService(Ci.nsIThreadManager);
|
||||
tm.mainThread.dispatch({
|
||||
run: function() {
|
||||
continue_test();
|
||||
}
|
||||
}, Ci.nsIThread.DISPATCH_NORMAL);
|
||||
}
|
||||
}
|
||||
};
|
||||
os.addObserver(observer, NS_PLACES_INIT_COMPLETE_TOPIC, false);
|
||||
|
||||
function run_test() {
|
||||
// Create bookmarks.html in the profile.
|
||||
create_bookmarks_html();
|
||||
create_bookmarks_html("bookmarks.glue.html");
|
||||
// Remove JSON backup from profile.
|
||||
remove_all_JSON_backups();
|
||||
|
||||
// Remove current database file.
|
||||
let db = gProfD.clone();
|
||||
var db = gProfD.clone();
|
||||
db.append("places.sqlite");
|
||||
if (db.exists()) {
|
||||
db.remove(false);
|
||||
@ -64,30 +92,19 @@ function run_test() {
|
||||
Cc["@mozilla.org/browser/browserglue;1"].getService(Ci.nsIBrowserGlue);
|
||||
|
||||
// Initialize Places through the History Service.
|
||||
let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
|
||||
var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
|
||||
getService(Ci.nsINavHistoryService);
|
||||
// Check the database was corrupt.
|
||||
// nsBrowserGlue uses databaseStatus to manage initialization.
|
||||
do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CORRUPT);
|
||||
|
||||
// Restore could take some time, usually less than 1s.
|
||||
// We will poll later in continue_test to be sure restore has finished.
|
||||
// Wait for init-complete notification before going on.
|
||||
do_test_pending();
|
||||
do_timeout(1000, "continue_test();");
|
||||
}
|
||||
|
||||
function continue_test() {
|
||||
let bs = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
|
||||
var bs = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
|
||||
getService(Ci.nsINavBookmarksService);
|
||||
do_test_finished();
|
||||
if (bs.getIdForItemAt(bs.toolbarFolder, 0) == -1) {
|
||||
// Not enough time to complete restore, poll again later.
|
||||
do_timeout(1000, "continue_test();");
|
||||
return;
|
||||
}
|
||||
|
||||
// Check that default bookmarks have been restored.
|
||||
let itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR);
|
||||
var itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR);
|
||||
do_check_neq(itemId, -1);
|
||||
do_check_eq(bs.getItemTitle(itemId), "example");
|
||||
|
||||
do_test_finished();
|
||||
|
@ -41,6 +41,34 @@
|
||||
* corrupt, nor a JSON backup nor bookmarks.html are available.
|
||||
*/
|
||||
|
||||
const NS_PLACES_INIT_COMPLETE_TOPIC = "places-init-complete";
|
||||
|
||||
// Create an observer for the Places notifications
|
||||
var os = Cc["@mozilla.org/observer-service;1"].
|
||||
getService(Ci.nsIObserverService);
|
||||
var observer = {
|
||||
observe: function thn_observe(aSubject, aTopic, aData) {
|
||||
if (aTopic == NS_PLACES_INIT_COMPLETE_TOPIC) {
|
||||
os.removeObserver(this, NS_PLACES_INIT_COMPLETE_TOPIC);
|
||||
var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
|
||||
getService(Ci.nsINavHistoryService);
|
||||
// Check the database was corrupt.
|
||||
// nsBrowserGlue uses databaseStatus to manage initialization.
|
||||
do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CORRUPT);
|
||||
|
||||
// Enqueue next part of the test.
|
||||
var tm = Cc["@mozilla.org/thread-manager;1"].
|
||||
getService(Ci.nsIThreadManager);
|
||||
tm.mainThread.dispatch({
|
||||
run: function() {
|
||||
continue_test();
|
||||
}
|
||||
}, Ci.nsIThread.DISPATCH_NORMAL);
|
||||
}
|
||||
}
|
||||
};
|
||||
os.addObserver(observer, NS_PLACES_INIT_COMPLETE_TOPIC, false);
|
||||
|
||||
function run_test() {
|
||||
// Remove bookmarks.html from profile.
|
||||
remove_bookmarks_html();
|
||||
@ -48,7 +76,7 @@ function run_test() {
|
||||
remove_all_JSON_backups();
|
||||
|
||||
// Remove current database file.
|
||||
let db = gProfD.clone();
|
||||
var db = gProfD.clone();
|
||||
db.append("places.sqlite");
|
||||
if (db.exists()) {
|
||||
db.remove(false);
|
||||
@ -64,30 +92,19 @@ function run_test() {
|
||||
Cc["@mozilla.org/browser/browserglue;1"].getService(Ci.nsIBrowserGlue);
|
||||
|
||||
// Initialize Places through the History Service.
|
||||
let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
|
||||
var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
|
||||
getService(Ci.nsINavHistoryService);
|
||||
// Check the database was corrupt.
|
||||
// nsBrowserGlue uses databaseStatus to manage initialization.
|
||||
do_check_eq(hs.databaseStatus, hs.DATABASE_STATUS_CORRUPT);
|
||||
|
||||
// Restore could take some time, usually less than 1s.
|
||||
// We will poll later in continue_test to be sure restore has finished.
|
||||
// Wait for init-complete notification before going on.
|
||||
do_test_pending();
|
||||
do_timeout(1000, "continue_test();");
|
||||
}
|
||||
|
||||
function continue_test() {
|
||||
let bs = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
|
||||
var bs = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
|
||||
getService(Ci.nsINavBookmarksService);
|
||||
|
||||
if (bs.getIdForItemAt(bs.toolbarFolder, 1) == -1) {
|
||||
// Not enough time to complete restore, poll again later.
|
||||
do_timeout(1000, "continue_test();");
|
||||
return;
|
||||
}
|
||||
|
||||
// Check that default bookmarks have been restored.
|
||||
let itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR + 1);
|
||||
var itemId = bs.getIdForItemAt(bs.toolbarFolder, SMART_BOOKMARKS_ON_TOOLBAR + 1);
|
||||
do_check_true(itemId > 0);
|
||||
|
||||
do_test_finished();
|
||||
|
Loading…
Reference in New Issue
Block a user