Fix for bug 199872. Bookmarks service doesn't appear to import IE favorites.

r=jag, sr=bryner
This commit is contained in:
varga%netscape.com 2003-04-18 12:34:20 +00:00
Родитель 9009d66c57
Коммит 4127d84311
2 изменённых файлов: 33 добавлений и 32 удалений

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

@ -1583,7 +1583,7 @@ nsBookmarksService::nsBookmarksService() :
mBookmarksAvailable(PR_FALSE),
mDirty(PR_FALSE)
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
,mIEFavoritesAvailable(PR_FALSE)
#endif
{ }
@ -3341,7 +3341,7 @@ nsBookmarksService::ImportSystemBookmarks(nsIRDFResource* aParentFolder)
{
gImportedSystemBookmarks = PR_TRUE;
#ifdef XP_WIN
#if defined(XP_WIN)
nsresult rv;
nsCOMPtr<nsIProperties> fileLocator(do_GetService("@mozilla.org/file/directory_service;1", &rv));
@ -3357,13 +3357,16 @@ nsBookmarksService::ImportSystemBookmarks(nsIRDFResource* aParentFolder)
// read Favorites folder if it exists on the machine.
if (favoritesDirectory)
return ParseFavoritesFolder(favoritesDirectory, aParentFolder);
#elif XP_MAC
nsSpecialSystemDirectory ieFavoritesFile(nsSpecialSystemDirectory::Mac_PreferencesDirectory);
ieFavoritesFile += "Explorer";
ieFavoritesFile += "Favorites.html";
#elif defined(XP_MAC) || defined(XP_MACOSX)
nsCOMPtr<nsIFile> ieFavoritesFile;
nsresult rv = NS_GetSpecialDirectory(NS_MAC_PREFS_DIR, getter_AddRefs(ieFavoritesFile));
NS_ENSURE_SUCCESS(rv, rv);
ieFavoritesFile->Append(NS_LITERAL_STRING("Explorer"));
ieFavoritesFile->Append(NS_LITERAL_STRING("Favorites.html"));
BookmarkParser parser;
parser.Init(&ieFavoritesFile, mInner);
parser.Init(ieFavoritesFile, mInner);
BeginUpdateBatch(this);
parser.Parse(aParentFolder, kNC_Bookmark);
EndUpdateBatch(this);
@ -3372,7 +3375,7 @@ nsBookmarksService::ImportSystemBookmarks(nsIRDFResource* aParentFolder)
return NS_OK;
}
#if defined(XP_WIN) || defined(XP_MAC)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
void
nsBookmarksService::HandleSystemBookmarks(nsIRDFNode* aNode)
{
@ -3389,7 +3392,7 @@ nsBookmarksService::HandleSystemBookmarks(nsIRDFNode* aNode)
ImportSystemBookmarks(kNC_SystemBookmarksStaticRoot);
}
}
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
// on the Mac, IE favorites are stored in an HTML file.
// Defer importing the contents of this file until necessary.
else if ((aNode == kNC_IEFavoritesRoot) && (mIEFavoritesAvailable == PR_FALSE))
@ -3743,7 +3746,7 @@ nsBookmarksService::HasAssertion(nsIRDFResource* source,
PRBool tv,
PRBool* hasAssertion)
{
#if defined(XP_WIN) || defined(XP_MAC)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
HandleSystemBookmarks(source);
#endif
@ -3777,7 +3780,7 @@ nsBookmarksService::RemoveObserver(nsIRDFObserver* aObserver)
NS_IMETHODIMP
nsBookmarksService::HasArcIn(nsIRDFNode *aNode, nsIRDFResource *aArc, PRBool *_retval)
{
#if defined(XP_WIN) || defined(XP_MAC)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
HandleSystemBookmarks(aNode);
#endif
@ -3787,7 +3790,7 @@ nsBookmarksService::HasArcIn(nsIRDFNode *aNode, nsIRDFResource *aArc, PRBool *_r
NS_IMETHODIMP
nsBookmarksService::HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc, PRBool *_retval)
{
#if defined(XP_WIN) || defined(XP_MAC)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
HandleSystemBookmarks(aSource);
#endif
@ -3798,7 +3801,7 @@ NS_IMETHODIMP
nsBookmarksService::ArcLabelsOut(nsIRDFResource* source,
nsISimpleEnumerator** labels)
{
#if defined(XP_WIN) || defined(XP_MAC)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
HandleSystemBookmarks(source);
#endif
@ -3808,7 +3811,7 @@ nsBookmarksService::ArcLabelsOut(nsIRDFResource* source,
NS_IMETHODIMP
nsBookmarksService::GetAllResources(nsISimpleEnumerator** aResult)
{
#if defined(XP_WIN) || defined(XP_MAC)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
HandleSystemBookmarks(kNC_SystemBookmarksStaticRoot);
#endif
@ -4468,7 +4471,7 @@ nsBookmarksService::GetBookmarksFile(nsIFile* *aResult)
}
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
nsresult
nsBookmarksService::ReadFavorites()
@ -4476,7 +4479,7 @@ nsBookmarksService::ReadFavorites()
mIEFavoritesAvailable = PR_TRUE;
nsresult rv;
#ifdef DEBUG
#ifdef DEBUG
PRTime now;
Microseconds((UnsignedWide *)&now);
printf("Start reading in IE Favorites.html\n");
@ -4490,10 +4493,9 @@ nsBookmarksService::ReadFavorites()
rv = NS_GetSpecialDirectory(NS_MAC_PREFS_DIR, getter_AddRefs(ieFavoritesFile));
NS_ENSURE_SUCCESS(rv, rv);
ieFavoritesFile->Append(NS_LITERAL_CSTRING("Explorer"));
ieFavoritesFile->Append(NS_LITERAL_CSTRING("Favorites.html"));
ieFavoritesFile->Append(NS_LITERAL_STRING("Explorer"));
ieFavoritesFile->Append(NS_LITERAL_STRING("Favorites.html"));
nsresult rv;
if (NS_SUCCEEDED(rv = gRDFC->MakeSeq(mInner, kNC_IEFavoritesRoot, nsnull)))
{
BookmarkParser parser;
@ -4597,9 +4599,9 @@ nsBookmarksService::LoadBookmarks()
if (prefSvc)
prefSvc->GetBranch("browser.bookmarks.", getter_AddRefs(bookmarksPrefs));
#ifdef DEBUG
#ifdef DEBUG
PRTime now;
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
Microseconds((UnsignedWide *)&now);
#else
now = PR_Now();
@ -4663,12 +4665,11 @@ nsBookmarksService::LoadBookmarks()
parser.Init(bookmarksFile, mInner);
if (useDynamicSystemBookmarks)
{
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
parser.SetIEFavoritesRoot(nsCString(kURINC_IEFavoritesRoot));
#elif defined(XP_WIN) || defined(XP_BEOS)
parser.SetIEFavoritesRoot(bookmarksURICString);
#endif
parser.ParserFoundIEFavoritesRoot(&foundIERoot);
}
@ -4707,7 +4708,7 @@ nsBookmarksService::LoadBookmarks()
// When the user opens this folder for the first time, system bookmarks are
// imported into this folder. A pref is used to keep track of whether or
// not to perform this operation.
#if defined(XP_MAC) || defined(XP_WIN)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
PRBool addedStaticRoot = PR_FALSE;
if (bookmarksPrefs)
bookmarksPrefs->GetBoolPref("added_static_root",
@ -4754,7 +4755,7 @@ nsBookmarksService::LoadBookmarks()
#if defined(XP_WIN)
rv = gRDF->GetResource(bookmarksURICString,
getter_AddRefs(systemFolderResource));
#elif defined(XP_MAC)
#elif defined(XP_MAC) || defined(XP_MACOSX)
rv = gRDF->GetResource(NS_LITERAL_CSTRING(kURINC_IEFavoritesRoot),
getter_AddRefs(systemFolderResource));
#endif
@ -4771,7 +4772,7 @@ nsBookmarksService::LoadBookmarks()
// by setting the pref.
if (useDynamicSystemBookmarks)
{
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
// if the IE Favorites root isn't somewhere in bookmarks.html, add it
if (!foundIERoot)
{
@ -4824,9 +4825,9 @@ nsBookmarksService::LoadBookmarks()
#endif
}
#ifdef DEBUG
#ifdef DEBUG
PRTime now2;
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
Microseconds((UnsignedWide *)&now2);
#else
now2 = PR_Now();

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

@ -61,7 +61,7 @@
class nsIOutputStream;
#ifdef DEBUG
#ifdef XP_MAC
#if defined(XP_MAC) || defined(XP_MACOSX)
#include <Timer.h>
#endif
#endif
@ -95,19 +95,19 @@ protected:
PRBool busySchedule;
// System Bookmark parsing
#ifdef XP_WIN
#if defined(XP_WIN)
// @param aDirectory - Favorites Folder to import from.
// @param aParentResource - Folder into which to place imported
// Favorites.
nsresult ParseFavoritesFolder(nsIFile* aDirectory,
nsIRDFResource* aParentResource);
#elif XP_MAC
#elif defined(XP_MAC) || defined(XP_MACOSX)
PRBool mIEFavoritesAvailable;
nsresult ReadFavorites();
#endif
#if defined(XP_WIN) || defined(XP_MAC)
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_MACOSX)
void HandleSystemBookmarks(nsIRDFNode* aNode);
#endif