skippedContent = &aNode.GetSkippedContent();
nsCOMPtr<nsIDTD> dtd; mParser->GetDTD(getter_AddRefs(dtd)); NS_ENSURE_TRUE(dtd, NS_ERROR_FAILURE);  PRInt32 lineNo = 0;  dtd->CollectSkippedContent(eHTMLTag_textarea, skippedContent, lineNo);
HTMLContentSink::CreateContentObject(const nsIParserNode& aNode,                                     nsHTMLTag aNodeType,                                     nsIDOMHTMLFormElement* aForm,                                     nsIWebShell* aWebShell,                                     nsIHTMLContent** aResult){  nsresult rv = NS_OK;  // Find/create atom for the tag name  nsCOMPtr<nsINodeInfo> nodeInfo;  if (aNodeType == eHTMLTag_userdefined) {    nsAutoString tmp;    tmp.Append(aNode.GetText());    ToLowerCase(tmp);    rv = mNodeInfoManager->GetNodeInfo(tmp, nsnull, kNameSpaceID_None,                                       *getter_AddRefs(nodeInfo));  }  else {    nsCOMPtr<nsIDTD> dtd;    rv = mParser->GetDTD(getter_AddRefs(dtd));    if (NS_SUCCEEDED(rv)) {      nsDependentString tag(dtd->IntTagToStringTag(aNodeType));      rv = mNodeInfoManager->GetNodeInfo(tag, nsnull, kNameSpaceID_None,                                         *getter_AddRefs(nodeInfo));    }  }  if (NS_SUCCEEDED(rv)) {    // XXX if the parser treated the text in a textarea like a normal textnode    //     we wouldn't need to do this.    const nsAString* skippedContent = nsnull;    if (aNodeType == eHTMLTag_textarea) {      skippedContent = &aNode.GetSkippedContent();    }    // Make the content object    rv = MakeContentObject(aNodeType, nodeInfo, aForm, aWebShell,                           aResult, skippedContent, !!mInsideNoXXXTag,                           PR_TRUE);    PRInt32 id;    mDocument->GetAndIncrementContentID(&id);    (*aResult)->SetContentID(id);  }  return rv;}