From 12b8f218b5ebc72e400bd8777aa80c2a8536befb Mon Sep 17 00:00:00 2001 From: "benjamin%smedbergs.us" Date: Tue, 18 Jul 2006 14:27:39 +0000 Subject: [PATCH] Assorted fixes for lazy building of bookmark folder children, and hook it up to preliminary UI. Bug 314553, r=brettw. Original committer: bryner%brianryner.com Original revision: 1.3 Original date: 2005/11/17 22:00:52 --- .../components/places/src/nsNavBookmarks.cpp | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/toolkit/components/places/src/nsNavBookmarks.cpp b/toolkit/components/places/src/nsNavBookmarks.cpp index e8f098f7b940..10d2d33e4643 100644 --- a/toolkit/components/places/src/nsNavBookmarks.cpp +++ b/toolkit/components/places/src/nsNavBookmarks.cpp @@ -507,27 +507,18 @@ nsNavBookmarks::GetFolderTitle(PRInt64 aFolder, nsAString &aTitle) return mDBGetFolderInfo->GetString(kGetFolderInfoIndex_Title, aTitle); } -NS_IMETHODIMP -nsNavFolderResultNode::GetChildCount(PRInt32 *aChildCount) +nsresult +nsNavFolderResultNode::BuildChildren() { - if (!mQueriedChildren) { - nsresult rv = nsNavBookmarks::sInstance->FillFolderChildren(this); - NS_ENSURE_SUCCESS(rv, rv); + if (mBuiltChildren) { + return NS_OK; } - return nsNavHistoryResultNode::GetChildCount(aChildCount); -} + nsresult rv = nsNavBookmarks::sInstance->FillFolderChildren(this); + NS_ENSURE_SUCCESS(rv, rv); -NS_IMETHODIMP -nsNavFolderResultNode::GetChild(PRInt32 aIndex, - nsINavHistoryResultNode **aChild) -{ - if (!mQueriedChildren) { - nsresult rv = nsNavBookmarks::sInstance->FillFolderChildren(this); - NS_ENSURE_SUCCESS(rv, rv); - } - - return nsNavHistoryResultNode::GetChild(aIndex, aChild); + mBuiltChildren = PR_TRUE; + return NS_OK; } nsresult @@ -563,7 +554,8 @@ nsNavBookmarks::GetBookmarks(nsINavHistoryResult **aResult) // Fill the result with a single result node for the bookmarks root. nsCOMPtr topNode; - rv = ResultNodeForFolder(mRoot, EmptyString(), getter_AddRefs(topNode)); + rv = ResultNodeForFolder(mRoot, NS_LITERAL_STRING("Bookmarks"), + getter_AddRefs(topNode)); NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(result->GetTopLevel()->AppendObject(topNode), @@ -578,7 +570,6 @@ nsNavBookmarks::GetBookmarks(nsINavHistoryResult **aResult) nsresult nsNavBookmarks::FillFolderChildren(nsNavFolderResultNode *aNode) { - NS_ASSERTION(!aNode->mQueriedChildren, "children already queried"); NS_ASSERTION(aNode->mChildren.Count() == 0, "already have child nodes"); mozStorageStatementScoper scope(mDBGetChildren); @@ -605,7 +596,6 @@ nsNavBookmarks::FillFolderChildren(nsNavFolderResultNode *aNode) NS_ENSURE_TRUE(children->AppendObject(node), NS_ERROR_OUT_OF_MEMORY); } - aNode->mQueriedChildren = PR_TRUE; return transaction.Commit(); }