if ((eCSSToken_ID == tk->mType) ||
if ((PR_TRUE == mNavQuirkMode) || (eCSSToken_ID == tk->mType) ||
PRBool CSSParserImpl::ParseVariant(PRInt32& aErrorCode, nsCSSValue& aValue,                                   PRInt32 aVariantMask,                                   const PRInt32 aKeywordTable[]){  if (!GetToken(aErrorCode, PR_TRUE)) {    return PR_FALSE;  }  nsCSSToken* tk = &mToken;  if (((aVariantMask & (VARIANT_AHK | VARIANT_NORMAL | VARIANT_NONE)) != 0) &&      (eCSSToken_Ident == tk->mType)) {    nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(tk->mIdent);    if (eCSSKeyword_UNKNOWN < keyword) { // known keyword      if ((aVariantMask & VARIANT_AUTO) != 0) {        if (eCSSKeyword_auto == keyword) {          aValue.SetAutoValue();          return PR_TRUE;        }      }      if ((aVariantMask & VARIANT_INHERIT) != 0) {        if (eCSSKeyword_inherit == keyword) {          aValue.SetInheritValue();          return PR_TRUE;        }      }      if ((aVariantMask & VARIANT_NONE) != 0) {        if (eCSSKeyword_none == keyword) {          aValue.SetNoneValue();          return PR_TRUE;        }      }      if ((aVariantMask & VARIANT_NORMAL) != 0) {        if (eCSSKeyword_normal == keyword) {          aValue.SetNormalValue();          return PR_TRUE;        }      }      if ((aVariantMask & VARIANT_KEYWORD) != 0) {        PRInt32 index = SearchKeywordTable(keyword, aKeywordTable);        if (0 < index) {          aValue.SetIntValue(aKeywordTable[index], eCSSUnit_Enumerated);          return PR_TRUE;        }      }    }  }  if (((aVariantMask & (VARIANT_LENGTH | VARIANT_ANGLE | VARIANT_FREQUENCY | VARIANT_TIME)) != 0) &&       tk->IsDimension()) {    return TranslateDimension(aValue, aVariantMask, tk->mNumber, tk->mIdent);  }  if (((aVariantMask & VARIANT_PERCENT) != 0) &&      (eCSSToken_Percentage == tk->mType)) {    aValue.SetPercentValue(tk->mNumber);    return PR_TRUE;  }  if (((aVariantMask & VARIANT_NUMBER) != 0) &&      (eCSSToken_Number == tk->mType)) {    aValue.SetFloatValue(tk->mNumber, eCSSUnit_Number);    return PR_TRUE;  }  if (((aVariantMask & VARIANT_INTEGER) != 0) &&      (eCSSToken_Number == tk->mType) && tk->mIntegerValid) {    aValue.SetIntValue(tk->mInteger, eCSSUnit_Integer);    return PR_TRUE;  }  if (PR_TRUE == mNavQuirkMode) { // NONSTANDARD: Nav interprets unitless numbers as px    if (((aVariantMask & VARIANT_LENGTH) != 0) &&        (eCSSToken_Number == tk->mType)) {      aValue.SetFloatValue(tk->mNumber, eCSSUnit_Pixel);      return PR_TRUE;    }  }  if (((aVariantMask & VARIANT_URL) != 0) &&      (eCSSToken_Function == tk->mType) &&       tk->mIdent.EqualsIgnoreCase("url")) {    if (ParseURL(aErrorCode, aValue)) {      return PR_TRUE;    }    return PR_FALSE;  }  if ((aVariantMask & VARIANT_COLOR) != 0) {    if ((eCSSToken_ID == tk->mType) ||         (eCSSToken_Ident == tk->mType) ||        ((eCSSToken_Function == tk->mType) &&          (tk->mIdent.EqualsIgnoreCase("rgb")))) {      // Put token back so that parse color can get it      UngetToken();      if (ParseColor(aErrorCode, aValue)) {        return PR_TRUE;      }      return PR_FALSE;    }  }  if (((aVariantMask & VARIANT_STRING) != 0) &&       (eCSSToken_String == tk->mType)) {    nsAutoString  buffer;    buffer.Append(tk->mSymbol);    buffer.Append(tk->mIdent);    buffer.Append(tk->mSymbol);    aValue.SetStringValue(buffer, eCSSUnit_String);    return PR_TRUE;  }  if (((aVariantMask & VARIANT_IDENTIFIER) != 0) &&       (eCSSToken_Ident == tk->mType)) {    aValue.SetStringValue(tk->mIdent, eCSSUnit_String);    return PR_TRUE;  }  if (((aVariantMask & VARIANT_COUNTER) != 0) &&      (eCSSToken_Function == tk->mType) &&      (tk->mIdent.EqualsIgnoreCase("counter") ||        tk->mIdent.EqualsIgnoreCase("counters"))) {    if (ParseCounter(aErrorCode, aValue)) {      return PR_TRUE;    }    return PR_FALSE;  }  if (((aVariantMask & VARIANT_ATTR) != 0) &&      (eCSSToken_Function == tk->mType) &&      tk->mIdent.EqualsIgnoreCase("attr")) {        if (ParseAttr(aErrorCode, aValue)) {      return PR_TRUE;    }    return PR_FALSE;  }  UngetToken();  return PR_FALSE;}