PRInt32 parsed;
PRBool CSSParserImpl::ParseProperty(PRInt32& aErrorCode,                                    nsICSSDeclaration* aDeclaration,                                    PRInt32 aPropID){  PRInt32 parsed;  switch (aPropID) {  case PROP_AZIMUTH:    return ParseAzimuth(aErrorCode, aDeclaration);  case PROP_BACKGROUND:    return ParseBackground(aErrorCode, aDeclaration);  case PROP_BACKGROUND_ATTACHMENT:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kBackgroundAttachmentKTable, parsed);  case PROP_BACKGROUND_COLOR:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HCK,                        nsCSSProps::kBackgroundColorKTable, parsed);  case PROP_BACKGROUND_FILTER:  // XXX    return ParseBackgroundFilter(aErrorCode, aDeclaration);  case PROP_BACKGROUND_IMAGE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HUO,                        nsnull, parsed);  case PROP_BACKGROUND_POSITION:    return ParseBackgroundPosition(aErrorCode, aDeclaration);  case PROP_BACKGROUND_REPEAT:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kBackgroundRepeatKTable, parsed);  case PROP_BORDER:    return ParseBorder(aErrorCode, aDeclaration);  case PROP_BORDER_COLLAPSE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kBorderCollapseKTable, parsed);  case PROP_BORDER_COLOR:    return ParseBorderColor(aErrorCode, aDeclaration);  case PROP_BORDER_SPACING:    return ParseBorderSpacing(aErrorCode, aDeclaration);  case PROP_BORDER_STYLE:    return ParseBorderStyle(aErrorCode, aDeclaration);  case PROP_BORDER_BOTTOM:    return ParseBorderSide(aErrorCode, aDeclaration, kBorderBottomIDs, CSS_SIDE_BOTTOM);  case PROP_BORDER_LEFT:    return ParseBorderSide(aErrorCode, aDeclaration, kBorderLeftIDs, CSS_SIDE_LEFT);  case PROP_BORDER_RIGHT:    return ParseBorderSide(aErrorCode, aDeclaration, kBorderRightIDs, CSS_SIDE_RIGHT);  case PROP_BORDER_TOP:    return ParseBorderSide(aErrorCode, aDeclaration, kBorderTopIDs, CSS_SIDE_TOP);  case PROP_BORDER_BOTTOM_COLOR:  case PROP_BORDER_LEFT_COLOR:  case PROP_BORDER_RIGHT_COLOR:  case PROP_BORDER_TOP_COLOR:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HCK,                         nsCSSProps::kBorderColorKTable, parsed);  case PROP_BORDER_BOTTOM_STYLE:  case PROP_BORDER_LEFT_STYLE:  case PROP_BORDER_RIGHT_STYLE:  case PROP_BORDER_TOP_STYLE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HOK,                        nsCSSProps::kBorderStyleKTable, parsed);  case PROP_BORDER_BOTTOM_WIDTH:  case PROP_BORDER_LEFT_WIDTH:  case PROP_BORDER_RIGHT_WIDTH:  case PROP_BORDER_TOP_WIDTH:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HKL,                        nsCSSProps::kBorderWidthKTable, parsed);  case PROP_BORDER_WIDTH:    return ParseBorderWidth(aErrorCode, aDeclaration);  case PROP_BOTTOM:  case PROP_TOP:  case PROP_LEFT:  case PROP_RIGHT:  case PROP_HEIGHT:  case PROP_WIDTH:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHLP, nsnull, parsed);  case PROP_CAPTION_SIDE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                         nsCSSProps::kCaptionSideKTable, parsed);  case PROP_CLEAR:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HOK,                        nsCSSProps::kClearKTable, parsed);  case PROP_CLIP:    return ParseClip(aErrorCode, aDeclaration);  case PROP_COLOR:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HC, nsnull, parsed);  case PROP_CONTENT:    return ParseContent(aErrorCode, aDeclaration);  case PROP_COUNTER_INCREMENT:  case PROP_COUNTER_RESET:    return ParseCounterData(aErrorCode, aDeclaration, aPropID);  case PROP_CUE:    return ParseCue(aErrorCode, aDeclaration);  case PROP_CUE_AFTER:  case PROP_CUE_BEFORE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HUO, nsnull, parsed);  case PROP_CURSOR:    return ParseCursor(aErrorCode, aDeclaration);  case PROP_DIRECTION:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kDirectionKTable, parsed);  case PROP_DISPLAY:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HOK,                        nsCSSProps::kDisplayKTable, parsed);  case PROP_ELEVATION:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK | VARIANT_ANGLE,                        nsCSSProps::kElevationKTable, parsed);  case PROP_EMPTY_CELLS:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kEmptyCellsKTable, parsed);  case PROP_FILTER:    return ParseForegroundFilter(aErrorCode, aDeclaration);  case PROP_FLOAT:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HOK,                        nsCSSProps::kFloatKTable, parsed);  case PROP_FONT:    return ParseFont(aErrorCode, aDeclaration);  case PROP_FONT_FAMILY:    return ParseFamily(aErrorCode, aDeclaration, aPropID);  case PROP_FONT_SIZE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HKLP,                        nsCSSProps::kFontSizeKTable, parsed);  case PROP_FONT_SIZE_ADJUST:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HON,                        nsnull, parsed);  case PROP_FONT_STRETCH:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HMK,                        nsCSSProps::kFontStretchKTable, parsed);  case PROP_FONT_STYLE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HMK,                        nsCSSProps::kFontStyleKTable, parsed);  case PROP_FONT_VARIANT:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HMK,                        nsCSSProps::kFontVariantKTable, parsed);  case PROP_FONT_WEIGHT:    return ParseVariant(aErrorCode, aDeclaration, PROP_FONT_WEIGHT, VARIANT_HMKI,                        nsCSSProps::kFontWeightKTable, parsed);  case PROP_LETTER_SPACING:  case PROP_WORD_SPACING:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HL | VARIANT_NORMAL, nsnull, parsed);  case PROP_LINE_HEIGHT:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HLPN | VARIANT_NORMAL,                        nsnull, parsed);  case PROP_LIST_STYLE:    return ParseListStyle(aErrorCode, aDeclaration);  case PROP_LIST_STYLE_IMAGE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HUO, nsnull, parsed);  case PROP_LIST_STYLE_POSITION:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kListStylePositionKTable, parsed);  case PROP_LIST_STYLE_TYPE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HOK,                        nsCSSProps::kListStyleKTable, parsed);  case PROP_MARGIN:    return ParseMargin(aErrorCode, aDeclaration);  case PROP_MARGIN_BOTTOM:  case PROP_MARGIN_LEFT:  case PROP_MARGIN_RIGHT:  case PROP_MARGIN_TOP:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHLP, nsnull, parsed);  case PROP_MARKER_OFFSET:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHL, nsnull, parsed);  case PROP_MARKS:    return ParseMarks(aErrorCode, aDeclaration);  case PROP_MAX_HEIGHT:  case PROP_MAX_WIDTH:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HLPO, nsnull, parsed);  case PROP_MIN_HEIGHT:  case PROP_MIN_WIDTH:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HLP, nsnull, parsed);  case PROP_OPACITY:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HPN, nsnull, parsed);  case PROP_ORPHANS:  case PROP_WIDOWS:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HI, nsnull, parsed);  case PROP_OUTLINE:    return ParseOutline(aErrorCode, aDeclaration);  case PROP_OUTLINE_COLOR:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HCK,                         nsCSSProps::kOutlineColorKTable, parsed);  case PROP_OUTLINE_STYLE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HOK,                         nsCSSProps::kBorderStyleKTable, parsed);  case PROP_OUTLINE_WIDTH:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HKL,                        nsCSSProps::kBorderWidthKTable, parsed);  case PROP_OVERFLOW:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHK,                        nsCSSProps::kOverflowKTable, parsed);  case PROP_PADDING:    return ParsePadding(aErrorCode, aDeclaration);  case PROP_PADDING_BOTTOM:  case PROP_PADDING_LEFT:  case PROP_PADDING_RIGHT:  case PROP_PADDING_TOP:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HLP, nsnull, parsed);  case PROP_PAGE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AUTO | VARIANT_IDENTIFIER,                         nsnull, parsed);  case PROP_PAGE_BREAK_AFTER:  case PROP_PAGE_BREAK_BEFORE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHK,                         nsCSSProps::kPageBreakKTable, parsed);  case PROP_PAGE_BREAK_INSIDE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHK,                         nsCSSProps::kPageBreakInsideKTable, parsed);  case PROP_PAUSE:    return ParsePause(aErrorCode, aDeclaration);  case PROP_PAUSE_AFTER:  case PROP_PAUSE_BEFORE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HTP, nsnull, parsed);  case PROP_PITCH:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HKF,                        nsCSSProps::kPitchKTable, parsed);  case PROP_PITCH_RANGE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HN, nsnull, parsed);  case PROP_PLAY_DURING:    return ParsePlayDuring(aErrorCode, aDeclaration);  case PROP_POSITION:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                         nsCSSProps::kPositionKTable, parsed);  case PROP_QUOTES:    return ParseQuotes(aErrorCode, aDeclaration);  case PROP_RICHNESS:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HN, nsnull, parsed);  case PROP_SIZE:    return ParseSize(aErrorCode, aDeclaration);  case PROP_SPEAK:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HMK | VARIANT_NONE,                        nsCSSProps::kSpeakKTable, parsed);  case PROP_SPEAK_HEADER:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kSpeakHeaderKTable, parsed);  case PROP_SPEAK_NUMERAL:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kSpeakNumeralKTable, parsed);  case PROP_SPEAK_PUNCTUATION:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                        nsCSSProps::kSpeakPunctuationKTable, parsed);  case PROP_SPEECH_RATE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HN | VARIANT_KEYWORD,                        nsCSSProps::kSpeechRateKTable, parsed);  case PROP_STRESS:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HN, nsnull, parsed);  case PROP_TABLE_LAYOUT:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHK,                        nsCSSProps::kTableLayoutKTable, parsed);  case PROP_TEXT_ALIGN:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK | VARIANT_STRING,                        nsCSSProps::kTextAlignKTable, parsed);  case PROP_TEXT_DECORATION:    return ParseTextDecoration(aErrorCode, aDeclaration);  case PROP_TEXT_INDENT:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HLP, nsnull, parsed);  case PROP_TEXT_SHADOW:    return ParseTextShadow(aErrorCode, aDeclaration);  case PROP_TEXT_TRANSFORM:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HOK,                        nsCSSProps::kTextTransformKTable, parsed);  case PROP_UNICODE_BIDI:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HMK,                        nsCSSProps::kUnicodeBidiKTable, parsed);  case PROP_VERTICAL_ALIGN:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HKLP,                        nsCSSProps::kVerticalAlignKTable, parsed);  case PROP_VISIBILITY:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HK,                         nsCSSProps::kVisibilityKTable, parsed);  case PROP_VOICE_FAMILY:    return ParseFamily(aErrorCode, aDeclaration, aPropID);  case PROP_VOLUME:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HPN | VARIANT_KEYWORD,                        nsCSSProps::kVolumeKTable, parsed);  case PROP_WHITE_SPACE:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_HMK,                        nsCSSProps::kWhitespaceKTable, parsed);  case PROP_Z_INDEX:    return ParseVariant(aErrorCode, aDeclaration, aPropID, VARIANT_AHI, nsnull, parsed);  }  return PR_FALSE;}