From 794459d7ab1437d4b389c8dcfe8e1da6f2b13515 Mon Sep 17 00:00:00 2001 From: "rjc%netscape.com" Date: Mon, 20 Mar 2000 02:03:17 +0000 Subject: [PATCH] Stronger implementation of isBookmarked() method. git-svn-id: svn://10.0.0.236/trunk@63455 18797224-902f-48f8-a5cc-f745e15eee43 --- .../bookmarks/src/nsBookmarksService.cpp | 29 ++++++++++++++++++- .../search/src/nsInternetSearchService.cpp | 4 +-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp index f6e57e9ed91..6026bb42c7c 100644 --- a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp +++ b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp @@ -2683,11 +2683,38 @@ nsBookmarksService::IsBookmarked(const char *aURI, PRBool *isBookmarkedFlag) *isBookmarkedFlag = PR_FALSE; nsresult rv; + PRBool flag = PR_FALSE; nsCOMPtr bookmark; + + // check if it has the proper type if (NS_SUCCEEDED(rv = gRDF->GetResource(aURI, getter_AddRefs(bookmark)))) { rv = mInner->HasAssertion(bookmark, kRDF_type, kNC_Bookmark, - PR_TRUE, isBookmarkedFlag); + PR_TRUE, &flag); + } + if (flag == PR_FALSE) return(NS_OK); + + // make sure it is referred to by an ordinal (i.e. is contained in a rdf seq) + nsCOMPtr enumerator; + if (NS_FAILED(rv = mInner->ArcLabelsIn(bookmark, getter_AddRefs(enumerator)))) + return(rv); + + PRBool more = PR_TRUE; + while(NS_SUCCEEDED(rv = enumerator->HasMoreElements(&more)) + && (more == PR_TRUE)) + { + nsCOMPtr isupports; + if (NS_FAILED(rv = enumerator->GetNext(getter_AddRefs(isupports)))) + break; + nsCOMPtr property = do_QueryInterface(isupports); + if (!property) continue; + + if (NS_FAILED(rv = gRDFC->IsOrdinalProperty(property, &flag))) continue; + if (flag == PR_TRUE) + { + *isBookmarkedFlag = PR_TRUE; + break; + } } return(rv); } diff --git a/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp b/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp index 2801a6f4dbe..7fa3717902a 100755 --- a/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp +++ b/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp @@ -1804,11 +1804,11 @@ InternetSearchDataSource::RememberLastSearchText(const PRUnichar *escapedSearchS if (NS_SUCCEEDED(rv = mInner->GetTarget(kNC_LastSearchRoot, kNC_LastText, PR_TRUE, getter_AddRefs(textNode))) && (rv != NS_RDF_NO_VALUE)) { - Change(kNC_LastSearchRoot, kNC_LastText, textNode, textLiteral); + mInner->Change(kNC_LastSearchRoot, kNC_LastText, textNode, textLiteral); } else { - Assert(kNC_LastSearchRoot, kNC_LastText, textLiteral, PR_TRUE); + mInner->Assert(kNC_LastSearchRoot, kNC_LastText, textLiteral, PR_TRUE); } } return(rv);