if (aChangeHint < nsCSSProps::kHintTable[eCSSProperty_text_shadow]) { aChangeHint = nsCSSProps::kHintTable[eCSSProperty_text_shadow]; }
NS_UpdateHint(aChangeHint, nsCSSProps::kHintTable[eCSSProperty_text_shadow]);
PRBool CSSParserImpl::ParseTextShadow(PRInt32& aErrorCode,                                      nsCSSDeclaration* aDeclaration,                                       PRInt32& aChangeHint){  nsCSSValue  value;  if (ParseVariant(aErrorCode, value, VARIANT_HC | VARIANT_LENGTH | VARIANT_NONE, nsnull)) {    nsCSSUnit unit = value.GetUnit();    if ((eCSSUnit_Color == unit) || (eCSSUnit_String == unit) || value.IsLengthUnit()) {      nsCSSShadow*  shadowHead = new nsCSSShadow();      nsCSSShadow*  shadow = shadowHead;      if (nsnull == shadow) {        aErrorCode = NS_ERROR_OUT_OF_MEMORY;        return PR_FALSE;      }      while (nsnull != shadow) {        PRBool  haveColor = PR_FALSE;        if (value.IsLengthUnit()) {          shadow->mXOffset = value;        }        else {          haveColor = PR_TRUE;          shadow->mColor = value;          if (ParseVariant(aErrorCode, value, VARIANT_LENGTH, nsnull)) {            shadow->mXOffset = value;          }          else {            break;          }        }        if (ParseVariant(aErrorCode, value, VARIANT_LENGTH, nsnull)) {          shadow->mYOffset = value;        }        else {          break;        }        if (ParseVariant(aErrorCode, value, VARIANT_LENGTH, nsnull)) {          shadow->mRadius = value;        } // optional        if (PR_FALSE == haveColor) {          if (ParseVariant(aErrorCode, value, VARIANT_COLOR, nsnull)) {            shadow->mColor = value;          }        }        if (ExpectSymbol(aErrorCode, ',', PR_TRUE)) {          shadow->mNext = new nsCSSShadow();          shadow = shadow->mNext;          if (nsnull == shadow) {            aErrorCode = NS_ERROR_OUT_OF_MEMORY;            break;          }          if (PR_FALSE == ParseVariant(aErrorCode, value, VARIANT_COLOR | VARIANT_LENGTH, nsnull)) {            break;          }        }        else {          if (ExpectEndProperty(aErrorCode, PR_TRUE)) {            if (aChangeHint < nsCSSProps::kHintTable[eCSSProperty_text_shadow]) {              aChangeHint = nsCSSProps::kHintTable[eCSSProperty_text_shadow];            }            aErrorCode = aDeclaration->AppendStructValue(eCSSProperty_text_shadow, shadowHead);            return NS_SUCCEEDED(aErrorCode);          }          break;        }      }      delete shadowHead;      return PR_FALSE;    }    // value is inherit or none    if (ExpectEndProperty(aErrorCode, PR_TRUE)) {      AppendValue(aDeclaration, eCSSProperty_text_shadow_x, value, aChangeHint);      return PR_TRUE;    }  }  return PR_FALSE;}