nsCSSProperty propID = nsCSSProps::LookupProperty(aProperty); return GetValue(propID, aValue);
PRBool  isImportant = PR_FALSE; GetValueIsImportant(aProperty, isImportant); if (PR_TRUE == isImportant) { return mImportant->GetValue(aProperty, aValue); }  aValue.Truncate(0);   switch (aProperty) { case eCSSProperty_background: if (AppendValueToString(eCSSProperty_background_color, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_background_image, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_background_repeat, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_background_attachment, aValue)) aValue.Append(PRUnichar(' ')); if (HAS_VALUE(mColor,mBackPositionX) && HAS_VALUE(mColor,mBackPositionY)) { AppendValueToString(eCSSProperty_background_x_position, aValue); aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_background_y_position, aValue); } break; case eCSSProperty_border: if (AppendValueToString(eCSSProperty_border_top_width, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_border_top_style, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_top_color, aValue); break; case eCSSProperty_border_spacing: if (AppendValueToString(eCSSProperty_border_x_spacing, aValue)) { aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_y_spacing, aValue); } break; case eCSSProperty_clip: if (HAS_RECT(mDisplay,mClip)) { aValue.Append(NS_LITERAL_STRING("rect(")); AppendValueToString(eCSSProperty_clip_top, aValue);     aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_clip_right, aValue);   aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_clip_bottom, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_clip_left, aValue); aValue.Append(PRUnichar(')')); } break; case eCSSProperty_cue: if (HAS_VALUE(mAural,mCueAfter) && HAS_VALUE(mAural,mCueBefore)) { AppendValueToString(eCSSProperty_cue_after, aValue); aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_cue_before, aValue); } break; case eCSSProperty_cursor: if ((nsnull != mColor) && (nsnull != mColor->mCursor)) { nsCSSValueList* cursor = mColor->mCursor; do { AppendValueToString(eCSSProperty_cursor, cursor->mValue, aValue); cursor = cursor->mNext; if (nsnull != cursor) { aValue.Append(PRUnichar(' ')); } } while (nsnull != cursor); } break; case eCSSProperty_font: if (HAS_VALUE(mFont,mSize)) { if (AppendValueToString(eCSSProperty_font_style, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_font_variant, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_font_weight, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_font_size, aValue); if (HAS_VALUE(mText,mLineHeight)) { aValue.Append(PRUnichar('/')); AppendValueToString(eCSSProperty_line_height, aValue); } aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_font_family, aValue); } break; case eCSSProperty_list_style: if (AppendValueToString(eCSSProperty_list_style_type, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_list_style_position, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_list_style_image, aValue); break; case eCSSProperty_margin: if (HAS_RECT(mMargin,mMargin)) { AppendValueToString(eCSSProperty_margin_top, aValue);     aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_margin_right, aValue);   aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_margin_bottom, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_margin_left, aValue); } break; case eCSSProperty_outline: if (AppendValueToString(eCSSProperty_outline_color, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_outline_style, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_outline_width, aValue); break; case eCSSProperty_padding: if (HAS_RECT(mMargin,mPadding)) { AppendValueToString(eCSSProperty_padding_top, aValue);    aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_padding_right, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_padding_bottom, aValue); aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_padding_left, aValue); } break; case eCSSProperty_pause: if (HAS_VALUE(mAural,mPauseAfter) && HAS_VALUE(mAural,mPauseBefore)) { AppendValueToString(eCSSProperty_pause_after, aValue); aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_pause_before, aValue); } break; case eCSSProperty_size: if (HAS_VALUE(mPage,mSizeWidth) && HAS_VALUE(mPage,mSizeHeight)) { AppendValueToString(eCSSProperty_size_width, aValue); aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_size_height, aValue); } break; case eCSSProperty_text_shadow: if ((nsnull != mText) && (nsnull != mText->mTextShadow)) { if (mText->mTextShadow->mXOffset.IsLengthUnit()) { nsCSSShadow*  shadow = mText->mTextShadow; while (nsnull != shadow) { if (AppendValueToString(eCSSProperty_text_shadow_color, shadow->mColor, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_text_shadow_x, shadow->mXOffset, aValue)) { aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_text_shadow_y, shadow->mYOffset, aValue); aValue.Append(PRUnichar(' ')); } if (AppendValueToString(eCSSProperty_text_shadow_radius, shadow->mRadius, aValue)) aValue.Append(PRUnichar(' ')); shadow = shadow->mNext; } } else { AppendValueToString(eCSSProperty_text_shadow_x, aValue); } } break; case eCSSProperty_background_position: if (HAS_VALUE(mColor,mBackPositionX) && HAS_VALUE(mColor,mBackPositionY)) { AppendValueToString(eCSSProperty_background_x_position, aValue); aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_background_y_position, aValue); } break; case eCSSProperty_border_top: if (AppendValueToString(eCSSProperty_border_top_width, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_border_top_style, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_top_color, aValue); break; case eCSSProperty_border_right: if (AppendValueToString(eCSSProperty_border_right_width, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_border_right_style, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_right_color, aValue); break; case eCSSProperty_border_bottom: if (AppendValueToString(eCSSProperty_border_bottom_width, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_border_bottom_style, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_bottom_color, aValue); break; case eCSSProperty_border_left: if (AppendValueToString(eCSSProperty_border_left_width, aValue)) aValue.Append(PRUnichar(' ')); if (AppendValueToString(eCSSProperty_border_left_style, aValue)) aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_left_color, aValue); break; case eCSSProperty_border_color: if (HAS_RECT(mMargin,mBorderColor)) { AppendValueToString(eCSSProperty_border_top_color, aValue);     aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_right_color, aValue);   aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_bottom_color, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_left_color, aValue); } break; case eCSSProperty_border_style: if (HAS_RECT(mMargin,mBorderStyle)) { AppendValueToString(eCSSProperty_border_top_style, aValue);     aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_right_style, aValue);   aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_bottom_style, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_left_style, aValue); } break; case eCSSProperty__moz_border_radius: if (HAS_RECT(mMargin,mBorderRadius)) { AppendValueToString(eCSSProperty__moz_border_radius_topLeft, aValue);     aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty__moz_border_radius_topRight, aValue);   aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty__moz_border_radius_bottomRight, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty__moz_border_radius_bottomLeft, aValue); } break; case eCSSProperty__moz_outline_radius: if (HAS_RECT(mMargin,mOutlineRadius)) { AppendValueToString(eCSSProperty__moz_outline_radius_topLeft, aValue);     aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty__moz_outline_radius_topRight, aValue);   aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty__moz_outline_radius_bottomRight, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty__moz_outline_radius_bottomLeft, aValue); } break; case eCSSProperty_border_width: if (HAS_RECT(mMargin,mBorderWidth)) { AppendValueToString(eCSSProperty_border_top_width, aValue);     aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_right_width, aValue);   aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_bottom_width, aValue);  aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_border_left_width, aValue); } break; case eCSSProperty_content: if ((nsnull != mContent) && (nsnull != mContent->mContent)) { nsCSSValueList* content = mContent->mContent; do { AppendValueToString(eCSSProperty_content, content->mValue, aValue); content = content->mNext; if (nsnull != content) { aValue.Append(PRUnichar(' ')); } } while (nsnull != content); } break; case eCSSProperty_counter_increment: if ((nsnull != mContent) && (nsnull != mContent->mCounterIncrement)) { nsCSSCounterData* data = mContent->mCounterIncrement; do { if (AppendValueToString(eCSSProperty_counter_increment, data->mCounter, aValue)) { if (HAS_VALUE(data, mValue)) { aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_counter_increment, data->mValue, aValue); } } data = data->mNext; if (nsnull != data) { aValue.Append(PRUnichar(' ')); } } while (nsnull != data); } break; case eCSSProperty_counter_reset: if ((nsnull != mContent) && (nsnull != mContent->mCounterReset)) { nsCSSCounterData* data = mContent->mCounterReset; do { if (AppendValueToString(eCSSProperty_counter_reset, data->mCounter, aValue)) { if (HAS_VALUE(data, mValue)) { aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_counter_reset, data->mValue, aValue); } } data = data->mNext; if (nsnull != data) { aValue.Append(PRUnichar(' ')); } } while (nsnull != data); } break; case eCSSProperty_play_during: if (HAS_VALUE(mAural, mPlayDuring)) { AppendValueToString(eCSSProperty_play_during, aValue); if (HAS_VALUE(mAural, mPlayDuringFlags)) { aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_play_during_flags, aValue); } } break; case eCSSProperty_quotes: if ((nsnull != mContent) && (nsnull != mContent->mQuotes)) { nsCSSQuotes* quotes = mContent->mQuotes; do { AppendValueToString(eCSSProperty_quotes_open, quotes->mOpen, aValue); aValue.Append(PRUnichar(' ')); AppendValueToString(eCSSProperty_quotes_close, quotes->mClose, aValue); quotes = quotes->mNext; if (nsnull != quotes) { aValue.Append(PRUnichar(' ')); } } while (nsnull != quotes); } break; case eCSSProperty_key_equivalent: if ((nsnull != mUserInterface) && (nsnull != mUserInterface->mKeyEquivalent)) { nsCSSValueList* keyEquiv = mUserInterface->mKeyEquivalent; do { AppendValueToString(eCSSProperty_key_equivalent, keyEquiv->mValue, aValue); keyEquiv = keyEquiv->mNext; if (nsnull != keyEquiv) { aValue.Append(PRUnichar(' ')); } } while (nsnull != keyEquiv); } break; default: AppendValueToString(aProperty, aValue); break; } return NS_OK;
CSSDeclarationImpl::GetValue(const nsString& aProperty, nsString& aValue){  nsCSSProperty propID = nsCSSProps::LookupProperty(aProperty);  return GetValue(propID, aValue);}