From 9d9aedb78636b89477b262369a939762defe6bc3 Mon Sep 17 00:00:00 2001 From: "rjc%netscape.com" Date: Wed, 28 Apr 1999 01:51:36 +0000 Subject: [PATCH] If the "IE Favorites" root node already exists in bookmarks.html, don't re-add it. --- rdf/datasource/src/nsBookmarkDataSource.cpp | 31 +++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/rdf/datasource/src/nsBookmarkDataSource.cpp b/rdf/datasource/src/nsBookmarkDataSource.cpp index d1c44bf8ed62..c21449f9afa3 100644 --- a/rdf/datasource/src/nsBookmarkDataSource.cpp +++ b/rdf/datasource/src/nsBookmarkDataSource.cpp @@ -164,6 +164,7 @@ class BookmarkParser { private: nsInputFileStream *mStream; nsIRDFDataSource *mDataSource; + const char *mIEFavoritesRoot; PRBool mFoundIEFavoritesRoot; protected: @@ -190,6 +191,11 @@ public: nsresult AddBookmark(nsIRDFResource * aContainer, const char *url, const char *optionalTitle, PRInt32 addDate, PRInt32 lastVisitDate, PRInt32 lastModifiedDate, const char *shortcutURL, nsIRDFResource *nodeType); + nsresult SetIEFavoritesRoot(const char *IEFavoritesRootURL) + { + mIEFavoritesRoot = IEFavoritesRootURL; + return(NS_OK); + } nsresult ParserFoundIEFavoritesRoot(PRBool *foundIEFavoritesRoot) { *foundIEFavoritesRoot = mFoundIEFavoritesRoot; @@ -208,6 +214,7 @@ BookmarkParser::Init(nsInputFileStream *aStream, nsIRDFDataSource *aDataSource) { mStream = aStream; mDataSource = aDataSource; + mIEFavoritesRoot = nsnull; mFoundIEFavoritesRoot = PR_FALSE; return(NS_OK); } @@ -440,9 +447,9 @@ BookmarkParser::AddBookmark(nsIRDFResource * aContainer, const char *url, const } PRBool result = PR_FALSE; - if (NS_SUCCEEDED(rv = bookmark->EqualsResource(kNC_IEFavoritesRoot, &result))) + if (nsnull != mIEFavoritesRoot) { - if (result == PR_TRUE) + if (!PL_strcmp(url, mIEFavoritesRoot)) { mFoundIEFavoritesRoot = PR_TRUE; } @@ -1057,13 +1064,26 @@ BookmarkDataSourceImpl::ReadBookmarks(void) BookmarkParser parser; parser.Init(&strm, NS_STATIC_CAST(nsIRDFDataSource *, this)); + +#ifdef XP_MAC + parse.SetIEFavoritesRoot(kURINC_IEFavoritesRoot); +#endif + +#ifdef XP_WIN + nsCOMPtr ieFolder; + nsSpecialSystemDirectory ieFavoritesFile(nsSpecialSystemDirectory::Win_Favorites); + nsFileURL ieFavoritesURLSpec(ieFavoritesFile); + const char *ieFavoritesURL = ieFavoritesURLSpec.GetAsString(); + parser.SetIEFavoritesRoot(ieFavoritesURL); +#endif + parser.Parse(kNC_BookmarksRoot, kNC_Bookmark); PRBool foundIERoot = PR_FALSE; parser.ParserFoundIEFavoritesRoot(&foundIERoot); // look for and import any IE Favorites - nsAutoString ieTitle("Imported IE Favorites"); + nsAutoString ieTitle("Imported IE Favorites"); // XXX localization? #ifdef XP_MAC nsSpecialSystemDirectory ieFavoritesFile(nsSpecialSystemDirectory::Mac_PreferencesDirectory); @@ -1104,11 +1124,6 @@ BookmarkDataSourceImpl::ReadBookmarks(void) #endif #ifdef XP_WIN - nsCOMPtr ieFolder; - nsSpecialSystemDirectory ieFavoritesFile(nsSpecialSystemDirectory::Win_Favorites); - nsFileURL ieFavoritesURLSpec(ieFavoritesFile); - const char *ieFavoritesURL = ieFavoritesURLSpec.GetAsString(); - if (NS_SUCCEEDED(rv = gRDFService->GetResource(ieFavoritesURL, getter_AddRefs(ieFolder)))) { nsCOMPtr ieTitleLiteral;