prevent bookmarks dataloss when a user goes from Firefox 2, Firefox 3 beta, Firefox 2 and then back to Firefox 3.

r=dietrich, a=schrep/beltzner
This commit is contained in:
sspitzer%mozilla.org 2007-11-09 20:11:13 +00:00
Родитель fa766a4617
Коммит 0c912cb122
3 изменённых файлов: 47 добавлений и 18 удалений

Просмотреть файл

@ -293,6 +293,10 @@ pref("browser.tabs.selectOwnerOnClose", true);
pref("browser.bookmarks.sort.direction", "descending");
pref("browser.bookmarks.sort.resource", "rdf:http://home.netscape.com/NC-rdf#Name");
// By default, do not overwrite bookmarks.html in the profile directory
// See bug #381216 for details
pref("browser.bookmarks.overwrite", false);
// Scripts & Windows prefs
pref("dom.disable_open_during_load", true);
#ifdef DEBUG

Просмотреть файл

@ -359,17 +359,20 @@ BrowserGlue.prototype = {
prefBranch.setBoolPref("browser.places.importBookmarksHTML", false);
}
// backup pre-places bookmarks.html
// XXXtodo remove this before betas, after import/export is solid
var profDir = dirService.get("ProfD", Ci.nsILocalFile);
var bookmarksBackup = profDir.clone();
bookmarksBackup.append("bookmarks.preplaces.html");
if (!bookmarksBackup.exists()) {
// save old bookmarks.html file as bookmarks.preplaces.html
try {
bookmarksFile.copyTo(profDir, "bookmarks.preplaces.html");
} catch(ex) {
dump("nsBrowserGlue::_initPlaces(): copy of bookmarks.html to bookmarks.preplaces.html failed: " + ex + "\n");
// only back up pre-places bookmarks.html if we plan on overwriting it
if (prefBranch.getBoolPref("browser.bookmarks.overwrite")) {
// backup pre-places bookmarks.html
// XXXtodo remove this before betas, after import/export is solid
var profDir = dirService.get("ProfD", Ci.nsILocalFile);
var bookmarksBackup = profDir.clone();
bookmarksBackup.append("bookmarks.preplaces.html");
if (!bookmarksBackup.exists()) {
// save old bookmarks.html file as bookmarks.preplaces.html
try {
bookmarksFile.copyTo(profDir, "bookmarks.preplaces.html");
} catch(ex) {
dump("nsBrowserGlue::_initPlaces(): copy of bookmarks.html to bookmarks.preplaces.html failed: " + ex + "\n");
}
}
}
}

Просмотреть файл

@ -2475,17 +2475,33 @@ nsPlacesImportExportService::ExportHTMLToFile(nsILocalFile* aBookmarksFile)
return rv;
}
#define BROWSER_BOOKMARKS_OVERWRITE_PREF "browser.bookmarks.overwrite"
#define BROWSER_BOOKMARKS_MAX_BACKUPS_PREF "browser.bookmarks.max_backups"
#define POSTPLACES_BOOKMARKS_FILE "bookmarks.postplaces.html"
NS_IMETHODIMP
nsPlacesImportExportService::BackupBookmarksFile()
{
nsresult rv = EnsureServiceState();
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
// get bookmarks file
nsCOMPtr<nsIFile> bookmarksFileDir;
rv = NS_GetSpecialDirectory(NS_APP_BOOKMARKS_50_FILE,
getter_AddRefs(bookmarksFileDir));
PRBool overwriteBookmarks;
rv = prefs->GetBoolPref(BROWSER_BOOKMARKS_OVERWRITE_PREF, &overwriteBookmarks);
NS_ENSURE_SUCCESS(rv, rv);
if (!overwriteBookmarks) {
rv = bookmarksFileDir->SetLeafName(NS_LITERAL_STRING(POSTPLACES_BOOKMARKS_FILE));
NS_ENSURE_SUCCESS(rv, rv);
}
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsILocalFile> bookmarksFile(do_QueryInterface(bookmarksFileDir));
@ -2503,14 +2519,8 @@ nsPlacesImportExportService::BackupBookmarksFile()
NS_ENSURE_SUCCESS(rv, rv);
// archive if needed
nsCOMPtr<nsIPrefService> prefServ(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrefBranch> bookmarksPrefs;
rv = prefServ->GetBranch("browser.bookmarks.", getter_AddRefs(bookmarksPrefs));
NS_ENSURE_SUCCESS(rv, rv);
PRInt32 numberOfBackups;
rv = bookmarksPrefs->GetIntPref("max_backups", &numberOfBackups);
rv = prefs->GetIntPref(BROWSER_BOOKMARKS_MAX_BACKUPS_PREF, &numberOfBackups);
if (NS_FAILED(rv))
numberOfBackups = 5;
@ -2633,6 +2643,18 @@ nsPlacesImportExportService::ArchiveBookmarksFile(PRInt32 numberOfBackups,
rv = NS_GetSpecialDirectory(NS_APP_BOOKMARKS_50_FILE,
getter_AddRefs(bookmarksFile));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
PRBool overwriteBookmarks;
rv = prefs->GetBoolPref(BROWSER_BOOKMARKS_OVERWRITE_PREF, &overwriteBookmarks);
NS_ENSURE_SUCCESS(rv, rv);
if (!overwriteBookmarks) {
rv = bookmarksFile->SetLeafName(NS_LITERAL_STRING(POSTPLACES_BOOKMARKS_FILE));
NS_ENSURE_SUCCESS(rv, rv);
}
rv = bookmarksFile->CopyTo(bookmarksBackupDir, backupFilenameString);
// at least dump something out in case this fails in a debug build