if ((source == kNC_SearchRoot) && (property == kNC_Child) && (mEngineListBuilt == PR_FALSE))
rv = mInner->GetTargets(source, property, tv, targets);   if (((source == kNC_SearchEngineRoot) || isSearchURI(source)) && (property == kNC_Child) && (mEngineListBuilt == PR_FALSE))
InternetSearchDataSource::GetTargets(nsIRDFResource *source,                           nsIRDFResource *property,                           PRBool tv,                           nsISimpleEnumerator **targets /* out */){	NS_PRECONDITION(source != nsnull, "null ptr");	if (! source)		return NS_ERROR_NULL_POINTER;	NS_PRECONDITION(property != nsnull, "null ptr");	if (! property)		return NS_ERROR_NULL_POINTER;	NS_PRECONDITION(targets != nsnull, "null ptr");	if (! targets)		return NS_ERROR_NULL_POINTER;	nsresult rv = NS_RDF_NO_VALUE;	// we only have positive assertions in the internet search data source.	if (! tv)		return(rv);	if (mInner)	{			if ((source == kNC_SearchRoot) && (property == kNC_Child) && (mEngineListBuilt == PR_FALSE))		{			// get available search engines			nsFileSpec			nativeDir;			if (NS_SUCCEEDED(rv = GetSearchFolder(nativeDir)))			{				rv = GetSearchEngineList(nativeDir);				mEngineListBuilt = PR_TRUE;			}		}		rv = mInner->GetTargets(source, property, tv, targets);	}	if (isSearchURI(source))	{		if (property == kNC_Child)		{			PRBool		doNetworkRequest = PR_TRUE;			if (NS_SUCCEEDED(rv) && (targets))			{				// check and see if we already have data for the search in question;				// if we do, BeginSearchRequest() won't bother doing the search again,				// otherwise it will kickstart it				PRBool		hasResults = PR_FALSE;				if (NS_SUCCEEDED((*targets)->HasMoreElements(&hasResults)) && (hasResults == PR_TRUE))				{					doNetworkRequest = PR_FALSE;				}			}			BeginSearchRequest(source, doNetworkRequest);		}	}	return(rv);}