const txXPathNode* txExecutionState::retrieveDocument(const nsAString& aUri) { NS_ASSERTION(aUri.FindChar(PRUnichar('#')) == kNotFound, "Remove the fragment."); if (mDisableLoads) { return nsnull; } PR_LOG(txLog::xslt, PR_LOG_DEBUG, ("Retrieve Document %s", NS_LossyConvertUTF16toASCII(aUri).get())); // try to get already loaded document txLoadedDocumentEntry *entry = mLoadedDocuments.PutEntry(aUri); if (!entry) { return nsnull; } if (!entry->mDocument) { // open URI nsAutoString errMsg; // XXX we should get the loader from the actual node // triggering the load, but this will do for the time being nsresult rv; rv = txParseDocumentFromURI(aUri, *mLoadedDocuments.mSourceDocument, errMsg, getter_Transfers(entry->mDocument)); if (NS_FAILED(rv) || !entry->mDocument) { mLoadedDocuments.RawRemoveEntry(entry); receiveError(NS_LITERAL_STRING("Couldn't load document '") + aUri + NS_LITERAL_STRING("': ") + errMsg, rv); return nsnull; } } return entry->mDocument; }
const txXPathNode* txExecutionState::retrieveDocument(const nsAString& aUri) { NS_ASSERTION(!aUri.Contains(char16_t('#')), "Remove the fragment."); if (mDisableLoads) { return nullptr; } MOZ_LOG(txLog::xslt, LogLevel::Debug, ("Retrieve Document %s", NS_LossyConvertUTF16toASCII(aUri).get())); // try to get already loaded document txLoadedDocumentEntry *entry = mLoadedDocuments.PutEntry(aUri); if (!entry) { return nullptr; } if (!entry->mDocument && !entry->LoadingFailed()) { // open URI nsAutoString errMsg; // XXX we should get the loader from the actual node // triggering the load, but this will do for the time being entry->mLoadResult = txParseDocumentFromURI(aUri, *mLoadedDocuments.mSourceDocument, errMsg, getter_Transfers(entry->mDocument)); if (entry->LoadingFailed()) { receiveError(NS_LITERAL_STRING("Couldn't load document '") + aUri + NS_LITERAL_STRING("': ") + errMsg, entry->mLoadResult); } } return entry->mDocument; }