nsresult nsXULContextMenuBuilder::CreateElement(nsIAtom* aTag, nsIDOMHTMLElement* aHTMLElement, nsIContent** aResult) { *aResult = nsnull; nsCOMPtr<nsINodeInfo> nodeInfo = mDocument->NodeInfoManager()->GetNodeInfo( aTag, nsnull, kNameSpaceID_XUL, nsIDOMNode::ELEMENT_NODE); NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY); nsresult rv = NS_NewElement(aResult, kNameSpaceID_XUL, nodeInfo.forget(), mozilla::dom::NOT_FROM_PARSER); if (NS_FAILED(rv)) { return rv; } nsAutoString generateditemid; if (aHTMLElement) { mElements.AppendObject(aHTMLElement); generateditemid.AppendInt(mCurrentGeneratedItemId++); } (*aResult)->SetAttr(kNameSpaceID_None, mGeneratedItemIdAttr, generateditemid, PR_FALSE); return NS_OK; }
nsresult nsVideoFrame::CreateAnonymousContent(nsTArray<nsIContent*>& aElements) { nsNodeInfoManager *nodeInfoManager = GetContent()->GetCurrentDoc()->NodeInfoManager(); nsCOMPtr<nsINodeInfo> nodeInfo; if (HasVideoElement()) { // Create an anonymous image element as a child to hold the poster // image. We may not have a poster image now, but one could be added // before we load, or on a subsequent load. nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::img, nsnull, kNameSpaceID_XHTML); NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY); mPosterImage = NS_NewHTMLImageElement(nodeInfo); NS_ENSURE_TRUE(mPosterImage, NS_ERROR_OUT_OF_MEMORY); // Push a null JSContext on the stack so that code that runs // within the below code doesn't think it's being called by // JS. See bug 604262. nsCxPusher pusher; pusher.PushNull(); // Set the nsImageLoadingContent::ImageState() to 0. This means that the // image will always report its state as 0, so it will never be reframed // to show frames for loading or the broken image icon. This is important, // as the image is native anonymous, and so can't be reframed (currently). nsCOMPtr<nsIImageLoadingContent> imgContent = do_QueryInterface(mPosterImage); NS_ENSURE_TRUE(imgContent, NS_ERROR_FAILURE); imgContent->ForceImageState(PR_TRUE, 0); nsresult res = UpdatePosterSource(PR_FALSE); NS_ENSURE_SUCCESS(res,res); if (!aElements.AppendElement(mPosterImage)) return NS_ERROR_OUT_OF_MEMORY; } // Set up "videocontrols" XUL element which will be XBL-bound to the // actual controls. nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::videocontrols, nsnull, kNameSpaceID_XUL); NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY); nsresult rv = NS_NewElement(getter_AddRefs(mVideoControls), kNameSpaceID_XUL, nodeInfo, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); if (!aElements.AppendElement(mVideoControls)) return NS_ERROR_OUT_OF_MEMORY; return NS_OK; }
nsresult txMozillaXMLOutput::startElementInternal(nsIAtom* aPrefix, nsIAtom* aLocalName, PRInt32 aNsID) { TX_ENSURE_CURRENTNODE; if (mBadChildLevel) { ++mBadChildLevel; PR_LOG(txLog::xslt, PR_LOG_DEBUG, ("startElement, mBadChildLevel = %d\n", mBadChildLevel)); return NS_OK; } nsresult rv = closePrevious(PR_TRUE); NS_ENSURE_SUCCESS(rv, rv); // Push and init state if (mTreeDepth == MAX_REFLOW_DEPTH) { // eCloseElement couldn't add the parent so we fail as well or we've // reached the limit of the depth of the tree that we allow. ++mBadChildLevel; PR_LOG(txLog::xslt, PR_LOG_DEBUG, ("startElement, mBadChildLevel = %d\n", mBadChildLevel)); return NS_OK; } ++mTreeDepth; rv = mTableStateStack.push(NS_INT32_TO_PTR(mTableState)); NS_ENSURE_SUCCESS(rv, rv); if (!mCurrentNodeStack.AppendObject(mCurrentNode)) { return NS_ERROR_OUT_OF_MEMORY; } mTableState = NORMAL; mOpenedElementIsHTML = PR_FALSE; // Create the element nsCOMPtr<nsINodeInfo> ni; ni = mNodeInfoManager->GetNodeInfo(aLocalName, aPrefix, aNsID); NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY); NS_NewElement(getter_AddRefs(mOpenedElement), aNsID, ni.forget(), PR_FALSE); // Set up the element and adjust state if (!mNoFixup) { if (aNsID == kNameSpaceID_XHTML) { mOpenedElementIsHTML = (mOutputFormat.mMethod == eHTMLOutput); rv = startHTMLElement(mOpenedElement, mOpenedElementIsHTML); NS_ENSURE_SUCCESS(rv, rv); } } if (mCreatingNewDocument) { // Handle all sorts of stylesheets nsCOMPtr<nsIStyleSheetLinkingElement> ssle = do_QueryInterface(mOpenedElement); if (ssle) { ssle->InitStyleLinkElement(PR_FALSE); ssle->SetEnableUpdates(PR_FALSE); } } return NS_OK; }