Stronger implementation of isBookmarked() method.

git-svn-id: svn://10.0.0.236/trunk@63455 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rjc%netscape.com
2000-03-20 02:03:17 +00:00
parent 119f0123c6
commit 794459d7ab
2 changed files with 30 additions and 3 deletions

View File

@@ -2683,11 +2683,38 @@ nsBookmarksService::IsBookmarked(const char *aURI, PRBool *isBookmarkedFlag)
*isBookmarkedFlag = PR_FALSE;
nsresult rv;
PRBool flag = PR_FALSE;
nsCOMPtr<nsIRDFResource> 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<nsISimpleEnumerator> 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<nsISupports> isupports;
if (NS_FAILED(rv = enumerator->GetNext(getter_AddRefs(isupports))))
break;
nsCOMPtr<nsIRDFResource> 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);
}

View File

@@ -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);