Replace mechanism for restricting the properties that apply to :first-line and :first-letter. (Bug 469227) r+sr=bzbarsky

This commit is contained in:
L. David Baron 2008-12-12 10:59:03 -08:00
Родитель 88ed930e10
Коммит b7d77a6d7c
17 изменённых файлов: 483 добавлений и 562 удалений

Просмотреть файл

@ -0,0 +1,5 @@
<!DOCTYPE HTML>
<title>Testcase for issue in bug 469227 comment 8</title>
<span></span>
<p></p>
<span style="margin-left: 30px; color: green">Hello</span>

Просмотреть файл

@ -0,0 +1,12 @@
<!DOCTYPE HTML>
<title>Testcase for issue in bug 469227 comment 8</title>
<style type="text/css">
span, p::first-letter { color: green; }
span.foo, p.foo::first-letter { position: relative; }
span.foo, p.foo::first-letter { left: 30px; }
</style>
<span></span>
<p class="foo"></p>
<span class="foo">Hello</span>

Просмотреть файл

@ -44,3 +44,4 @@ random-if(MOZ_WIDGET_TOOLKIT=="gtk2") == 329069-1.html 329069-1-ref.html # failu
== 399941-8.html 399941-8-ref.html
== 399941-9.html 399941-9-ref.html
== 441418-1.html 441418-1-ref.html
== 469227-1.html 469227-1-ref.html

Просмотреть файл

@ -0,0 +1,4 @@
<!DOCTYPE HTML>
<title>Testcase for issue in bug 469227 comment 9</title>
<span style="border: medium solid green">Hello</span>
<p>Hello</p>

Просмотреть файл

@ -0,0 +1,9 @@
<!DOCTYPE HTML>
<title>Testcase for issue in bug 469227 comment 9</title>
<style type="text/css">
span, p::first-line { border: medium solid green; }
</style>
<span>Hello</span>
<p>Hello</p>

Просмотреть файл

@ -0,0 +1,4 @@
<!DOCTYPE HTML>
<title>Testcase for issue in bug 469227 comment 9</title>
<p>Hello</p>
<span style="border: medium solid green">Hello</span>

Просмотреть файл

@ -0,0 +1,9 @@
<!DOCTYPE HTML>
<title>Testcase for issue in bug 469227 comment 9</title>
<style type="text/css">
span, p::first-line { border: medium solid green; }
</style>
<p>Hello</p>
<span>Hello</span>

Просмотреть файл

@ -0,0 +1,3 @@
<!DOCTYPE HTML>
<title>border should not apply to :first-line (bug 469227)</title>
<p>Hello</p>

Просмотреть файл

@ -0,0 +1,21 @@
<!DOCTYPE HTML>
<title>border should not apply to :first-line (bug 469227)</title>
<style type="text/css">
p::first-line {
/* specify all the properties in nsStyleBorder */
-moz-border-start: medium solid red ! important;
-moz-border-end: medium solid red ! important;
border: medium solid red ! important;
-moz-border-image: none ! important;
-moz-float-edge: content-box ! important;
-moz-border-radius: 0 ! important;
-moz-border-top-colors: none ! important;
-moz-border-right-colors: none ! important;
-moz-border-bottom-colors: none ! important;
-moz-border-left-colors: none ! important;
-moz-box-shadow: none ! important;
}
</style>
<p>Hello</p>

Просмотреть файл

@ -24,3 +24,7 @@ fails == out-of-flow-1d.html out-of-flow-1-ref.html # bug 396645
== stress-9.html stress-9-ref.html # assertion/crash test
== stress-10.html about:blank # crash test
fails == stress-11.xhtml stress-11-ref.xhtml # crash test, fails due to bug 402933
== border-not-apply.html border-not-apply-ref.html
== 469227-2.html 469227-2-ref.html
== 469227-3.html 469227-3-ref.html

Просмотреть файл

@ -260,248 +260,269 @@
// support them correctly the old constants need to be renamed and
// new ones should be entered.
// CSS2.1 section 5.12.1 says that the properties that apply to
// :first-line are: font properties, color properties, background
// properties, 'word-spacing', 'letter-spacing', 'text-decoration',
// 'vertical-align', 'text-transform', and 'line-height'.
//
// We also allow 'text-shadow', which was listed in CSS2 (where the
// property existed).
// CSS2.1 section 5.12.2 says that the properties that apply to
// :first-letter are: font properties, 'text-decoration',
// 'text-transform', 'letter-spacing', 'word-spacing' (when
// appropriate), 'line-height', 'float', 'vertical-align' (only if
// 'float' is 'none'), margin properties, padding properties, border
// properties, 'color', and background properties. We also allow
// 'text-shadow' (see above) and '-moz-box-shadow' (which is like the
// border properties).
// We include '-moz-background-inline-policy' (css3-background's
// 'background-break') in both as a background property, although this
// is somewhat questionable.
CSS_PROP_DISPLAY(-moz-appearance, appearance, MozAppearance, 0, Display, mAppearance, eCSSType_Value, kAppearanceKTable)
CSS_PROP_SHORTHAND(-moz-border-radius, _moz_border_radius, MozBorderRadius, 0)
CSS_PROP_BORDER(-moz-border-radius-topleft, _moz_border_radius_topLeft, MozBorderRadiusTopleft, 0, Margin, mBorderRadius.mTopLeft, eCSSType_ValuePair, nsnull)
CSS_PROP_BORDER(-moz-border-radius-topright, _moz_border_radius_topRight, MozBorderRadiusTopright, 0, Margin, mBorderRadius.mTopRight, eCSSType_ValuePair, nsnull)
CSS_PROP_BORDER(-moz-border-radius-bottomright, _moz_border_radius_bottomRight, MozBorderRadiusBottomright, 0, Margin, mBorderRadius.mBottomRight, eCSSType_ValuePair, nsnull)
CSS_PROP_BORDER(-moz-border-radius-bottomleft, _moz_border_radius_bottomLeft, MozBorderRadiusBottomleft, 0, Margin, mBorderRadius.mBottomLeft, eCSSType_ValuePair, nsnull)
CSS_PROP_BORDER(-moz-border-radius-topleft, _moz_border_radius_topLeft, MozBorderRadiusTopleft, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderRadius.mTopLeft, eCSSType_ValuePair, nsnull)
CSS_PROP_BORDER(-moz-border-radius-topright, _moz_border_radius_topRight, MozBorderRadiusTopright, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderRadius.mTopRight, eCSSType_ValuePair, nsnull)
CSS_PROP_BORDER(-moz-border-radius-bottomright, _moz_border_radius_bottomRight, MozBorderRadiusBottomright, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderRadius.mBottomRight, eCSSType_ValuePair, nsnull)
CSS_PROP_BORDER(-moz-border-radius-bottomleft, _moz_border_radius_bottomLeft, MozBorderRadiusBottomleft, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderRadius.mBottomLeft, eCSSType_ValuePair, nsnull)
CSS_PROP_SHORTHAND(-moz-outline-radius, _moz_outline_radius, MozOutlineRadius, 0)
CSS_PROP_OUTLINE(-moz-outline-radius-topleft, _moz_outline_radius_topLeft, MozOutlineRadiusTopleft, 0, Margin, mOutlineRadius.mTopLeft, eCSSType_ValuePair, nsnull)
CSS_PROP_OUTLINE(-moz-outline-radius-topright, _moz_outline_radius_topRight, MozOutlineRadiusTopright, 0, Margin, mOutlineRadius.mTopRight, eCSSType_ValuePair, nsnull)
CSS_PROP_OUTLINE(-moz-outline-radius-bottomright, _moz_outline_radius_bottomRight, MozOutlineRadiusBottomright, 0, Margin, mOutlineRadius.mBottomRight, eCSSType_ValuePair, nsnull)
CSS_PROP_OUTLINE(-moz-outline-radius-bottomleft, _moz_outline_radius_bottomLeft, MozOutlineRadiusBottomleft, 0, Margin, mOutlineRadius.mBottomLeft, eCSSType_ValuePair, nsnull)
CSS_PROP_OUTLINE(-moz-outline-radius-topleft, _moz_outline_radius_topLeft, MozOutlineRadiusTopleft, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mOutlineRadius.mTopLeft, eCSSType_ValuePair, nsnull)
CSS_PROP_OUTLINE(-moz-outline-radius-topright, _moz_outline_radius_topRight, MozOutlineRadiusTopright, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mOutlineRadius.mTopRight, eCSSType_ValuePair, nsnull)
CSS_PROP_OUTLINE(-moz-outline-radius-bottomright, _moz_outline_radius_bottomRight, MozOutlineRadiusBottomright, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mOutlineRadius.mBottomRight, eCSSType_ValuePair, nsnull)
CSS_PROP_OUTLINE(-moz-outline-radius-bottomleft, _moz_outline_radius_bottomLeft, MozOutlineRadiusBottomleft, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mOutlineRadius.mBottomLeft, eCSSType_ValuePair, nsnull)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_FONT(-x-system-font, _x_system_font, X, 0, Font, mSystemFont, eCSSType_Value, kFontKTable)
CSS_PROP_FONT(-x-system-font, _x_system_font, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mSystemFont, eCSSType_Value, kFontKTable)
#endif
CSS_PROP_BACKENDONLY(azimuth, azimuth, Azimuth, 0, Aural, mAzimuth, eCSSType_Value, kAzimuthKTable)
CSS_PROP_BACKENDONLY(azimuth, azimuth, Azimuth, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mAzimuth, eCSSType_Value, kAzimuthKTable)
CSS_PROP_SHORTHAND(background, background, Background, 0)
CSS_PROP_BACKGROUND(background-attachment, background_attachment, BackgroundAttachment, 0, Color, mBackAttachment, eCSSType_Value, kBackgroundAttachmentKTable)
CSS_PROP_BACKGROUND(-moz-background-clip, _moz_background_clip, MozBackgroundClip, 0, Color, mBackClip, eCSSType_Value, kBackgroundClipKTable)
CSS_PROP_BACKGROUND(background-color, background_color, BackgroundColor, 0, Color, mBackColor, eCSSType_Value, nsnull)
CSS_PROP_BACKGROUND(background-image, background_image, BackgroundImage, 0, Color, mBackImage, eCSSType_Value, nsnull)
CSS_PROP_BACKGROUND(-moz-background-inline-policy, _moz_background_inline_policy, MozBackgroundInlinePolicy, 0, Color, mBackInlinePolicy, eCSSType_Value, kBackgroundInlinePolicyKTable)
CSS_PROP_BACKGROUND(-moz-background-origin, _moz_background_origin, MozBackgroundOrigin, 0, Color, mBackOrigin, eCSSType_Value, kBackgroundOriginKTable)
CSS_PROP_BACKGROUND(background-position, background_position, BackgroundPosition, 0, Color, mBackPosition, eCSSType_ValuePair, kBackgroundPositionKTable)
CSS_PROP_BACKGROUND(background-repeat, background_repeat, BackgroundRepeat, 0, Color, mBackRepeat, eCSSType_Value, kBackgroundRepeatKTable)
CSS_PROP_BACKGROUND(background-attachment, background_attachment, BackgroundAttachment, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackAttachment, eCSSType_Value, kBackgroundAttachmentKTable)
CSS_PROP_BACKGROUND(-moz-background-clip, _moz_background_clip, MozBackgroundClip, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackClip, eCSSType_Value, kBackgroundClipKTable)
CSS_PROP_BACKGROUND(background-color, background_color, BackgroundColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackColor, eCSSType_Value, nsnull)
CSS_PROP_BACKGROUND(background-image, background_image, BackgroundImage, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackImage, eCSSType_Value, nsnull)
CSS_PROP_BACKGROUND(-moz-background-inline-policy, _moz_background_inline_policy, MozBackgroundInlinePolicy, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackInlinePolicy, eCSSType_Value, kBackgroundInlinePolicyKTable)
CSS_PROP_BACKGROUND(-moz-background-origin, _moz_background_origin, MozBackgroundOrigin, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackOrigin, eCSSType_Value, kBackgroundOriginKTable)
CSS_PROP_BACKGROUND(background-position, background_position, BackgroundPosition, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackPosition, eCSSType_ValuePair, kBackgroundPositionKTable)
CSS_PROP_BACKGROUND(background-repeat, background_repeat, BackgroundRepeat, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mBackRepeat, eCSSType_Value, kBackgroundRepeatKTable)
CSS_PROP_DISPLAY(-moz-binding, binding, MozBinding, 0, Display, mBinding, eCSSType_Value, nsnull) // XXX bug 3935
CSS_PROP_SHORTHAND(border, border, Border, 0)
CSS_PROP_SHORTHAND(border-bottom, border_bottom, BorderBottom, 0)
CSS_PROP_BORDER(border-bottom-color, border_bottom_color, BorderBottomColor, 0, Margin, mBorderColor.mBottom, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(-moz-border-bottom-colors, border_bottom_colors, MozBorderBottomColors, 0, Margin, mBorderColors.mBottom, eCSSType_ValueList, nsnull)
CSS_PROP_BORDER(border-bottom-style, border_bottom_style, BorderBottomStyle, 0, Margin, mBorderStyle.mBottom, eCSSType_Value, kBorderStyleKTable) // on/off will need reflow
CSS_PROP_BORDER(border-bottom-width, border_bottom_width, BorderBottomWidth, 0, Margin, mBorderWidth.mBottom, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_TABLEBORDER(border-collapse, border_collapse, BorderCollapse, 0, Table, mBorderCollapse, eCSSType_Value, kBorderCollapseKTable)
CSS_PROP_BORDER(border-bottom-color, border_bottom_color, BorderBottomColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColor.mBottom, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(-moz-border-bottom-colors, border_bottom_colors, MozBorderBottomColors, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColors.mBottom, eCSSType_ValueList, nsnull)
CSS_PROP_BORDER(border-bottom-style, border_bottom_style, BorderBottomStyle, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mBorderStyle.mBottom, eCSSType_Value, kBorderStyleKTable) // on/off will need reflow
CSS_PROP_BORDER(border-bottom-width, border_bottom_width, BorderBottomWidth, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderWidth.mBottom, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_TABLEBORDER(border-collapse, border_collapse, BorderCollapse, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mBorderCollapse, eCSSType_Value, kBorderCollapseKTable)
CSS_PROP_SHORTHAND(border-color, border_color, BorderColor, 0)
CSS_PROP_SHORTHAND(-moz-border-end, border_end, MozBorderEnd, 0)
CSS_PROP_SHORTHAND(-moz-border-end-color, border_end_color, MozBorderEndColor, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-end-color-value, border_end_color_value, X, 0, Margin, mBorderEndColor, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(border-end-color-value, border_end_color_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderEndColor, eCSSType_Value, kBorderColorKTable)
#endif
CSS_PROP_SHORTHAND(-moz-border-end-style, border_end_style, MozBorderEndStyle, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-end-style-value, border_end_style_value, X, 0, Margin, mBorderEndStyle, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_BORDER(border-end-style-value, border_end_style_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderEndStyle, eCSSType_Value, kBorderStyleKTable)
#endif
CSS_PROP_SHORTHAND(-moz-border-end-width, border_end_width, MozBorderEndWidth, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-end-width-value, border_end_width_value, X, 0, Margin, mBorderEndWidth, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_BORDER(border-end-width-value, border_end_width_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderEndWidth, eCSSType_Value, kBorderWidthKTable)
#endif
CSS_PROP_BORDER(-moz-border-image, border_image, MozBorderImage, 0, Margin, mBorderImage, eCSSType_Value, kBorderImageKTable)
CSS_PROP_BORDER(-moz-border-image, border_image, MozBorderImage, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderImage, eCSSType_Value, kBorderImageKTable)
CSS_PROP_SHORTHAND(border-left, border_left, BorderLeft, 0)
CSS_PROP_SHORTHAND(border-left-color, border_left_color, BorderLeftColor, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-left-color-value, border_left_color_value, X, 0, Margin, mBorderColor.mLeft, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(border-left-color-ltr-source, border_left_color_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftColorLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-color-rtl-source, border_left_color_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftColorRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-color-value, border_left_color_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColor.mLeft, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(border-left-color-ltr-source, border_left_color_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftColorLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-color-rtl-source, border_left_color_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftColorRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_BORDER(-moz-border-left-colors, border_left_colors, MozBorderLeftColors, 0, Margin, mBorderColors.mLeft, eCSSType_ValueList, nsnull)
CSS_PROP_BORDER(-moz-border-left-colors, border_left_colors, MozBorderLeftColors, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColors.mLeft, eCSSType_ValueList, nsnull)
CSS_PROP_SHORTHAND(border-left-style, border_left_style, BorderLeftStyle, 0) // on/off will need reflow
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-left-style-value, border_left_style_value, X, 0, Margin, mBorderStyle.mLeft, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_BORDER(border-left-style-ltr-source, border_left_style_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftStyleLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-style-rtl-source, border_left_style_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftStyleRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-style-value, border_left_style_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mBorderStyle.mLeft, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_BORDER(border-left-style-ltr-source, border_left_style_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftStyleLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-style-rtl-source, border_left_style_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftStyleRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_SHORTHAND(border-left-width, border_left_width, BorderLeftWidth, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-left-width-value, border_left_width_value, X, 0, Margin, mBorderWidth.mLeft, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_BORDER(border-left-width-ltr-source, border_left_width_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftWidthLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-width-rtl-source, border_left_width_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftWidthRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-width-value, border_left_width_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderWidth.mLeft, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_BORDER(border-left-width-ltr-source, border_left_width_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftWidthLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-left-width-rtl-source, border_left_width_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderLeftWidthRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_SHORTHAND(border-right, border_right, BorderRight, 0)
CSS_PROP_SHORTHAND(border-right-color, border_right_color, BorderRightColor, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-right-color-value, border_right_color_value, X, 0, Margin, mBorderColor.mRight, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(border-right-color-ltr-source, border_right_color_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightColorLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-color-rtl-source, border_right_color_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightColorRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-color-value, border_right_color_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColor.mRight, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(border-right-color-ltr-source, border_right_color_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightColorLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-color-rtl-source, border_right_color_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightColorRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_BORDER(-moz-border-right-colors, border_right_colors, MozBorderRightColors, 0, Margin, mBorderColors.mRight, eCSSType_ValueList, nsnull)
CSS_PROP_BORDER(-moz-border-right-colors, border_right_colors, MozBorderRightColors, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColors.mRight, eCSSType_ValueList, nsnull)
CSS_PROP_SHORTHAND(border-right-style, border_right_style, BorderRightStyle, 0) // on/off will need reflow
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-right-style-value, border_right_style_value, X, 0, Margin, mBorderStyle.mRight, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_BORDER(border-right-style-ltr-source, border_right_style_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightStyleLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-style-rtl-source, border_right_style_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightStyleRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-style-value, border_right_style_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mBorderStyle.mRight, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_BORDER(border-right-style-ltr-source, border_right_style_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightStyleLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-style-rtl-source, border_right_style_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightStyleRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_SHORTHAND(border-right-width, border_right_width, BorderRightWidth, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-right-width-value, border_right_width_value, X, 0, Margin, mBorderWidth.mRight, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_BORDER(border-right-width-ltr-source, border_right_width_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightWidthLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-width-rtl-source, border_right_width_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightWidthRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-width-value, border_right_width_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderWidth.mRight, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_BORDER(border-right-width-ltr-source, border_right_width_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightWidthLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_BORDER(border-right-width-rtl-source, border_right_width_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mBorderRightWidthRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_TABLEBORDER(border-spacing, border_spacing, BorderSpacing, 0, Table, mBorderSpacing, eCSSType_ValuePair, nsnull) // XXX bug 3935
CSS_PROP_TABLEBORDER(border-spacing, border_spacing, BorderSpacing, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mBorderSpacing, eCSSType_ValuePair, nsnull) // XXX bug 3935
CSS_PROP_SHORTHAND(-moz-border-start, border_start, MozBorderStart, 0)
CSS_PROP_SHORTHAND(-moz-border-start-color, border_start_color, MozBorderStartColor, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-start-color-value, border_start_color_value, X, 0, Margin, mBorderStartColor, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(border-start-color-value, border_start_color_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderStartColor, eCSSType_Value, kBorderColorKTable)
#endif
CSS_PROP_SHORTHAND(-moz-border-start-style, border_start_style, MozBorderStartStyle, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-start-style-value, border_start_style_value, X, 0, Margin, mBorderStartStyle, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_BORDER(border-start-style-value, border_start_style_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderStartStyle, eCSSType_Value, kBorderStyleKTable)
#endif
CSS_PROP_SHORTHAND(-moz-border-start-width, border_start_width, MozBorderStartWidth, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_BORDER(border-start-width-value, border_start_width_value, X, 0, Margin, mBorderStartWidth, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_BORDER(border-start-width-value, border_start_width_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderStartWidth, eCSSType_Value, kBorderWidthKTable)
#endif
CSS_PROP_SHORTHAND(border-style, border_style, BorderStyle, 0) // on/off will need reflow
CSS_PROP_SHORTHAND(border-top, border_top, BorderTop, 0)
CSS_PROP_BORDER(border-top-color, border_top_color, BorderTopColor, 0, Margin, mBorderColor.mTop, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(-moz-border-top-colors, border_top_colors, MozBorderTopColors, 0, Margin, mBorderColors.mTop, eCSSType_ValueList, nsnull)
CSS_PROP_BORDER(border-top-style, border_top_style, BorderTopStyle, 0, Margin, mBorderStyle.mTop, eCSSType_Value, kBorderStyleKTable) // on/off will need reflow
CSS_PROP_BORDER(border-top-width, border_top_width, BorderTopWidth, 0, Margin, mBorderWidth.mTop, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_BORDER(border-top-color, border_top_color, BorderTopColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColor.mTop, eCSSType_Value, kBorderColorKTable)
CSS_PROP_BORDER(-moz-border-top-colors, border_top_colors, MozBorderTopColors, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderColors.mTop, eCSSType_ValueList, nsnull)
CSS_PROP_BORDER(border-top-style, border_top_style, BorderTopStyle, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mBorderStyle.mTop, eCSSType_Value, kBorderStyleKTable) // on/off will need reflow
CSS_PROP_BORDER(border-top-width, border_top_width, BorderTopWidth, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mBorderWidth.mTop, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_SHORTHAND(border-width, border_width, BorderWidth, 0)
CSS_PROP_POSITION(bottom, bottom, Bottom, 0, Position, mOffset.mBottom, eCSSType_Value, nsnull)
CSS_PROP_BORDER(-moz-box-shadow, box_shadow, MozBoxShadow, CSS_PROPERTY_VALUE_LIST_USES_COMMAS, Margin, mBoxShadow, eCSSType_ValueList, nsnull)
CSS_PROP_BORDER(-moz-box-shadow, box_shadow, MozBoxShadow, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_VALUE_LIST_USES_COMMAS, Margin, mBoxShadow, eCSSType_ValueList, nsnull)
CSS_PROP_POSITION(-moz-box-sizing, box_sizing, MozBoxSizing, 0, Position, mBoxSizing, eCSSType_Value, kBoxSizingKTable) // XXX bug 3935
CSS_PROP_TABLEBORDER(caption-side, caption_side, CaptionSide, 0, Table, mCaptionSide, eCSSType_Value, kCaptionSideKTable)
CSS_PROP_TABLEBORDER(caption-side, caption_side, CaptionSide, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mCaptionSide, eCSSType_Value, kCaptionSideKTable)
CSS_PROP_DISPLAY(clear, clear, Clear, 0, Display, mClear, eCSSType_Value, kClearKTable)
CSS_PROP_DISPLAY(clip, clip, Clip, 0, Display, mClip, eCSSType_Rect, nsnull)
CSS_PROP_COLOR(color, color, Color, 0, Color, mColor, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-count, _moz_column_count, MozColumnCount, 0, Column, mColumnCount, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-width, _moz_column_width, MozColumnWidth, 0, Column, mColumnWidth, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-gap, _moz_column_gap, MozColumnGap, 0, Column, mColumnGap, eCSSType_Value, nsnull)
CSS_PROP_COLOR(color, color, Color, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Color, mColor, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-count, _moz_column_count, MozColumnCount, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Column, mColumnCount, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-width, _moz_column_width, MozColumnWidth, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Column, mColumnWidth, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-gap, _moz_column_gap, MozColumnGap, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Column, mColumnGap, eCSSType_Value, nsnull)
CSS_PROP_SHORTHAND(-moz-column-rule, _moz_column_rule, MozColumnRule, 0)
CSS_PROP_COLUMN(-moz-column-rule-color, _moz_column_rule_color, MozColumnRuleColor, 0, Column, mColumnRuleColor, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-rule-style, _moz_column_rule_style, MozColumnRuleStyle, 0, Column, mColumnRuleStyle, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_COLUMN(-moz-column-rule-width, _moz_column_rule_width, MozColumnRuleWidth, 0, Column, mColumnRuleWidth, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_CONTENT(content, content, Content, 0, Content, mContent, eCSSType_ValueList, kContentKTable)
CSS_PROP_COLUMN(-moz-column-rule-color, _moz_column_rule_color, MozColumnRuleColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Column, mColumnRuleColor, eCSSType_Value, nsnull)
CSS_PROP_COLUMN(-moz-column-rule-style, _moz_column_rule_style, MozColumnRuleStyle, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Column, mColumnRuleStyle, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_COLUMN(-moz-column-rule-width, _moz_column_rule_width, MozColumnRuleWidth, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Column, mColumnRuleWidth, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_CONTENT(content, content, Content, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Content, mContent, eCSSType_ValueList, kContentKTable)
CSS_PROP_CONTENT(counter-increment, counter_increment, CounterIncrement, 0, Content, mCounterIncrement, eCSSType_ValuePairList, nsnull) // XXX bug 137285
CSS_PROP_CONTENT(counter-reset, counter_reset, CounterReset, 0, Content, mCounterReset, eCSSType_ValuePairList, nsnull) // XXX bug 137285
CSS_PROP_SHORTHAND(cue, cue, Cue, 0)
CSS_PROP_BACKENDONLY(cue-after, cue_after, CueAfter, 0, Aural, mCueAfter, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(cue-before, cue_before, CueBefore, 0, Aural, mCueBefore, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(cue-after, cue_after, CueAfter, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mCueAfter, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(cue-before, cue_before, CueBefore, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mCueBefore, eCSSType_Value, nsnull)
CSS_PROP_USERINTERFACE(cursor, cursor, Cursor, CSS_PROPERTY_VALUE_LIST_USES_COMMAS, UserInterface, mCursor, eCSSType_ValueList, kCursorKTable)
CSS_PROP_VISIBILITY(direction, direction, Direction, 0, Display, mDirection, eCSSType_Value, kDirectionKTable)
CSS_PROP_DISPLAY(display, display, Display, 0, Display, mDisplay, eCSSType_Value, kDisplayKTable)
CSS_PROP_BACKENDONLY(elevation, elevation, Elevation, 0, Aural, mElevation, eCSSType_Value, kElevationKTable)
CSS_PROP_TABLEBORDER(empty-cells, empty_cells, EmptyCells, 0, Table, mEmptyCells, eCSSType_Value, kEmptyCellsKTable)
CSS_PROP_DISPLAY(float, float, CssFloat, 0, Display, mFloat, eCSSType_Value, kFloatKTable)
CSS_PROP_BORDER(-moz-float-edge, float_edge, MozFloatEdge, 0, Margin, mFloatEdge, eCSSType_Value, kFloatEdgeKTable) // XXX bug 3935
CSS_PROP_BACKENDONLY(elevation, elevation, Elevation, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mElevation, eCSSType_Value, kElevationKTable)
CSS_PROP_TABLEBORDER(empty-cells, empty_cells, EmptyCells, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mEmptyCells, eCSSType_Value, kEmptyCellsKTable)
CSS_PROP_DISPLAY(float, float, CssFloat, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Display, mFloat, eCSSType_Value, kFloatKTable)
CSS_PROP_BORDER(-moz-float-edge, float_edge, MozFloatEdge, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mFloatEdge, eCSSType_Value, kFloatEdgeKTable) // XXX bug 3935
CSS_PROP_SHORTHAND(font, font, Font, 0)
CSS_PROP_FONT(font-family, font_family, FontFamily, 0, Font, mFamily, eCSSType_Value, nsnull)
CSS_PROP_FONT(font-size, font_size, FontSize, 0, Font, mSize, eCSSType_Value, kFontSizeKTable)
CSS_PROP_FONT(font-size-adjust, font_size_adjust, FontSizeAdjust, 0, Font, mSizeAdjust, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(font-stretch, font_stretch, FontStretch, 0, Font, mStretch, eCSSType_Value, kFontStretchKTable)
CSS_PROP_FONT(font-style, font_style, FontStyle, 0, Font, mStyle, eCSSType_Value, kFontStyleKTable)
CSS_PROP_FONT(font-variant, font_variant, FontVariant, 0, Font, mVariant, eCSSType_Value, kFontVariantKTable)
CSS_PROP_FONT(font-weight, font_weight, FontWeight, 0, Font, mWeight, eCSSType_Value, kFontWeightKTable)
CSS_PROP_UIRESET(-moz-force-broken-image-icon, force_broken_image_icon, MozForceBrokenImageIcon, 0, UserInterface, mForceBrokenImageIcon, eCSSType_Value, nsnull) // bug 58646
CSS_PROP_FONT(font-family, font_family, FontFamily, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mFamily, eCSSType_Value, nsnull)
CSS_PROP_FONT(font-size, font_size, FontSize, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mSize, eCSSType_Value, kFontSizeKTable)
CSS_PROP_FONT(font-size-adjust, font_size_adjust, FontSizeAdjust, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mSizeAdjust, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(font-stretch, font_stretch, FontStretch, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mStretch, eCSSType_Value, kFontStretchKTable)
CSS_PROP_FONT(font-style, font_style, FontStyle, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mStyle, eCSSType_Value, kFontStyleKTable)
CSS_PROP_FONT(font-variant, font_variant, FontVariant, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mVariant, eCSSType_Value, kFontVariantKTable)
CSS_PROP_FONT(font-weight, font_weight, FontWeight, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mWeight, eCSSType_Value, kFontWeightKTable)
CSS_PROP_UIRESET(-moz-force-broken-image-icon, force_broken_image_icon, MozForceBrokenImageIcon, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, UserInterface, mForceBrokenImageIcon, eCSSType_Value, nsnull) // bug 58646
CSS_PROP_POSITION(height, height, Height, 0, Position, mHeight, eCSSType_Value, nsnull)
CSS_PROP_LIST(-moz-image-region, image_region, MozImageRegion, 0, List, mImageRegion, eCSSType_Rect, nsnull)
CSS_PROP_UIRESET(ime-mode, ime_mode, ImeMode, 0, UserInterface, mIMEMode, eCSSType_Value, kIMEModeKTable)
CSS_PROP_LIST(-moz-image-region, image_region, MozImageRegion, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, List, mImageRegion, eCSSType_Rect, nsnull)
CSS_PROP_UIRESET(ime-mode, ime_mode, ImeMode, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, UserInterface, mIMEMode, eCSSType_Value, kIMEModeKTable)
CSS_PROP_POSITION(left, left, Left, 0, Position, mOffset.mLeft, eCSSType_Value, nsnull)
CSS_PROP_TEXT(letter-spacing, letter_spacing, LetterSpacing, 0, Text, mLetterSpacing, eCSSType_Value, nsnull)
CSS_PROP_TEXT(line-height, line_height, LineHeight, 0, Text, mLineHeight, eCSSType_Value, nsnull)
CSS_PROP_TEXT(letter-spacing, letter_spacing, LetterSpacing, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mLetterSpacing, eCSSType_Value, nsnull)
CSS_PROP_TEXT(line-height, line_height, LineHeight, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mLineHeight, eCSSType_Value, nsnull)
CSS_PROP_SHORTHAND(list-style, list_style, ListStyle, 0)
CSS_PROP_LIST(list-style-image, list_style_image, ListStyleImage, 0, List, mImage, eCSSType_Value, nsnull)
CSS_PROP_LIST(list-style-position, list_style_position, ListStylePosition, 0, List, mPosition, eCSSType_Value, kListStylePositionKTable)
CSS_PROP_LIST(list-style-type, list_style_type, ListStyleType, 0, List, mType, eCSSType_Value, kListStyleKTable)
CSS_PROP_LIST(list-style-image, list_style_image, ListStyleImage, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, List, mImage, eCSSType_Value, nsnull)
CSS_PROP_LIST(list-style-position, list_style_position, ListStylePosition, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, List, mPosition, eCSSType_Value, kListStylePositionKTable)
CSS_PROP_LIST(list-style-type, list_style_type, ListStyleType, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, List, mType, eCSSType_Value, kListStyleKTable)
CSS_PROP_SHORTHAND(margin, margin, Margin, 0)
CSS_PROP_MARGIN(margin-bottom, margin_bottom, MarginBottom, 0, Margin, mMargin.mBottom, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-bottom, margin_bottom, MarginBottom, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mMargin.mBottom, eCSSType_Value, nsnull)
CSS_PROP_SHORTHAND(-moz-margin-end, margin_end, MozMarginEnd, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_MARGIN(margin-end-value, margin_end_value, X, 0, Margin, mMarginEnd, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-end-value, margin_end_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mMarginEnd, eCSSType_Value, nsnull)
#endif
CSS_PROP_SHORTHAND(margin-left, margin_left, MarginLeft, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_MARGIN(margin-left-value, margin_left_value, X, 0, Margin, mMargin.mLeft, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-left-ltr-source, margin_left_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginLeftLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_MARGIN(margin-left-rtl-source, margin_left_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginLeftRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_MARGIN(margin-left-value, margin_left_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mMargin.mLeft, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-left-ltr-source, margin_left_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginLeftLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_MARGIN(margin-left-rtl-source, margin_left_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginLeftRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_SHORTHAND(margin-right, margin_right, MarginRight, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_MARGIN(margin-right-value, margin_right_value, X, 0, Margin, mMargin.mRight, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-right-ltr-source, margin_right_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginRightLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_MARGIN(margin-right-rtl-source, margin_right_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginRightRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_MARGIN(margin-right-value, margin_right_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mMargin.mRight, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-right-ltr-source, margin_right_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginRightLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_MARGIN(margin-right-rtl-source, margin_right_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mMarginRightRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_SHORTHAND(-moz-margin-start, margin_start, MozMarginStart, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_MARGIN(margin-start-value, margin_start_value, X, 0, Margin, mMarginStart, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-start-value, margin_start_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mMarginStart, eCSSType_Value, nsnull)
#endif
CSS_PROP_MARGIN(margin-top, margin_top, MarginTop, 0, Margin, mMargin.mTop, eCSSType_Value, nsnull)
CSS_PROP_MARGIN(margin-top, margin_top, MarginTop, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mMargin.mTop, eCSSType_Value, nsnull)
CSS_PROP_CONTENT(marker-offset, marker_offset, MarkerOffset, 0, Content, mMarkerOffset, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(marks, marks, Marks, 0, Page, mMarks, eCSSType_Value, kPageMarksKTable)
CSS_PROP_BACKENDONLY(marks, marks, Marks, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Page, mMarks, eCSSType_Value, kPageMarksKTable)
CSS_PROP_POSITION(max-height, max_height, MaxHeight, 0, Position, mMaxHeight, eCSSType_Value, nsnull)
CSS_PROP_POSITION(max-width, max_width, MaxWidth, 0, Position, mMaxWidth, eCSSType_Value, kWidthKTable)
CSS_PROP_POSITION(min-height, min_height, MinHeight, 0, Position, mMinHeight, eCSSType_Value, nsnull)
CSS_PROP_POSITION(min-width, min_width, MinWidth, 0, Position, mMinWidth, eCSSType_Value, kWidthKTable)
CSS_PROP_DISPLAY(opacity, opacity, Opacity, 0, Display, mOpacity, eCSSType_Value, nsnull) // XXX bug 3935
CSS_PROP_BACKENDONLY(orphans, orphans, Orphans, 0, Breaks, mOrphans, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(orphans, orphans, Orphans, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Breaks, mOrphans, eCSSType_Value, nsnull)
CSS_PROP_SHORTHAND(outline, outline, Outline, 0)
CSS_PROP_OUTLINE(outline-color, outline_color, OutlineColor, 0, Margin, mOutlineColor, eCSSType_Value, kOutlineColorKTable)
CSS_PROP_OUTLINE(outline-color, outline_color, OutlineColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mOutlineColor, eCSSType_Value, kOutlineColorKTable)
CSS_PROP_OUTLINE(outline-style, outline_style, OutlineStyle, 0, Margin, mOutlineStyle, eCSSType_Value, kBorderStyleKTable)
CSS_PROP_OUTLINE(outline-width, outline_width, OutlineWidth, 0, Margin, mOutlineWidth, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_OUTLINE(outline-offset, outline_offset, OutlineOffset, 0, Margin, mOutlineOffset, eCSSType_Value, nsnull)
CSS_PROP_OUTLINE(outline-width, outline_width, OutlineWidth, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mOutlineWidth, eCSSType_Value, kBorderWidthKTable)
CSS_PROP_OUTLINE(outline-offset, outline_offset, OutlineOffset, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mOutlineOffset, eCSSType_Value, nsnull)
CSS_PROP_SHORTHAND(overflow, overflow, Overflow, 0)
CSS_PROP_DISPLAY(overflow-x, overflow_x, OverflowX, 0, Display, mOverflowX, eCSSType_Value, kOverflowSubKTable)
CSS_PROP_DISPLAY(overflow-y, overflow_y, OverflowY, 0, Display, mOverflowY, eCSSType_Value, kOverflowSubKTable)
CSS_PROP_SHORTHAND(padding, padding, Padding, 0)
CSS_PROP_PADDING(padding-bottom, padding_bottom, PaddingBottom, 0, Margin, mPadding.mBottom, eCSSType_Value, nsnull)
CSS_PROP_PADDING(padding-bottom, padding_bottom, PaddingBottom, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mPadding.mBottom, eCSSType_Value, nsnull)
CSS_PROP_SHORTHAND(-moz-padding-end, padding_end, MozPaddingEnd, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_PADDING(padding-end-value, padding_end_value, X, 0, Margin, mPaddingEnd, eCSSType_Value, nsnull)
CSS_PROP_PADDING(padding-end-value, padding_end_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mPaddingEnd, eCSSType_Value, nsnull)
#endif
CSS_PROP_SHORTHAND(padding-left, padding_left, PaddingLeft, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_PADDING(padding-left-value, padding_left_value, X, 0, Margin, mPadding.mLeft, eCSSType_Value, nsnull)
CSS_PROP_PADDING(padding-left-ltr-source, padding_left_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingLeftLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_PADDING(padding-left-rtl-source, padding_left_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingLeftRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_PADDING(padding-left-value, padding_left_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mPadding.mLeft, eCSSType_Value, nsnull)
CSS_PROP_PADDING(padding-left-ltr-source, padding_left_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingLeftLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_PADDING(padding-left-rtl-source, padding_left_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingLeftRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_SHORTHAND(padding-right, padding_right, PaddingRight, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_PADDING(padding-right-value, padding_right_value, X, 0, Margin, mPadding.mRight, eCSSType_Value, nsnull)
CSS_PROP_PADDING(padding-right-ltr-source, padding_right_ltr_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingRightLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_PADDING(padding-right-rtl-source, padding_right_rtl_source, X, CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingRightRTLSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_PADDING(padding-right-value, padding_right_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mPadding.mRight, eCSSType_Value, nsnull)
CSS_PROP_PADDING(padding-right-ltr-source, padding_right_ltr_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingRightLTRSource, eCSSType_Value, kBoxPropSourceKTable)
CSS_PROP_PADDING(padding-right-rtl-source, padding_right_rtl_source, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_DIRECTIONAL_SOURCE, Margin, mPaddingRightRTLSource, eCSSType_Value, kBoxPropSourceKTable)
#endif
CSS_PROP_SHORTHAND(-moz-padding-start, padding_start, MozPaddingStart, 0)
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_PADDING(padding-start-value, padding_start_value, X, 0, Margin, mPaddingStart, eCSSType_Value, nsnull)
CSS_PROP_PADDING(padding-start-value, padding_start_value, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Margin, mPaddingStart, eCSSType_Value, nsnull)
#endif
CSS_PROP_PADDING(padding-top, padding_top, PaddingTop, 0, Margin, mPadding.mTop, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(page, page, Page, 0, Breaks, mPage, eCSSType_Value, nsnull)
CSS_PROP_DISPLAY(page-break-after, page_break_after, PageBreakAfter, 0, Display, mBreakAfter, eCSSType_Value, kPageBreakKTable) // temp fix for bug 24000
CSS_PROP_DISPLAY(page-break-before, page_break_before, PageBreakBefore, 0, Display, mBreakBefore, eCSSType_Value, kPageBreakKTable) // temp fix for bug 24000
CSS_PROP_BACKENDONLY(page-break-inside, page_break_inside, PageBreakInside, 0, Breaks, mPageBreakInside, eCSSType_Value, kPageBreakInsideKTable)
CSS_PROP_PADDING(padding-top, padding_top, PaddingTop, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER, Margin, mPadding.mTop, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(page, page, Page, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Breaks, mPage, eCSSType_Value, nsnull)
CSS_PROP_DISPLAY(page-break-after, page_break_after, PageBreakAfter, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Display, mBreakAfter, eCSSType_Value, kPageBreakKTable) // temp fix for bug 24000
CSS_PROP_DISPLAY(page-break-before, page_break_before, PageBreakBefore, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Display, mBreakBefore, eCSSType_Value, kPageBreakKTable) // temp fix for bug 24000
CSS_PROP_BACKENDONLY(page-break-inside, page_break_inside, PageBreakInside, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Breaks, mPageBreakInside, eCSSType_Value, kPageBreakInsideKTable)
CSS_PROP_SHORTHAND(pause, pause, Pause, 0)
CSS_PROP_BACKENDONLY(pause-after, pause_after, PauseAfter, 0, Aural, mPauseAfter, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(pause-before, pause_before, PauseBefore, 0, Aural, mPauseBefore, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(pitch, pitch, Pitch, 0, Aural, mPitch, eCSSType_Value, kPitchKTable)
CSS_PROP_BACKENDONLY(pitch-range, pitch_range, PitchRange, 0, Aural, mPitchRange, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(pause-after, pause_after, PauseAfter, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mPauseAfter, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(pause-before, pause_before, PauseBefore, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mPauseBefore, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(pitch, pitch, Pitch, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mPitch, eCSSType_Value, kPitchKTable)
CSS_PROP_BACKENDONLY(pitch-range, pitch_range, PitchRange, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mPitchRange, eCSSType_Value, nsnull)
CSS_PROP_DISPLAY(position, position, Position, 0, Display, mPosition, eCSSType_Value, kPositionKTable)
CSS_PROP_QUOTES(quotes, quotes, Quotes, 0, Content, mQuotes, eCSSType_ValuePairList, nsnull)
CSS_PROP_BACKENDONLY(richness, richness, Richness, 0, Aural, mRichness, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(richness, richness, Richness, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mRichness, eCSSType_Value, nsnull)
CSS_PROP_POSITION(right, right, Right, 0, Position, mOffset.mRight, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(size, size, Size, 0, Page, mSize, eCSSType_ValuePair, kPageSizeKTable)
CSS_PROP_BACKENDONLY(speak, speak, Speak, 0, Aural, mSpeak, eCSSType_Value, kSpeakKTable)
CSS_PROP_BACKENDONLY(speak-header, speak_header, SpeakHeader, 0, Aural, mSpeakHeader, eCSSType_Value, kSpeakHeaderKTable)
CSS_PROP_BACKENDONLY(speak-numeral, speak_numeral, SpeakNumeral, 0, Aural, mSpeakNumeral, eCSSType_Value, kSpeakNumeralKTable)
CSS_PROP_BACKENDONLY(speak-punctuation, speak_punctuation, SpeakPunctuation, 0, Aural, mSpeakPunctuation, eCSSType_Value, kSpeakPunctuationKTable)
CSS_PROP_BACKENDONLY(speech-rate, speech_rate, SpeechRate, 0, Aural, mSpeechRate, eCSSType_Value, kSpeechRateKTable)
CSS_PROP_BACKENDONLY(stress, stress, Stress, 0, Aural, mStress, eCSSType_Value, nsnull)
CSS_PROP_TABLE(table-layout, table_layout, TableLayout, 0, Table, mLayout, eCSSType_Value, kTableLayoutKTable)
CSS_PROP_TEXT(text-align, text_align, TextAlign, 0, Text, mTextAlign, eCSSType_Value, kTextAlignKTable)
CSS_PROP_TEXTRESET(text-decoration, text_decoration, TextDecoration, 0, Text, mDecoration, eCSSType_Value, kTextDecorationKTable)
CSS_PROP_TEXT(text-indent, text_indent, TextIndent, 0, Text, mTextIndent, eCSSType_Value, nsnull)
CSS_PROP_TEXT(text-shadow, text_shadow, TextShadow, CSS_PROPERTY_VALUE_LIST_USES_COMMAS, Text, mTextShadow, eCSSType_ValueList, nsnull)
CSS_PROP_TEXT(text-transform, text_transform, TextTransform, 0, Text, mTextTransform, eCSSType_Value, kTextTransformKTable)
CSS_PROP_BACKENDONLY(size, size, Size, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Page, mSize, eCSSType_ValuePair, kPageSizeKTable)
CSS_PROP_BACKENDONLY(speak, speak, Speak, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mSpeak, eCSSType_Value, kSpeakKTable)
CSS_PROP_BACKENDONLY(speak-header, speak_header, SpeakHeader, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mSpeakHeader, eCSSType_Value, kSpeakHeaderKTable)
CSS_PROP_BACKENDONLY(speak-numeral, speak_numeral, SpeakNumeral, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mSpeakNumeral, eCSSType_Value, kSpeakNumeralKTable)
CSS_PROP_BACKENDONLY(speak-punctuation, speak_punctuation, SpeakPunctuation, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mSpeakPunctuation, eCSSType_Value, kSpeakPunctuationKTable)
CSS_PROP_BACKENDONLY(speech-rate, speech_rate, SpeechRate, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mSpeechRate, eCSSType_Value, kSpeechRateKTable)
CSS_PROP_BACKENDONLY(stress, stress, Stress, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mStress, eCSSType_Value, nsnull)
CSS_PROP_TABLE(table-layout, table_layout, TableLayout, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mLayout, eCSSType_Value, kTableLayoutKTable)
CSS_PROP_TEXT(text-align, text_align, TextAlign, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mTextAlign, eCSSType_Value, kTextAlignKTable)
CSS_PROP_TEXTRESET(text-decoration, text_decoration, TextDecoration, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mDecoration, eCSSType_Value, kTextDecorationKTable)
CSS_PROP_TEXT(text-indent, text_indent, TextIndent, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mTextIndent, eCSSType_Value, nsnull)
CSS_PROP_TEXT(text-shadow, text_shadow, TextShadow, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_VALUE_LIST_USES_COMMAS, Text, mTextShadow, eCSSType_ValueList, nsnull)
CSS_PROP_TEXT(text-transform, text_transform, TextTransform, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mTextTransform, eCSSType_Value, kTextTransformKTable)
CSS_PROP_DISPLAY(-moz-transform, _moz_transform, MozTransform, 0, Display, mTransform, eCSSType_ValueList, kDisplayKTable)
CSS_PROP_DISPLAY(-moz-transform-origin, _moz_transform_origin, MozTransformOrigin, 0, Display, mTransformOrigin, eCSSType_ValuePair, kBackgroundPositionKTable)
CSS_PROP_POSITION(top, top, Top, 0, Position, mOffset.mTop, eCSSType_Value, nsnull)
@ -509,32 +530,32 @@ CSS_PROP_TEXTRESET(unicode-bidi, unicode_bidi, UnicodeBidi, 0, Text, mUnicodeBid
CSS_PROP_USERINTERFACE(-moz-user-focus, user_focus, MozUserFocus, 0, UserInterface, mUserFocus, eCSSType_Value, kUserFocusKTable) // XXX bug 3935
CSS_PROP_USERINTERFACE(-moz-user-input, user_input, MozUserInput, 0, UserInterface, mUserInput, eCSSType_Value, kUserInputKTable) // XXX ??? // XXX bug 3935
CSS_PROP_USERINTERFACE(-moz-user-modify, user_modify, MozUserModify, 0, UserInterface, mUserModify, eCSSType_Value, kUserModifyKTable) // XXX bug 3935
CSS_PROP_UIRESET(-moz-user-select, user_select, MozUserSelect, 0, UserInterface, mUserSelect, eCSSType_Value, kUserSelectKTable) // XXX bug 3935
CSS_PROP_TEXTRESET(vertical-align, vertical_align, VerticalAlign, 0, Text, mVerticalAlign, eCSSType_Value, kVerticalAlignKTable)
CSS_PROP_UIRESET(-moz-user-select, user_select, MozUserSelect, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, UserInterface, mUserSelect, eCSSType_Value, kUserSelectKTable) // XXX bug 3935
CSS_PROP_TEXTRESET(vertical-align, vertical_align, VerticalAlign, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mVerticalAlign, eCSSType_Value, kVerticalAlignKTable)
CSS_PROP_VISIBILITY(visibility, visibility, Visibility, 0, Display, mVisibility, eCSSType_Value, kVisibilityKTable) // reflow for collapse
CSS_PROP_BACKENDONLY(voice-family, voice_family, VoiceFamily, 0, Aural, mVoiceFamily, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(volume, volume, Volume, 0, Aural, mVolume, eCSSType_Value, kVolumeKTable)
CSS_PROP_TEXT(white-space, white_space, WhiteSpace, 0, Text, mWhiteSpace, eCSSType_Value, kWhitespaceKTable)
CSS_PROP_BACKENDONLY(widows, widows, Widows, 0, Breaks, mWidows, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(voice-family, voice_family, VoiceFamily, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mVoiceFamily, eCSSType_Value, nsnull)
CSS_PROP_BACKENDONLY(volume, volume, Volume, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Aural, mVolume, eCSSType_Value, kVolumeKTable)
CSS_PROP_TEXT(white-space, white_space, WhiteSpace, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mWhiteSpace, eCSSType_Value, kWhitespaceKTable)
CSS_PROP_BACKENDONLY(widows, widows, Widows, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Breaks, mWidows, eCSSType_Value, nsnull)
CSS_PROP_POSITION(width, width, Width, 0, Position, mWidth, eCSSType_Value, kWidthKTable)
CSS_PROP_UIRESET(-moz-window-shadow, _moz_window_shadow, MozWindowShadow, 0, UserInterface, mWindowShadow, eCSSType_Value, kWindowShadowKTable)
CSS_PROP_TEXT(word-spacing, word_spacing, WordSpacing, 0, Text, mWordSpacing, eCSSType_Value, nsnull)
CSS_PROP_TEXT(word-wrap, word_wrap, WordWrap, 0, Text, mWordWrap, eCSSType_Value, kWordwrapKTable)
CSS_PROP_UIRESET(-moz-window-shadow, _moz_window_shadow, MozWindowShadow, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, UserInterface, mWindowShadow, eCSSType_Value, kWindowShadowKTable)
CSS_PROP_TEXT(word-spacing, word_spacing, WordSpacing, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mWordSpacing, eCSSType_Value, nsnull)
CSS_PROP_TEXT(word-wrap, word_wrap, WordWrap, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Text, mWordWrap, eCSSType_Value, kWordwrapKTable)
CSS_PROP_POSITION(z-index, z_index, ZIndex, 0, Position, mZIndex, eCSSType_Value, nsnull)
CSS_PROP_XUL(-moz-box-align, box_align, MozBoxAlign, 0, XUL, mBoxAlign, eCSSType_Value, kBoxAlignKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-direction, box_direction, MozBoxDirection, 0, XUL, mBoxDirection, eCSSType_Value, kBoxDirectionKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-flex, box_flex, MozBoxFlex, 0, XUL, mBoxFlex, eCSSType_Value, nsnull) // XXX bug 3935
CSS_PROP_XUL(-moz-box-orient, box_orient, MozBoxOrient, 0, XUL, mBoxOrient, eCSSType_Value, kBoxOrientKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-pack, box_pack, MozBoxPack, 0, XUL, mBoxPack, eCSSType_Value, kBoxPackKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-ordinal-group, box_ordinal_group, MozBoxOrdinalGroup, 0, XUL, mBoxOrdinal, eCSSType_Value, nsnull)
CSS_PROP_XUL(-moz-stack-sizing, stack_sizing, MozStackSizing, 0, XUL, mStackSizing, eCSSType_Value, kStackSizingKTable)
CSS_PROP_XUL(-moz-box-align, box_align, MozBoxAlign, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, XUL, mBoxAlign, eCSSType_Value, kBoxAlignKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-direction, box_direction, MozBoxDirection, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, XUL, mBoxDirection, eCSSType_Value, kBoxDirectionKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-flex, box_flex, MozBoxFlex, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, XUL, mBoxFlex, eCSSType_Value, nsnull) // XXX bug 3935
CSS_PROP_XUL(-moz-box-orient, box_orient, MozBoxOrient, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, XUL, mBoxOrient, eCSSType_Value, kBoxOrientKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-pack, box_pack, MozBoxPack, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, XUL, mBoxPack, eCSSType_Value, kBoxPackKTable) // XXX bug 3935
CSS_PROP_XUL(-moz-box-ordinal-group, box_ordinal_group, MozBoxOrdinalGroup, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, XUL, mBoxOrdinal, eCSSType_Value, nsnull)
CSS_PROP_XUL(-moz-stack-sizing, stack_sizing, MozStackSizing, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, XUL, mStackSizing, eCSSType_Value, kStackSizingKTable)
#ifdef MOZ_MATHML
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_FONT(-moz-script-level, script_level, ScriptLevel, 0, Font, mScriptLevel, eCSSType_Value, nsnull)
CSS_PROP_FONT(-moz-script-size-multiplier, script_size_multiplier, ScriptSizeMultiplier, 0, Font, mScriptSizeMultiplier, eCSSType_Value, nsnull)
CSS_PROP_FONT(-moz-script-min-size, script_min_size, ScriptMinSize, 0, Font, mScriptMinSize, eCSSType_Value, nsnull)
CSS_PROP_FONT(-moz-script-level, script_level, ScriptLevel, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mScriptLevel, eCSSType_Value, nsnull)
CSS_PROP_FONT(-moz-script-size-multiplier, script_size_multiplier, ScriptSizeMultiplier, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mScriptSizeMultiplier, eCSSType_Value, nsnull)
CSS_PROP_FONT(-moz-script-min-size, script_min_size, ScriptMinSize, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Font, mScriptMinSize, eCSSType_Value, nsnull)
#endif
#endif
@ -542,37 +563,37 @@ CSS_PROP_FONT(-moz-script-min-size, script_min_size, ScriptMinSize, 0, Font, mSc
// XXX treat SVG's CSS Properties as internal for now.
// Do we want to create an nsIDOMSVGCSS2Properties interface?
#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
CSS_PROP_SVGRESET(clip-path, clip_path, ClipPath, 0, SVG, mClipPath, eCSSType_Value, nsnull)
CSS_PROP_SVG(clip-rule, clip_rule, ClipRule, 0, SVG, mClipRule, eCSSType_Value, kFillRuleKTable)
CSS_PROP_SVG(color-interpolation, color_interpolation, ColorInterpolation, 0, SVG, mColorInterpolation, eCSSType_Value, kColorInterpolationKTable)
CSS_PROP_SVG(color-interpolation-filters, color_interpolation_filters, ColorInterpolationFilters, 0, SVG, mColorInterpolationFilters, eCSSType_Value, kColorInterpolationKTable)
CSS_PROP_SVGRESET(dominant-baseline, dominant_baseline, DominantBaseline, 0, SVG, mDominantBaseline, eCSSType_Value, kDominantBaselineKTable)
CSS_PROP_SVG(fill, fill, Fill, 0, SVG, mFill, eCSSType_ValuePair, nsnull)
CSS_PROP_SVG(fill-opacity, fill_opacity, FillOpacity, 0, SVG, mFillOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVG(fill-rule, fill_rule, FillRule, 0, SVG, mFillRule, eCSSType_Value, kFillRuleKTable)
CSS_PROP_SVGRESET(filter, filter, Filter, 0, SVG, mFilter, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(flood-color, flood_color, FloodColor, 0, SVG, mFloodColor, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(flood-opacity, flood_opacity, FloodOpacity, 0, SVG, mFloodOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(lighting-color, lighting_color, LightingColor, 0, SVG, mLightingColor, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(clip-path, clip_path, ClipPath, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mClipPath, eCSSType_Value, nsnull)
CSS_PROP_SVG(clip-rule, clip_rule, ClipRule, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mClipRule, eCSSType_Value, kFillRuleKTable)
CSS_PROP_SVG(color-interpolation, color_interpolation, ColorInterpolation, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mColorInterpolation, eCSSType_Value, kColorInterpolationKTable)
CSS_PROP_SVG(color-interpolation-filters, color_interpolation_filters, ColorInterpolationFilters, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mColorInterpolationFilters, eCSSType_Value, kColorInterpolationKTable)
CSS_PROP_SVGRESET(dominant-baseline, dominant_baseline, DominantBaseline, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mDominantBaseline, eCSSType_Value, kDominantBaselineKTable)
CSS_PROP_SVG(fill, fill, Fill, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mFill, eCSSType_ValuePair, nsnull)
CSS_PROP_SVG(fill-opacity, fill_opacity, FillOpacity, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mFillOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVG(fill-rule, fill_rule, FillRule, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mFillRule, eCSSType_Value, kFillRuleKTable)
CSS_PROP_SVGRESET(filter, filter, Filter, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mFilter, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(flood-color, flood_color, FloodColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mFloodColor, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(flood-opacity, flood_opacity, FloodOpacity, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mFloodOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(lighting-color, lighting_color, LightingColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mLightingColor, eCSSType_Value, nsnull)
CSS_PROP_SHORTHAND(marker, marker, Marker, 0)
CSS_PROP_SVG(marker-end, marker_end, MarkerEnd, 0, SVG, mMarkerEnd, eCSSType_Value, nsnull)
CSS_PROP_SVG(marker-mid, marker_mid, MarkerMid, 0, SVG, mMarkerMid, eCSSType_Value, nsnull)
CSS_PROP_SVG(marker-start, marker_start, MarkerStart, 0, SVG, mMarkerStart, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(mask, mask, Mask, 0, SVG, mMask, eCSSType_Value, nsnull)
CSS_PROP_SVG(pointer-events, pointer_events, PointerEvents, 0, SVG, mPointerEvents, eCSSType_Value, kPointerEventsKTable)
CSS_PROP_SVG(shape-rendering, shape_rendering, ShapeRendering, 0, SVG, mShapeRendering, eCSSType_Value, kShapeRenderingKTable)
CSS_PROP_SVGRESET(stop-color, stop_color, StopColor, 0, SVG, mStopColor, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(stop-opacity, stop_opacity, StopOpacity, 0, SVG, mStopOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke, stroke, Stroke, 0, SVG, mStroke, eCSSType_ValuePair, nsnull)
CSS_PROP_SVG(stroke-dasharray, stroke_dasharray, StrokeDasharray, CSS_PROPERTY_VALUE_LIST_USES_COMMAS, SVG, mStrokeDasharray, eCSSType_ValueList, nsnull)
CSS_PROP_SVG(stroke-dashoffset, stroke_dashoffset, StrokeDashoffset, 0, SVG, mStrokeDashoffset, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke-linecap, stroke_linecap, StrokeLinecap, 0, SVG, mStrokeLinecap, eCSSType_Value, kStrokeLinecapKTable)
CSS_PROP_SVG(stroke-linejoin, stroke_linejoin, StrokeLinejoin, 0, SVG, mStrokeLinejoin, eCSSType_Value, kStrokeLinejoinKTable)
CSS_PROP_SVG(stroke-miterlimit, stroke_miterlimit, StrokeMiterlimit, 0, SVG, mStrokeMiterlimit, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke-opacity, stroke_opacity, StrokeOpacity, 0, SVG, mStrokeOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke-width, stroke_width, StrokeWidth, 0, SVG, mStrokeWidth, eCSSType_Value, nsnull)
CSS_PROP_SVG(text-anchor, text_anchor, TextAnchor, 0, SVG, mTextAnchor, eCSSType_Value, kTextAnchorKTable)
CSS_PROP_SVG(text-rendering, text_rendering, TextRendering, 0, SVG, mTextRendering, eCSSType_Value, kTextRenderingKTable)
CSS_PROP_SVG(marker-end, marker_end, MarkerEnd, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mMarkerEnd, eCSSType_Value, nsnull)
CSS_PROP_SVG(marker-mid, marker_mid, MarkerMid, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mMarkerMid, eCSSType_Value, nsnull)
CSS_PROP_SVG(marker-start, marker_start, MarkerStart, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mMarkerStart, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(mask, mask, Mask, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mMask, eCSSType_Value, nsnull)
CSS_PROP_SVG(pointer-events, pointer_events, PointerEvents, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mPointerEvents, eCSSType_Value, kPointerEventsKTable)
CSS_PROP_SVG(shape-rendering, shape_rendering, ShapeRendering, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mShapeRendering, eCSSType_Value, kShapeRenderingKTable)
CSS_PROP_SVGRESET(stop-color, stop_color, StopColor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStopColor, eCSSType_Value, nsnull)
CSS_PROP_SVGRESET(stop-opacity, stop_opacity, StopOpacity, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStopOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke, stroke, Stroke, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStroke, eCSSType_ValuePair, nsnull)
CSS_PROP_SVG(stroke-dasharray, stroke_dasharray, StrokeDasharray, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE | CSS_PROPERTY_VALUE_LIST_USES_COMMAS, SVG, mStrokeDasharray, eCSSType_ValueList, nsnull)
CSS_PROP_SVG(stroke-dashoffset, stroke_dashoffset, StrokeDashoffset, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStrokeDashoffset, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke-linecap, stroke_linecap, StrokeLinecap, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStrokeLinecap, eCSSType_Value, kStrokeLinecapKTable)
CSS_PROP_SVG(stroke-linejoin, stroke_linejoin, StrokeLinejoin, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStrokeLinejoin, eCSSType_Value, kStrokeLinejoinKTable)
CSS_PROP_SVG(stroke-miterlimit, stroke_miterlimit, StrokeMiterlimit, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStrokeMiterlimit, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke-opacity, stroke_opacity, StrokeOpacity, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStrokeOpacity, eCSSType_Value, nsnull)
CSS_PROP_SVG(stroke-width, stroke_width, StrokeWidth, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mStrokeWidth, eCSSType_Value, nsnull)
CSS_PROP_SVG(text-anchor, text_anchor, TextAnchor, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mTextAnchor, eCSSType_Value, kTextAnchorKTable)
CSS_PROP_SVG(text-rendering, text_rendering, TextRendering, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, SVG, mTextRendering, eCSSType_Value, kTextRenderingKTable)
#endif /* !defined (CSS_PROP_LIST_EXCLUDE_INTERNAL) */
#endif
@ -583,11 +604,11 @@ CSS_PROP_SVG(text-rendering, text_rendering, TextRendering, 0, SVG, mTextRenderi
// The first 3 parameters don't matter, but some compilers don't like
// empty arguments to macros.
#ifdef CSS_PROP_INCLUDE_NOT_CSS
CSS_PROP_VISIBILITY(X, X, X, 0, Display, mLang, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, 0, Table, mFrame, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, 0, Table, mRules, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, 0, Table, mCols, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, 0, Table, mSpan, eCSSType_Value, nsnull)
CSS_PROP_VISIBILITY(X, X, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Display, mLang, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mFrame, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mRules, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mCols, eCSSType_Value, nsnull)
CSS_PROP_TABLE(X, X, X, CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE, Table, mSpan, eCSSType_Value, nsnull)
#endif /* defined(CSS_PROP_INCLUDE_NOT_CSS) */
#ifdef USED_CSS_PROP

Просмотреть файл

@ -54,8 +54,12 @@
// A property that is a *-ltr-source or *-rtl-source property for one of
// the directional pseudo-shorthand properties.
#define CSS_PROPERTY_DIRECTIONAL_SOURCE (1<<0)
#define CSS_PROPERTY_VALUE_LIST_USES_COMMAS (1<<1) /* otherwise spaces */
#define CSS_PROPERTY_DIRECTIONAL_SOURCE (1<<0)
#define CSS_PROPERTY_VALUE_LIST_USES_COMMAS (1<<1) /* otherwise spaces */
#define CSS_PROPERTY_APPLIES_TO_FIRST_LETTER (1<<2)
#define CSS_PROPERTY_APPLIES_TO_FIRST_LINE (1<<3)
#define CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE \
(CSS_PROPERTY_APPLIES_TO_FIRST_LETTER | CSS_PROPERTY_APPLIES_TO_FIRST_LINE)
class nsCSSProps {
public:

Просмотреть файл

@ -38,7 +38,6 @@
/*
* style sheet and style rule processor representing style attributes
* and some additional overrides
*/
#include "nsIHTMLCSSStyleSheet.h"
@ -56,284 +55,6 @@
#include "nsRuleWalker.h"
#include "nsRuleData.h"
/*
* The CSSFirstLetterRule and CSSFirstLineRule exist so that we can fix
* up the style data so that we don't have non-default values for the
* properties that don't apply to :first-letter and :first-line.
*
* CSSDisablePropsRule is a common base class for both the
* CSSFirstLetterRule and CSSFirstLineRule.
*/
class CSSDisablePropsRule : public nsIStyleRule {
public:
CSSDisablePropsRule();
virtual ~CSSDisablePropsRule();
NS_DECL_ISUPPORTS
// Call this something else so that this class still has pure virtual
// functions.
void CommonMapRuleInfoInto(nsRuleData* aRuleData);
#ifdef DEBUG
NS_IMETHOD List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
protected:
nsCSSValueList mInheritList;
nsCSSValueList mNoneList;
nsCSSValuePairList mInheritQuotes;
nsCSSValuePairList mNoneCounter;
};
CSSDisablePropsRule::CSSDisablePropsRule()
{
nsCSSValue none(eCSSUnit_None);
mNoneCounter.mXValue = none;
mNoneList.mValue = none;
nsCSSValue inherit(eCSSUnit_Inherit);
mInheritList.mValue = inherit;
mInheritQuotes.mXValue = inherit;
}
class CSSFirstLineRule : public CSSDisablePropsRule {
public:
CSSFirstLineRule() {}
NS_IMETHOD MapRuleInfoInto(nsRuleData* aRuleData);
};
class CSSFirstLetterRule : public CSSDisablePropsRule {
public:
CSSFirstLetterRule() {}
NS_IMETHOD MapRuleInfoInto(nsRuleData* aRuleData);
};
CSSDisablePropsRule::~CSSDisablePropsRule()
{
}
NS_IMPL_ISUPPORTS1(CSSDisablePropsRule, nsIStyleRule)
#ifdef DEBUG
NS_IMETHODIMP
CSSDisablePropsRule::List(FILE* out, PRInt32 aIndent) const
{
return NS_OK;
}
#endif
// -----------------------------------------------------------
/*
* Note: These rule mapping functions, unlike practically all others,
* will overwrite the properties even if they're not |eCSSUnit_Null|.
* XXX This is only a partial fix for the fact that they should be
* higher in the cascade (at the very top). It doesn't work in the case
* where something higher in the cascade fully specifies the struct.
*
* XXX This should be cleaned up once we implement eCSSUnit_Initial
* throughout.
*/
void
CSSDisablePropsRule::CommonMapRuleInfoInto(nsRuleData* aData)
{
/*
* Common code for disabling the properties that apply neither to
* :first-letter nor to :first-line.
*/
// Disable 'unicode-bidi'.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(TextReset)) {
nsCSSValue normal(eCSSUnit_Normal);
aData->mTextData->mUnicodeBidi = normal;
}
// NOTE: 'text-align', 'text-indent', and 'white-space' should not be
// handled by the frames so we don't need to bother.
// Disable everything in the nsRuleDataDisplay struct except 'float'.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Visibility)) {
nsCSSValue inherit(eCSSUnit_Inherit);
aData->mDisplayData->mVisibility = inherit;
aData->mDisplayData->mDirection = inherit;
}
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Display)) {
nsCSSValue none(eCSSUnit_None);
aData->mDisplayData->mAppearance = none;
nsCSSValue autovalue(eCSSUnit_Auto);
aData->mDisplayData->mClip.mTop = autovalue;
aData->mDisplayData->mClip.mRight = autovalue;
aData->mDisplayData->mClip.mBottom = autovalue;
aData->mDisplayData->mClip.mLeft = autovalue;
nsCSSValue one(1.0f, eCSSUnit_Number);
aData->mDisplayData->mOpacity = one;
nsCSSValue inlinevalue(NS_STYLE_DISPLAY_INLINE, eCSSUnit_Enumerated);
aData->mDisplayData->mDisplay = inlinevalue;
aData->mDisplayData->mBinding = none;
nsCSSValue staticposition(NS_STYLE_POSITION_STATIC, eCSSUnit_Enumerated);
aData->mDisplayData->mPosition = staticposition;
nsCSSValue visible(NS_STYLE_OVERFLOW_VISIBLE, eCSSUnit_Enumerated);
aData->mDisplayData->mOverflowX = visible;
aData->mDisplayData->mOverflowY = visible;
aData->mDisplayData->mClear = none;
aData->mDisplayData->mTransform = &mNoneList;
nsCSSValue fiftyPercent(0.5f, eCSSUnit_Percent);
aData->mDisplayData->mTransformOrigin.mXValue = fiftyPercent;
aData->mDisplayData->mTransformOrigin.mYValue = fiftyPercent;
// Nobody will care about 'break-before' or 'break-after', since
// they only apply to blocks (assuming we implement them correctly).
}
// NOTE: We'll never do anything with what's in nsCSSList,
// nsCSSTable, nsCSSBreaks, nsCSSPage, nsCSSAural, nsCSSXUL, or
// nsCSSSVG, so don't bother.
// Disable everything in the position struct.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Position)) {
nsCSSValue autovalue(eCSSUnit_Auto);
nsCSSValue none(eCSSUnit_None);
nsCSSValue zero(0.0f, eCSSUnit_Point);
aData->mPositionData->mOffset.mTop = autovalue;
aData->mPositionData->mOffset.mRight = autovalue;
aData->mPositionData->mOffset.mBottom = autovalue;
aData->mPositionData->mOffset.mLeft = autovalue;
aData->mPositionData->mWidth = autovalue;
aData->mPositionData->mMinWidth = zero;
aData->mPositionData->mMaxWidth = none;
aData->mPositionData->mHeight = autovalue;
aData->mPositionData->mMinHeight = zero;
aData->mPositionData->mMaxHeight = none;
nsCSSValue content(NS_STYLE_BOX_SIZING_CONTENT, eCSSUnit_Enumerated);
aData->mPositionData->mBoxSizing = content;
aData->mPositionData->mZIndex = autovalue;
}
// Disable everything in the Content struct.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Content)) {
// Don't bother resetting 'content'.
aData->mContentData->mCounterIncrement = &mNoneCounter;
aData->mContentData->mCounterReset = &mNoneCounter;
nsCSSValue autovalue(eCSSUnit_Auto);
aData->mContentData->mMarkerOffset = autovalue;
}
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Quotes)) {
aData->mContentData->mQuotes = &mInheritQuotes;
}
// Disable everything in the UserInterface struct.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(UserInterface)) {
nsCSSValue inherit(eCSSUnit_Inherit);
aData->mUserInterfaceData->mUserInput = inherit;
aData->mUserInterfaceData->mUserModify = inherit;
aData->mUserInterfaceData->mUserFocus = inherit;
aData->mUserInterfaceData->mCursor = &mInheritList;
}
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(UIReset)) {
nsCSSValue autovalue(eCSSUnit_Auto);
nsCSSValue none(eCSSUnit_None);
// Don't bother with '-moz-force-broken-image-icon' since it's only
// half a property.
// Don't bother with '-moz-user-select' because there's no way to
// specify the initial value.
}
// Disable all outline properties.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Outline)) {
nsCSSValue none(NS_STYLE_BORDER_STYLE_NONE, eCSSUnit_Enumerated);
aData->mMarginData->mOutlineStyle = none;
}
}
NS_IMETHODIMP
CSSFirstLineRule::MapRuleInfoInto(nsRuleData* aData)
{
/*
* See CSS2.1 section 5.12.1, which says that the properties that apply
* to :first-line are: font properties, color properties, background
* properties, 'word-spacing', 'letter-spacing', 'text-decoration',
* 'vertical-align', 'text-transform', and 'line-height'.
*
* We also allow 'text-shadow', which was listed in CSS2 (where the
* property existed).
*/
CommonMapRuleInfoInto(aData);
// Disable 'float'.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Display)) {
nsCSSValue none(eCSSUnit_None);
aData->mDisplayData->mFloat = none;
}
// Disable border properties, margin properties, and padding
// properties.
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Border)) {
nsCSSValue none(NS_STYLE_BORDER_STYLE_NONE, eCSSUnit_Enumerated);
aData->mMarginData->mBorderStyle.mTop = none;
aData->mMarginData->mBorderStyle.mRight = none;
aData->mMarginData->mBorderStyle.mBottom = none;
aData->mMarginData->mBorderStyle.mLeft = none;
}
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Margin)) {
nsCSSValue zero(0.0f, eCSSUnit_Point);
aData->mMarginData->mMargin.mTop = zero;
aData->mMarginData->mMargin.mRight = zero;
aData->mMarginData->mMargin.mBottom = zero;
aData->mMarginData->mMargin.mLeft = zero;
}
if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Padding)) {
nsCSSValue zero(0.0f, eCSSUnit_Point);
aData->mMarginData->mPadding.mTop = zero;
aData->mMarginData->mPadding.mRight = zero;
aData->mMarginData->mPadding.mBottom = zero;
aData->mMarginData->mPadding.mLeft = zero;
}
return NS_OK;
}
NS_IMETHODIMP
CSSFirstLetterRule::MapRuleInfoInto(nsRuleData* aData)
{
/*
* See CSS2.1 section 5.12.2, which says that the properties that
* apply to :first-letter are: font properties, 'text-decoration',
* 'text-transform', 'letter-spacing', 'word-spacing' (when
* appropriate), 'line-height', 'float', 'vertical-align' (only if
* 'float' is 'none'), margin properties, padding properties, border
* properties, 'color', and background properties.
*/
CommonMapRuleInfoInto(aData);
// NOTE: 'vertical-align' is only supposed to be relevant if 'float'
// is 'none', but we don't do anything with it if 'float' is not none,
// so we don't need to disable it.
return NS_OK;
}
// -----------------------------------------------------------
class HTMLCSSStyleSheetImpl : public nsIHTMLCSSStyleSheet,
@ -392,9 +113,6 @@ protected:
protected:
nsIURI* mURL;
nsIDocument* mDocument;
CSSFirstLineRule* mFirstLineRule;
CSSFirstLetterRule* mFirstLetterRule;
};
@ -402,18 +120,13 @@ HTMLCSSStyleSheetImpl::HTMLCSSStyleSheetImpl()
: nsIHTMLCSSStyleSheet(),
mRefCnt(0),
mURL(nsnull),
mDocument(nsnull),
mFirstLineRule(nsnull),
mFirstLetterRule(nsnull)
mDocument(nsnull)
{
}
HTMLCSSStyleSheetImpl::~HTMLCSSStyleSheetImpl()
{
NS_RELEASE(mURL);
NS_IF_RELEASE(mFirstLineRule);
NS_IF_RELEASE(mFirstLetterRule);
}
NS_IMPL_ISUPPORTS3(HTMLCSSStyleSheetImpl,
@ -439,32 +152,6 @@ HTMLCSSStyleSheetImpl::RulesMatching(ElementRuleProcessorData* aData)
NS_IMETHODIMP
HTMLCSSStyleSheetImpl::RulesMatching(PseudoRuleProcessorData* aData)
{
// We only want to add these rules if there are real :first-letter or
// :first-line rules that cause a pseudo-element frame to be created.
// Otherwise the use of ProbePseudoStyleContextFor will prevent frame
// creation, and adding rules here would cause it.
if (aData->mRuleWalker->AtRoot())
return NS_OK;
nsIAtom* pseudoTag = aData->mPseudoTag;
if (pseudoTag == nsCSSPseudoElements::firstLine) {
if (!mFirstLineRule) {
mFirstLineRule = new CSSFirstLineRule();
if (!mFirstLineRule)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(mFirstLineRule);
}
aData->mRuleWalker->Forward(mFirstLineRule);
}
else if (pseudoTag == nsCSSPseudoElements::firstLetter) {
if (!mFirstLetterRule) {
mFirstLetterRule = new CSSFirstLetterRule();
if (!mFirstLetterRule)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(mFirstLetterRule);
}
aData->mRuleWalker->Forward(mFirstLetterRule);
}
return NS_OK;
}
@ -518,8 +205,6 @@ HTMLCSSStyleSheetImpl::Reset(nsIURI* aURL)
mURL = aURL;
NS_ADDREF(mURL);
NS_IF_RELEASE(mFirstLineRule);
NS_IF_RELEASE(mFirstLetterRule);
return NS_OK;
}
@ -556,8 +241,8 @@ HTMLCSSStyleSheetImpl::GetType(nsString& aType) const
NS_IMETHODIMP_(PRBool)
HTMLCSSStyleSheetImpl::HasRules() const
{
return PR_TRUE; // We always have rules, since mFirstLineRule and
// mFirstLetterRule are created on request.
// Say we always have rules, since we don't know.
return PR_TRUE;
}
NS_IMETHODIMP

Просмотреть файл

@ -37,7 +37,6 @@
/*
* style sheet and style rule processor representing style attributes
* and some additional overrides
*/
#ifndef nsIHTMLCSSStyleSheet_h___

Просмотреть файл

@ -71,6 +71,7 @@
#include "nsStyleStructInlines.h"
#include "nsStyleTransformMatrix.h"
#include "nsCSSKeywords.h"
#include "nsCSSProps.h"
/*
* For storage of an |nsRuleNode|'s children in a PLDHashTable.
@ -802,7 +803,11 @@ nsRuleNode::PropagateDependentBit(PRUint32 aBit, nsRuleNode* aHighestNode)
struct PropertyCheckData {
size_t offset;
// These duplicate the same data in nsCSSProps::kTypeTable and
// kFlagsTable, except that we have some extra entries for
// CSS_PROP_INCLUDE_NOT_CSS.
nsCSSType type;
PRUint32 flags;
};
/*
@ -925,170 +930,151 @@ CheckColorCallback(const nsRuleDataStruct& aData,
// structs but not nsCSS*
#define CSS_PROP_INCLUDE_NOT_CSS
#define CHECK_DATA_FOR_PROPERTY(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_, flags_ },
static const PropertyCheckData FontCheckProperties[] = {
#define CSS_PROP_FONT(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_FONT CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_FONT
};
static const PropertyCheckData DisplayCheckProperties[] = {
#define CSS_PROP_DISPLAY(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_DISPLAY CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_DISPLAY
};
static const PropertyCheckData VisibilityCheckProperties[] = {
#define CSS_PROP_VISIBILITY(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_VISIBILITY CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_VISIBILITY
};
static const PropertyCheckData MarginCheckProperties[] = {
#define CSS_PROP_MARGIN(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_MARGIN CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_MARGIN
};
static const PropertyCheckData BorderCheckProperties[] = {
#define CSS_PROP_BORDER(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_BORDER CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_BORDER
};
static const PropertyCheckData PaddingCheckProperties[] = {
#define CSS_PROP_PADDING(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_PADDING CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_PADDING
};
static const PropertyCheckData OutlineCheckProperties[] = {
#define CSS_PROP_OUTLINE(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_OUTLINE CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_OUTLINE
};
static const PropertyCheckData ListCheckProperties[] = {
#define CSS_PROP_LIST(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_LIST CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_LIST
};
static const PropertyCheckData ColorCheckProperties[] = {
#define CSS_PROP_COLOR(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_COLOR CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_COLOR
};
static const PropertyCheckData BackgroundCheckProperties[] = {
#define CSS_PROP_BACKGROUND(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_BACKGROUND CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_BACKGROUND
};
static const PropertyCheckData PositionCheckProperties[] = {
#define CSS_PROP_POSITION(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_POSITION CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_POSITION
};
static const PropertyCheckData TableCheckProperties[] = {
#define CSS_PROP_TABLE(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_TABLE CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_TABLE
};
static const PropertyCheckData TableBorderCheckProperties[] = {
#define CSS_PROP_TABLEBORDER(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_TABLEBORDER CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_TABLEBORDER
};
static const PropertyCheckData ContentCheckProperties[] = {
#define CSS_PROP_CONTENT(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_CONTENT CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_CONTENT
};
static const PropertyCheckData QuotesCheckProperties[] = {
#define CSS_PROP_QUOTES(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_QUOTES CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_QUOTES
};
static const PropertyCheckData TextCheckProperties[] = {
#define CSS_PROP_TEXT(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_TEXT CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_TEXT
};
static const PropertyCheckData TextResetCheckProperties[] = {
#define CSS_PROP_TEXTRESET(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_TEXTRESET CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_TEXTRESET
};
static const PropertyCheckData UserInterfaceCheckProperties[] = {
#define CSS_PROP_USERINTERFACE(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_USERINTERFACE CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_USERINTERFACE
};
static const PropertyCheckData UIResetCheckProperties[] = {
#define CSS_PROP_UIRESET(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_UIRESET CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_UIRESET
};
static const PropertyCheckData XULCheckProperties[] = {
#define CSS_PROP_XUL(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_XUL CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_XUL
};
#ifdef MOZ_SVG
static const PropertyCheckData SVGCheckProperties[] = {
#define CSS_PROP_SVG(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_SVG CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_SVG
};
static const PropertyCheckData SVGResetCheckProperties[] = {
#define CSS_PROP_SVGRESET(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_SVGRESET CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_SVGRESET
};
#endif
static const PropertyCheckData ColumnCheckProperties[] = {
#define CSS_PROP_COLUMN(name_, id_, method_, flags_, datastruct_, member_, type_, kwtable_) \
{ offsetof(nsRuleData##datastruct_, member_), type_ },
#define CSS_PROP_COLUMN CHECK_DATA_FOR_PROPERTY
#include "nsCSSPropList.h"
#undef CSS_PROP_COLUMN
};
#undef CSS_PROP_INCLUDE_NOT_CSS
#undef CHECK_DATA_FOR_PROPERTY
static const StructCheckData gCheckProperties[] = {
@ -1106,6 +1092,13 @@ static const StructCheckData gCheckProperties[] = {
// XXXldb Taking the address of a reference is evil.
inline nsCSSValue&
ValueAtOffset(nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
return * reinterpret_cast<nsCSSValue*>
(reinterpret_cast<char*>(&aRuleDataStruct) + aOffset);
}
inline const nsCSSValue&
ValueAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
@ -1113,6 +1106,13 @@ ValueAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
(reinterpret_cast<const char*>(&aRuleDataStruct) + aOffset);
}
inline nsCSSRect*
RectAtOffset(nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
return reinterpret_cast<nsCSSRect*>
(reinterpret_cast<char*>(&aRuleDataStruct) + aOffset);
}
inline const nsCSSRect*
RectAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
@ -1120,6 +1120,13 @@ RectAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
(reinterpret_cast<const char*>(&aRuleDataStruct) + aOffset);
}
inline nsCSSValuePair*
ValuePairAtOffset(nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
return reinterpret_cast<nsCSSValuePair*>
(reinterpret_cast<char*>(&aRuleDataStruct) + aOffset);
}
inline const nsCSSValuePair*
ValuePairAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
@ -1127,6 +1134,13 @@ ValuePairAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
(reinterpret_cast<const char*>(&aRuleDataStruct) + aOffset);
}
inline nsCSSValueList*&
ValueListAtOffset(nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
return * reinterpret_cast<nsCSSValueList**>
(reinterpret_cast<char*>(&aRuleDataStruct) + aOffset);
}
inline const nsCSSValueList*
ValueListAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
@ -1134,11 +1148,11 @@ ValueListAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
(reinterpret_cast<const char*>(&aRuleDataStruct) + aOffset);
}
inline const nsCSSValueList**
ValueListArrayAtOffset(const nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
inline nsCSSValuePairList*&
ValuePairListAtOffset(nsRuleDataStruct& aRuleDataStruct, size_t aOffset)
{
return * reinterpret_cast<const nsCSSValueList**const*>
(reinterpret_cast<const char*>(&aRuleDataStruct) + aOffset);
return * reinterpret_cast<nsCSSValuePairList**>
(reinterpret_cast<char*>(&aRuleDataStruct) + aOffset);
}
inline const nsCSSValuePairList*
@ -1211,11 +1225,11 @@ nsRuleNode::CheckSpecifiedProperties(const nsStyleStructID aSID,
case eCSSType_ValuePairList:
{
++total;
const nsCSSValuePairList* quotes =
const nsCSSValuePairList* valuePairList =
ValuePairListAtOffset(aRuleDataStruct, prop->offset);
if (quotes) {
if (valuePairList) {
++specified;
if (eCSSUnit_Inherit == quotes->mXValue.GetUnit()) {
if (eCSSUnit_Inherit == valuePairList->mXValue.GetUnit()) {
++inherited;
}
}
@ -1536,6 +1550,64 @@ nsRuleNode::GetSVGResetData(nsStyleContext* aContext)
}
#endif
// If we need to restrict which properties apply to the style context,
// return the bit to check in nsCSSProp's flags table. Otherwise,
// return 0.
inline PRUint32
GetPseudoRestriction(nsStyleContext *aContext)
{
// This needs to match nsStyleSet::WalkRestrictionRule.
PRUint32 pseudoRestriction = 0;
nsIAtom *pseudoType = aContext->GetPseudoType();
if (pseudoType) {
if (pseudoType == nsCSSPseudoElements::firstLetter) {
pseudoRestriction = CSS_PROPERTY_APPLIES_TO_FIRST_LETTER;
} else if (pseudoType == nsCSSPseudoElements::firstLine) {
pseudoRestriction = CSS_PROPERTY_APPLIES_TO_FIRST_LINE;
}
}
return pseudoRestriction;
}
static void
UnsetPropertiesWithoutFlags(const nsStyleStructID aSID,
nsRuleDataStruct& aRuleDataStruct,
PRUint32 aFlags)
{
NS_ASSERTION(aFlags != 0, "aFlags must be nonzero");
const StructCheckData *structData = gCheckProperties + aSID;
for (const PropertyCheckData *prop = structData->props,
*prop_end = prop + structData->nprops;
prop != prop_end;
++prop) {
if ((prop->flags & aFlags) == aFlags)
// Don't unset the property.
continue;
switch (prop->type) {
case eCSSType_Value:
ValueAtOffset(aRuleDataStruct, prop->offset).Reset();
break;
case eCSSType_Rect:
RectAtOffset(aRuleDataStruct, prop->offset)->Reset();
break;
case eCSSType_ValuePair:
ValuePairAtOffset(aRuleDataStruct, prop->offset)->Reset();
break;
case eCSSType_ValueList:
ValueListAtOffset(aRuleDataStruct, prop->offset) = nsnull;
break;
case eCSSType_ValuePairList:
ValuePairListAtOffset(aRuleDataStruct, prop->offset) = nsnull;
break;
default:
NS_NOTREACHED("unknown type");
break;
}
}
}
const void*
nsRuleNode::WalkRuleTree(const nsStyleStructID aSID,
nsStyleContext* aContext,
@ -1613,6 +1685,19 @@ nsRuleNode::WalkRuleTree(const nsStyleStructID aSID,
ruleNode = ruleNode->mParent;
}
// If needed, unset the properties that don't have a flag that allows
// them to be set for this style context. (For example, only some
// properties apply to :first-line and :first-letter.)
PRUint32 pseudoRestriction = GetPseudoRestriction(aContext);
if (pseudoRestriction) {
UnsetPropertiesWithoutFlags(aSID, *aSpecificData, pseudoRestriction);
// Recompute |detail| based on the restrictions we just applied.
// We can adjust |detail| arbitrarily because of the restriction
// rule added in nsStyleSet::WalkRestrictionRule.
detail = CheckSpecifiedProperties(aSID, *aSpecificData);
}
NS_ASSERTION(!startStruct || (detail != eRuleFullReset &&
detail != eRuleFullMixed &&
detail != eRuleFullInherited),

Просмотреть файл

@ -58,6 +58,22 @@
#include "nsIFrame.h"
#include "nsContentUtils.h"
NS_IMPL_ISUPPORTS1(nsEmptyStyleRule, nsIStyleRule)
NS_IMETHODIMP
nsEmptyStyleRule::MapRuleInfoInto(nsRuleData* aRuleData)
{
return NS_OK;
}
#ifdef DEBUG
NS_IMETHODIMP
nsEmptyStyleRule::List(FILE* out, PRInt32 aIndent) const
{
return NS_OK;
}
#endif
static const nsStyleSet::sheetType gCSSSheetTypes[] = {
nsStyleSet::eAgentSheet,
nsStyleSet::eUserSheet,
@ -80,6 +96,12 @@ nsStyleSet::nsStyleSet()
nsresult
nsStyleSet::Init(nsPresContext *aPresContext)
{
mFirstLineRule = new nsEmptyStyleRule;
mFirstLetterRule = new nsEmptyStyleRule;
if (!mFirstLineRule || !mFirstLetterRule) {
return NS_ERROR_OUT_OF_MEMORY;
}
if (!BuildDefaultStyleData(aPresContext)) {
mDefaultStyleData.Destroy(0, aPresContext);
return NS_ERROR_OUT_OF_MEMORY;
@ -689,6 +711,17 @@ nsStyleSet::ResolveStyleForNonElement(nsStyleContext* aParentContext)
return result;
}
void
nsStyleSet::WalkRestrictionRule(nsIAtom* aPseudoType)
{
// This needs to match GetPseudoRestriction in nsRuleNode.cpp.
if (aPseudoType) {
if (aPseudoType == nsCSSPseudoElements::firstLetter)
mRuleWalker->Forward(mFirstLetterRule);
else if (aPseudoType == nsCSSPseudoElements::firstLine)
mRuleWalker->Forward(mFirstLineRule);
}
}
static PRBool
EnumPseudoRulesMatching(nsIStyleRuleProcessor* aProcessor, void* aData)
@ -725,6 +758,7 @@ nsStyleSet::ResolvePseudoStyleFor(nsIContent* aParentContent,
if (aPseudoTag && presContext) {
PseudoRuleProcessorData data(presContext, aParentContent, aPseudoTag,
aComparator, mRuleWalker);
WalkRestrictionRule(aPseudoTag);
FileRules(EnumPseudoRulesMatching, &data);
result = GetContext(presContext, aParentContext, aPseudoTag).get();
@ -762,9 +796,12 @@ nsStyleSet::ProbePseudoStyleFor(nsIContent* aParentContent,
if (aPseudoTag && presContext) {
PseudoRuleProcessorData data(presContext, aParentContent, aPseudoTag,
nsnull, mRuleWalker);
WalkRestrictionRule(aPseudoTag);
// not the root if there was a restriction rule
nsRuleNode *adjustedRoot = mRuleWalker->GetCurrentNode();
FileRules(EnumPseudoRulesMatching, &data);
if (!mRuleWalker->AtRoot())
if (mRuleWalker->GetCurrentNode() != adjustedRoot)
result = GetContext(presContext, aParentContext, aPseudoTag).get();
// Now reset the walker back to the root of the tree.

Просмотреть файл

@ -54,10 +54,20 @@
#include "nsTArray.h"
#include "nsCOMArray.h"
#include "nsAutoPtr.h"
#include "nsIStyleRule.h"
class nsIURI;
class nsCSSFontFaceRule;
class nsEmptyStyleRule : public nsIStyleRule
{
NS_DECL_ISUPPORTS
NS_IMETHOD MapRuleInfoInto(nsRuleData* aRuleData);
#ifdef DEBUG
NS_IMETHOD List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
};
// The style set object is created by the document viewer and ownership is
// then handed off to the PresShell. Only the PresShell should delete a
// style set.
@ -232,6 +242,10 @@ class nsStyleSet
void AddImportantRules(nsRuleNode* aCurrLevelNode,
nsRuleNode* aLastPrevLevelNode);
// Move mRuleWalker forward by the appropriate rule if we need to add
// a rule due to property restrictions on pseudo-elements.
void WalkRestrictionRule(nsIAtom* aPseudoType);
#ifdef DEBUG
// Just like AddImportantRules except it doesn't actually add anything; it
// just asserts that there are no important rules between aCurrLevelNode and
@ -287,6 +301,10 @@ class nsStyleSet
PRInt32 mDestroyedCount; // used to batch style context GC
nsTArray<nsStyleContext*> mRoots; // style contexts with no parent
// Empty style rules to force things that restrict which properties
// apply into different branches of the rule tree.
nsRefPtr<nsEmptyStyleRule> mFirstLineRule, mFirstLetterRule;
PRUint16 mBatching;
nsRuleNode* mOldRuleTree; // Old rule tree; used during tree reconstruction