eCSSUnit_Normal == value.GetUnit()) {
eCSSUnit_Normal == value.GetUnit() || (eCSSUnit_Enumerated == value.GetUnit() && NS_STYLE_CONTENT_ALT_CONTENT == value.GetIntValue())) {
PRBool CSSParserImpl::ParseContent(nsresult& aErrorCode){  // XXX Rewrite to make it look more like ParseCursor or ParseCounterData?  nsCSSValue  value;  if (ParseVariant(aErrorCode, value,                   VARIANT_CONTENT | VARIANT_INHERIT | VARIANT_NORMAL,                    nsCSSProps::kContentKTable)) {    nsCSSValueList* listHead = new nsCSSValueList();    nsCSSValueList* list = listHead;    if (nsnull == list) {      aErrorCode = NS_ERROR_OUT_OF_MEMORY;      return PR_FALSE;    }    list->mValue = value;    while (nsnull != list) {      if (ExpectEndProperty(aErrorCode, PR_TRUE)) {        mTempData.SetPropertyBit(eCSSProperty_content);        mTempData.mContent.mContent = listHead;        aErrorCode = NS_OK;        return PR_TRUE;      }      if (eCSSUnit_Inherit == value.GetUnit() ||          eCSSUnit_Initial == value.GetUnit() ||          eCSSUnit_Normal == value.GetUnit()) {        // This only matters the first time through the loop.        return PR_FALSE;      }      if (ParseVariant(aErrorCode, value, VARIANT_CONTENT, nsCSSProps::kContentKTable)) {        list->mNext = new nsCSSValueList();        list = list->mNext;        if (nsnull != list) {          list->mValue = value;        }        else {          aErrorCode = NS_ERROR_OUT_OF_MEMORY;        }      }      else {        break;      }    }    delete listHead;  }  return PR_FALSE;}