aDeclaration->AddValue(aName, nsCSSValue(family));
aDeclaration->AppendValue(aName, nsCSSValue(family));
PRBool CSSParserImpl::ParseFontFamily(PRInt32* aErrorCode, nsICSSDeclaration* aDeclaration,                                      const char* aName){  nsCSSToken* tk = &mToken;  nsAutoString family;  PRBool firstOne = PR_TRUE;  for (;;) {    if (!GetToken(aErrorCode, PR_TRUE)) {      break;    }    if (eCSSToken_Ident == tk->mType) {      if (!firstOne) {        family.Append(PRUnichar(','));      }      family.Append(PRUnichar('"'));      family.Append(tk->mIdent);      for (;;) {        if (!GetToken(aErrorCode, PR_FALSE)) {          break;        }        if (eCSSToken_Ident == tk->mType) {          family.Append(tk->mIdent);        } else if (eCSSToken_WhiteSpace == tk->mType) {          // Lookahead one token and drop whitespace if we ending the          // font name.          if (!GetToken(aErrorCode, PR_TRUE)) {            break;          }          if (eCSSToken_Ident != tk->mType) {            UngetToken();            break;          }          UngetToken();          family.Append(PRUnichar(' '));        } else {          UngetToken();          break;        }      }      family.Append(PRUnichar('"'));      firstOne = PR_FALSE;    } else if (eCSSToken_String == tk->mType) {      if (!firstOne) {        family.Append(PRUnichar(','));      }      family.Append(PRUnichar('"'));      family.Append(tk->mIdent);      family.Append(PRUnichar('"'));      firstOne = PR_FALSE;    } else if (eCSSToken_Symbol == tk->mType) {      if (',' != tk->mSymbol) {        UngetToken();        break;      }    } else {      UngetToken();      break;    }  }  if (family.Length() == 0) {    return PR_FALSE;  }  aDeclaration->AddValue(aName, nsCSSValue(family));  return PR_TRUE;}