mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 21:58:41 +02:00
240 lines
7.7 KiB
JavaScript
240 lines
7.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests that nsBrowserGlue is correctly interpreting the preferences settable
|
|
* by the user or by other components.
|
|
*/
|
|
|
|
const PREF_IMPORT_BOOKMARKS_HTML = "browser.places.importBookmarksHTML";
|
|
const PREF_RESTORE_DEFAULT_BOOKMARKS = "browser.bookmarks.restore_default_bookmarks";
|
|
const PREF_SMART_BOOKMARKS_VERSION = "browser.places.smartBookmarksVersion";
|
|
const PREF_AUTO_EXPORT_HTML = "browser.bookmarks.autoExportHTML";
|
|
|
|
const TOPIC_BROWSERGLUE_TEST = "browser-glue-test";
|
|
const TOPICDATA_FORCE_PLACES_INIT = "force-places-init";
|
|
|
|
var bg = Cc["@mozilla.org/browser/browserglue;1"].
|
|
getService(Ci.nsIObserver);
|
|
|
|
function run_test() {
|
|
// Create our bookmarks.html from bookmarks.glue.html.
|
|
create_bookmarks_html("bookmarks.glue.html");
|
|
|
|
remove_all_JSON_backups();
|
|
|
|
// Create our JSON backup from bookmarks.glue.json.
|
|
create_JSON_backup("bookmarks.glue.json");
|
|
|
|
run_next_test();
|
|
}
|
|
|
|
do_register_cleanup(function () {
|
|
remove_bookmarks_html();
|
|
remove_all_JSON_backups();
|
|
|
|
return PlacesUtils.bookmarks.eraseEverything();
|
|
});
|
|
|
|
function simulatePlacesInit() {
|
|
do_print("Simulate Places init");
|
|
// Force nsBrowserGlue::_initPlaces().
|
|
bg.observe(null, TOPIC_BROWSERGLUE_TEST, TOPICDATA_FORCE_PLACES_INIT);
|
|
return promiseTopicObserved("places-browser-init-complete");
|
|
}
|
|
|
|
add_task(function* test_checkPreferences() {
|
|
// Initialize Places through the History Service and check that a new
|
|
// database has been created.
|
|
Assert.equal(PlacesUtils.history.databaseStatus,
|
|
PlacesUtils.history.DATABASE_STATUS_CREATE);
|
|
|
|
// Wait for Places init notification.
|
|
yield promiseTopicObserved("places-browser-init-complete");
|
|
|
|
// Ensure preferences status.
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_AUTO_EXPORT_HTML));
|
|
|
|
Assert.throws(() => Services.prefs.getBoolPref(PREF_IMPORT_BOOKMARKS_HTML));
|
|
Assert.throws(() => Services.prefs.getBoolPref(PREF_RESTORE_DEFAULT_BOOKMARKS));
|
|
});
|
|
|
|
add_task(function* test_import() {
|
|
do_print("Import from bookmarks.html if importBookmarksHTML is true.");
|
|
|
|
yield PlacesUtils.bookmarks.eraseEverything();
|
|
|
|
// Sanity check: we should not have any bookmark on the toolbar.
|
|
Assert.ok(!(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
})));
|
|
|
|
// Set preferences.
|
|
Services.prefs.setBoolPref(PREF_IMPORT_BOOKMARKS_HTML, true);
|
|
|
|
yield simulatePlacesInit();
|
|
|
|
// Check bookmarks.html has been imported, and a smart bookmark has been
|
|
// created.
|
|
let bm = yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: SMART_BOOKMARKS_ON_TOOLBAR
|
|
});
|
|
Assert.equal(bm.title, "example");
|
|
|
|
// Check preferences have been reverted.
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_IMPORT_BOOKMARKS_HTML));
|
|
});
|
|
|
|
add_task(function* test_import_noSmartBookmarks() {
|
|
do_print("import from bookmarks.html, but don't create smart bookmarks " +
|
|
"if they are disabled");
|
|
|
|
yield PlacesUtils.bookmarks.eraseEverything();
|
|
|
|
// Sanity check: we should not have any bookmark on the toolbar.
|
|
Assert.ok(!(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
})));
|
|
|
|
// Set preferences.
|
|
Services.prefs.setIntPref(PREF_SMART_BOOKMARKS_VERSION, -1);
|
|
Services.prefs.setBoolPref(PREF_IMPORT_BOOKMARKS_HTML, true);
|
|
|
|
yield simulatePlacesInit();
|
|
|
|
// Check bookmarks.html has been imported, but smart bookmarks have not
|
|
// been created.
|
|
let bm = yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
});
|
|
Assert.equal(bm.title, "example");
|
|
|
|
// Check preferences have been reverted.
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_IMPORT_BOOKMARKS_HTML));
|
|
});
|
|
|
|
add_task(function* test_import_autoExport_updatedSmartBookmarks() {
|
|
do_print("Import from bookmarks.html, but don't create smart bookmarks " +
|
|
"if autoExportHTML is true and they are at latest version");
|
|
|
|
yield PlacesUtils.bookmarks.eraseEverything();
|
|
|
|
// Sanity check: we should not have any bookmark on the toolbar.
|
|
Assert.ok(!(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
})));
|
|
|
|
// Set preferences.
|
|
Services.prefs.setIntPref(PREF_SMART_BOOKMARKS_VERSION, 999);
|
|
Services.prefs.setBoolPref(PREF_AUTO_EXPORT_HTML, true);
|
|
Services.prefs.setBoolPref(PREF_IMPORT_BOOKMARKS_HTML, true);
|
|
|
|
yield simulatePlacesInit();
|
|
|
|
// Check bookmarks.html has been imported, but smart bookmarks have not
|
|
// been created.
|
|
let bm = yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
});
|
|
Assert.equal(bm.title, "example");
|
|
|
|
// Check preferences have been reverted.
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_IMPORT_BOOKMARKS_HTML));
|
|
|
|
Services.prefs.setBoolPref(PREF_AUTO_EXPORT_HTML, false);
|
|
});
|
|
|
|
add_task(function* test_import_autoExport_oldSmartBookmarks() {
|
|
do_print("Import from bookmarks.html, and create smart bookmarks if " +
|
|
"autoExportHTML is true and they are not at latest version.");
|
|
|
|
yield PlacesUtils.bookmarks.eraseEverything();
|
|
|
|
// Sanity check: we should not have any bookmark on the toolbar.
|
|
Assert.ok(!(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
})));
|
|
|
|
// Set preferences.
|
|
Services.prefs.setIntPref(PREF_SMART_BOOKMARKS_VERSION, 0);
|
|
Services.prefs.setBoolPref(PREF_AUTO_EXPORT_HTML, true);
|
|
Services.prefs.setBoolPref(PREF_IMPORT_BOOKMARKS_HTML, true);
|
|
|
|
yield simulatePlacesInit();
|
|
|
|
// Check bookmarks.html has been imported, but smart bookmarks have not
|
|
// been created.
|
|
let bm = yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: SMART_BOOKMARKS_ON_TOOLBAR
|
|
});
|
|
Assert.equal(bm.title, "example");
|
|
|
|
// Check preferences have been reverted.
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_IMPORT_BOOKMARKS_HTML));
|
|
|
|
Services.prefs.setBoolPref(PREF_AUTO_EXPORT_HTML, false);
|
|
});
|
|
|
|
add_task(function* test_restore() {
|
|
do_print("restore from default bookmarks.html if " +
|
|
"restore_default_bookmarks is true.");
|
|
|
|
yield PlacesUtils.bookmarks.eraseEverything();
|
|
|
|
// Sanity check: we should not have any bookmark on the toolbar.
|
|
Assert.ok(!(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
})));
|
|
|
|
// Set preferences.
|
|
Services.prefs.setBoolPref(PREF_RESTORE_DEFAULT_BOOKMARKS, true);
|
|
|
|
yield simulatePlacesInit();
|
|
|
|
// Check bookmarks.html has been restored.
|
|
Assert.ok(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: SMART_BOOKMARKS_ON_TOOLBAR
|
|
}));
|
|
|
|
// Check preferences have been reverted.
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_RESTORE_DEFAULT_BOOKMARKS));
|
|
});
|
|
|
|
add_task(function* test_restore_import() {
|
|
do_print("setting both importBookmarksHTML and " +
|
|
"restore_default_bookmarks should restore defaults.");
|
|
|
|
yield PlacesUtils.bookmarks.eraseEverything();
|
|
|
|
// Sanity check: we should not have any bookmark on the toolbar.
|
|
Assert.ok(!(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: 0
|
|
})));
|
|
|
|
// Set preferences.
|
|
Services.prefs.setBoolPref(PREF_IMPORT_BOOKMARKS_HTML, true);
|
|
Services.prefs.setBoolPref(PREF_RESTORE_DEFAULT_BOOKMARKS, true);
|
|
|
|
yield simulatePlacesInit();
|
|
|
|
// Check bookmarks.html has been restored.
|
|
Assert.ok(yield PlacesUtils.bookmarks.fetch({
|
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
|
index: SMART_BOOKMARKS_ON_TOOLBAR
|
|
}));
|
|
|
|
// Check preferences have been reverted.
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_RESTORE_DEFAULT_BOOKMARKS));
|
|
Assert.ok(!Services.prefs.getBoolPref(PREF_IMPORT_BOOKMARKS_HTML));
|
|
});
|