зеркало из https://github.com/mozilla/pjs.git
fix for bug #381216:
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:
Родитель
fa766a4617
Коммит
0c912cb122
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче