nsHTMLValue value; if (NS_CONTENT_ATTR_HAS_VALUE == GetHTMLAttribute(nsHTMLAtoms::rows, value) && eHTMLUnit_String == value.GetUnit()) { nsAutoString rows; value.GetStringValue(rows); nsresult rv = ParseRowCol(rows, mNumRows, &mRowSpecs);
const nsAttrValue* value = GetParsedAttr(nsHTMLAtoms::rows); if (value && value->Type() == nsAttrValue::eString) { nsresult rv = ParseRowCol(value->GetStringValue(), mNumRows, &mRowSpecs);
nsHTMLFrameSetElement::GetRowSpec(PRInt32 *aNumValues,                                  const nsFramesetSpec** aSpecs){  NS_PRECONDITION(aNumValues, "Must have a pointer to an integer here!");  NS_PRECONDITION(aSpecs, "Must have a pointer to an array of nsFramesetSpecs");  *aNumValues = 0;  *aSpecs = nsnull;    if (!mRowSpecs) {    nsHTMLValue value;    if (NS_CONTENT_ATTR_HAS_VALUE == GetHTMLAttribute(nsHTMLAtoms::rows, value) &&        eHTMLUnit_String == value.GetUnit()) {      nsAutoString rows;      value.GetStringValue(rows);      nsresult rv = ParseRowCol(rows, mNumRows, &mRowSpecs);      NS_ENSURE_SUCCESS(rv, rv);    }    if (!mRowSpecs) {  // we may not have had an attr or had an empty attr      mRowSpecs = new nsFramesetSpec[1];      if (!mRowSpecs) {        mNumRows = 0;        return NS_ERROR_OUT_OF_MEMORY;      }      mNumRows = 1;      mRowSpecs[0].mUnit  = eFramesetUnit_Relative;      mRowSpecs[0].mValue = 1;    }  }  *aSpecs = mRowSpecs;  *aNumValues = mNumRows;  return NS_OK;}