rv = rdf_BlockingParse(mURL, lsnr);
NS_TIMELINE_START_TIMER("rdf blocking parse"); rv = BlockingParse(mURL, this); NS_TIMELINE_STOP_TIMER("rdf blocking parse"); NS_TIMELINE_MARK_TIMER("rdf blocking parse");  mListener = nsnull;  if (NS_FAILED(rv)) return rv;
RDFXMLDataSourceImpl::Refresh(PRBool aBlocking){    nsresult rv;    nsCOMPtr<nsINameSpaceManager> nsmgr;    rv = nsComponentManager::CreateInstance(kNameSpaceManagerCID,                                            nsnull,                                            kINameSpaceManagerIID,                                            getter_AddRefs(nsmgr));    if (NS_FAILED(rv)) return rv;    nsCOMPtr<nsIRDFContentSink> sink;    rv = nsComponentManager::CreateInstance(kRDFContentSinkCID,                                            nsnull,                                            nsIRDFContentSink::GetIID(),                                            getter_AddRefs(sink));    if (NS_FAILED(rv)) return rv;    rv = sink->Init(mURL, nsmgr);    if (NS_FAILED(rv)) return rv;    // We set the content sink's data source directly to our in-memory    // store. This allows the initial content to be generated "directly".    rv = sink->SetDataSource(this);    if (NS_FAILED(rv)) return rv;    nsCOMPtr<nsIParser> parser;    rv = nsComponentManager::CreateInstance(kParserCID,                                            nsnull,                                            kIParserIID,                                            getter_AddRefs(parser));    nsAutoString utf8("UTF-8");    parser->SetDocumentCharset(utf8, kCharsetFromDocTypeDefault);    parser->SetContentSink(sink);    // XXX this should eventually be kRDFDTDCID (oh boy, that's a    // pretty identifier). The RDF DTD will be a much more    // RDF-resilient parser.    nsCOMPtr<nsIDTD> dtd;    rv = nsComponentManager::CreateInstance(kWellFormedDTDCID,                                            nsnull,                                            kIDTDIID,                                            getter_AddRefs(dtd));    if (NS_FAILED(rv)) return rv;    parser->RegisterDTD(dtd);    nsCOMPtr<nsIStreamListener> lsnr;    rv = parser->QueryInterface(kIStreamListenerIID, getter_AddRefs(lsnr));    if (NS_FAILED(rv)) return rv;    rv = parser->Parse(mURL);    if (NS_FAILED(rv)) return rv;    if (aBlocking) {        rv = rdf_BlockingParse(mURL, lsnr);    }    else {#ifdef NECKO        rv = NS_OpenURI(lsnr, nsnull, mURL);#else        rv = NS_OpenURL(mURL, lsnr);#endif    }    return rv;}