зеркало из https://github.com/mozilla/pjs.git
Stronger implementation of isBookmarked() method.
This commit is contained in:
Родитель
9e420a88b9
Коммит
c2907c238c
|
@ -2683,11 +2683,38 @@ nsBookmarksService::IsBookmarked(const char *aURI, PRBool *isBookmarkedFlag)
|
||||||
*isBookmarkedFlag = PR_FALSE;
|
*isBookmarkedFlag = PR_FALSE;
|
||||||
|
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
|
PRBool flag = PR_FALSE;
|
||||||
nsCOMPtr<nsIRDFResource> bookmark;
|
nsCOMPtr<nsIRDFResource> bookmark;
|
||||||
|
|
||||||
|
// check if it has the proper type
|
||||||
if (NS_SUCCEEDED(rv = gRDF->GetResource(aURI, getter_AddRefs(bookmark))))
|
if (NS_SUCCEEDED(rv = gRDF->GetResource(aURI, getter_AddRefs(bookmark))))
|
||||||
{
|
{
|
||||||
rv = mInner->HasAssertion(bookmark, kRDF_type, kNC_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);
|
return(rv);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1804,11 +1804,11 @@ InternetSearchDataSource::RememberLastSearchText(const PRUnichar *escapedSearchS
|
||||||
if (NS_SUCCEEDED(rv = mInner->GetTarget(kNC_LastSearchRoot, kNC_LastText, PR_TRUE,
|
if (NS_SUCCEEDED(rv = mInner->GetTarget(kNC_LastSearchRoot, kNC_LastText, PR_TRUE,
|
||||||
getter_AddRefs(textNode))) && (rv != NS_RDF_NO_VALUE))
|
getter_AddRefs(textNode))) && (rv != NS_RDF_NO_VALUE))
|
||||||
{
|
{
|
||||||
Change(kNC_LastSearchRoot, kNC_LastText, textNode, textLiteral);
|
mInner->Change(kNC_LastSearchRoot, kNC_LastText, textNode, textLiteral);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Assert(kNC_LastSearchRoot, kNC_LastText, textLiteral, PR_TRUE);
|
mInner->Assert(kNC_LastSearchRoot, kNC_LastText, textLiteral, PR_TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(rv);
|
return(rv);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче