template<> nsresult BodyExtractor<nsIDocument>::GetAsStream(nsIInputStream** aResult, uint64_t* aContentLength, nsACString& aContentTypeWithCharset, nsACString& aCharset) const { nsCOMPtr<nsIDOMDocument> domdoc(do_QueryInterface(mBody)); NS_ENSURE_STATE(domdoc); aCharset.AssignLiteral("UTF-8"); nsresult rv; nsCOMPtr<nsIStorageStream> storStream; rv = NS_NewStorageStream(4096, UINT32_MAX, getter_AddRefs(storStream)); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIOutputStream> output; rv = storStream->GetOutputStream(0, getter_AddRefs(output)); NS_ENSURE_SUCCESS(rv, rv); if (mBody->IsHTMLDocument()) { aContentTypeWithCharset.AssignLiteral("text/html;charset=UTF-8"); nsString serialized; if (!nsContentUtils::SerializeNodeToMarkup(mBody, true, serialized)) { return NS_ERROR_OUT_OF_MEMORY; } nsAutoCString utf8Serialized; if (!AppendUTF16toUTF8(serialized, utf8Serialized, fallible)) { return NS_ERROR_OUT_OF_MEMORY; } uint32_t written; rv = output->Write(utf8Serialized.get(), utf8Serialized.Length(), &written); NS_ENSURE_SUCCESS(rv, rv); MOZ_ASSERT(written == utf8Serialized.Length()); } else { aContentTypeWithCharset.AssignLiteral("application/xml;charset=UTF-8"); nsCOMPtr<nsIDOMSerializer> serializer = do_CreateInstance(NS_XMLSERIALIZER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); // Make sure to use the encoding we'll send rv = serializer->SerializeToStream(domdoc, output, aCharset); NS_ENSURE_SUCCESS(rv, rv); } output->Close(); uint32_t length; rv = storStream->GetLength(&length); NS_ENSURE_SUCCESS(rv, rv); *aContentLength = length; rv = storStream->NewInputStream(0, aResult); NS_ENSURE_SUCCESS(rv, rv); return NS_OK; }
DesignerModelComponent* SBOLDoc::loadFromFile(QFile& file, DesignerDocComponent* docComp) { QDomDocument domdoc("sboldoc"); if(!file.open(QFile::ReadWrite)) if(!file.open(QFile::ReadOnly)) return NULL; if(!domdoc.setContent(&file)) { file.close(); return NULL; } file.close(); DesignerModelComponent* newModel = DesignerModelMgr::createModel(tr("SyntheticBiologicalPartModel"), docComp); if(!newModel) return NULL; QDomElement domDocElem = domdoc.documentElement(); if(domDocElem.nodeName()!="rdf:RDF") { newModel->deleteLater(); return false; } SBOLParser parser; bool retValue = parser.parse(newModel, domdoc); if(retValue) { newModel->requestUpdate(DesignerModelComponent::updateByData | DesignerModelComponent::updateByStorage); } return retValue ? newModel : NULL; }
nsCOMPtr<nsIDOMNode> GetDOMNodeFromDocShell(nsIDocShell *aShell) { nsCOMPtr<nsIDOMNode> node; nsCOMPtr<nsIContentViewer> cv; aShell->GetContentViewer(getter_AddRefs(cv)); if (cv) { nsCOMPtr<nsIDocumentViewer> docv(do_QueryInterface(cv)); if (docv) { nsCOMPtr<nsIDocument> doc; docv->GetDocument(getter_AddRefs(doc)); if (doc) { nsCOMPtr<nsIDOMDocument> domdoc(do_QueryInterface(doc)); if (domdoc) { nsCOMPtr<nsIDOMElement> element; domdoc->GetDocumentElement(getter_AddRefs(element)); if (element) node = do_QueryInterface(element); } } } } return node; }
nsIDOMDocument* inLayoutUtils::GetSubDocumentFor(nsIDOMNode* aNode) { nsCOMPtr<nsIContent> content = do_QueryInterface(aNode); if (content) { nsCOMPtr<nsIDocument> doc = content->GetDocument(); if (doc) { nsCOMPtr<nsIDOMDocument> domdoc(do_QueryInterface(doc->GetSubDocumentFor(content))); return domdoc; } } return nsnull; }
DesignerDocComponent::extentValue SBOLDoc::checkIfFileFitsDocumentType(QFile& file) { QDomDocument domdoc("sboldoc"); if(!file.open(QFile::ReadOnly)) return NOTACCEPTABLE; if(!domdoc.setContent(&file)) { file.close(); return NOTACCEPTABLE; } file.close(); QDomElement domDocElem = domdoc.documentElement(); if(domDocElem.nodeName()==tr("rdf:RDF")) { if(domDocElem.attribute("xmlns").endsWith("/sbol.owl#")) return EXACTLY; return INSUFFICIENTLY; } return NOTACCEPTABLE; }