NS_IMETHODIMP nsContentDLF::CreateInstanceForDocument(nsISupports* aContainer, nsIDocument* aDocument, const char *aCommand, nsIContentViewer** aDocViewerResult) { nsresult rv = NS_ERROR_FAILURE; EnsureUAStyleSheet(); do { nsCOMPtr<nsIDocumentViewer> docv; rv = NS_NewDocumentViewer(getter_AddRefs(docv)); if (NS_FAILED(rv)) break; docv->SetUAStyleSheet(static_cast<nsIStyleSheet*>(gUAStyleSheet)); // Bind the document to the Content Viewer nsIContentViewer* cv = static_cast<nsIContentViewer*>(docv.get()); rv = cv->LoadStart(aDocument); NS_ADDREF(*aDocViewerResult = cv); } while (PR_FALSE); return rv; }
nsresult nsContentDLF::CreateDocument(const char* aCommand, nsIChannel* aChannel, nsILoadGroup* aLoadGroup, nsISupports* aContainer, const nsCID& aDocumentCID, nsIStreamListener** aDocListener, nsIContentViewer** aDocViewer) { NS_TIME_FUNCTION; nsresult rv = NS_ERROR_FAILURE; nsCOMPtr<nsIURI> aURL; rv = aChannel->GetURI(getter_AddRefs(aURL)); if (NS_FAILED(rv)) return rv; #ifdef NOISY_CREATE_DOC if (nsnull != aURL) { nsAutoString tmp; aURL->ToString(tmp); fputs(NS_LossyConvertUTF16toASCII(tmp).get(), stdout); printf(": creating document\n"); } #endif nsCOMPtr<nsIDocument> doc; nsCOMPtr<nsIDocumentViewer> docv; do { // Create the document doc = do_CreateInstance(aDocumentCID, &rv); if (NS_FAILED(rv)) break; // Create the document viewer XXX: could reuse document viewer here! rv = NS_NewDocumentViewer(getter_AddRefs(docv)); if (NS_FAILED(rv)) break; doc->SetContainer(aContainer); // Initialize the document to begin loading the data. An // nsIStreamListener connected to the parser is returned in // aDocListener. rv = doc->StartDocumentLoad(aCommand, aChannel, aLoadGroup, aContainer, aDocListener, PR_TRUE); if (NS_FAILED(rv)) break; // Bind the document to the Content Viewer rv = docv->LoadStart(doc); *aDocViewer = docv; NS_IF_ADDREF(*aDocViewer); } while (PR_FALSE); return rv; }
nsresult nsContentDLF::CreateXULDocument(const char* aCommand, nsIChannel* aChannel, nsILoadGroup* aLoadGroup, const char* aContentType, nsISupports* aContainer, nsISupports* aExtraInfo, nsIStreamListener** aDocListener, nsIContentViewer** aDocViewer) { nsresult rv; nsCOMPtr<nsIDocument> doc = do_CreateInstance(kXULDocumentCID, &rv); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIDocumentViewer> docv; rv = NS_NewDocumentViewer(getter_AddRefs(docv)); if (NS_FAILED(rv)) return rv; // Load the UA style sheet if we haven't already done that docv->SetUAStyleSheet(gUAStyleSheet); nsCOMPtr<nsIURI> aURL; rv = aChannel->GetURI(getter_AddRefs(aURL)); if (NS_FAILED(rv)) return rv; /* * Initialize the document to begin loading the data... * * An nsIStreamListener connected to the parser is returned in * aDocListener. */ doc->SetContainer(aContainer); rv = doc->StartDocumentLoad(aCommand, aChannel, aLoadGroup, aContainer, aDocListener, PR_TRUE); if (NS_SUCCEEDED(rv)) { /* * Bind the document to the Content Viewer... */ rv = docv->LoadStart(doc); *aDocViewer = docv; NS_IF_ADDREF(*aDocViewer); } return rv; }