Index: Source/core/css/resolver/StyleAdjuster.cpp |
diff --git a/Source/core/css/resolver/StyleAdjuster.cpp b/Source/core/css/resolver/StyleAdjuster.cpp |
index d426be1465e3c5f3da4b3018b2e93a78889e052e..215d499af052796dcfadab339bcc6cb48c84e9c4 100644 |
--- a/Source/core/css/resolver/StyleAdjuster.cpp |
+++ b/Source/core/css/resolver/StyleAdjuster.cpp |
@@ -36,6 +36,7 @@ |
#include "core/dom/Element.h" |
#include "core/html/HTMLIFrameElement.h" |
#include "core/html/HTMLInputElement.h" |
+#include "core/html/HTMLTableCellElement.h" |
#include "core/html/HTMLTextAreaElement.h" |
#include "core/frame/FrameView.h" |
#include "core/frame/Settings.h" |
@@ -43,6 +44,7 @@ |
#include "core/rendering/style/GridPosition.h" |
#include "core/rendering/style/RenderStyle.h" |
#include "core/rendering/style/RenderStyleConstants.h" |
+#include "core/svg/SVGSVGElement.h" |
#include "platform/Length.h" |
#include "platform/transforms/TransformOperations.h" |
#include "wtf/Assertions.h" |
@@ -203,12 +205,12 @@ void StyleAdjuster::adjustRenderStyle(RenderStyle* style, RenderStyle* parentSty |
if (e->hasTagName(tdTag)) { |
style->setDisplay(TABLE_CELL); |
style->setFloating(NoFloat); |
- } else if (e->hasTagName(tableTag)) { |
+ } else if (isHTMLTableElement(*e)) { |
style->setDisplay(style->isDisplayInlineType() ? INLINE_TABLE : TABLE); |
} |
} |
- if (e && (e->hasTagName(tdTag) || e->hasTagName(thTag))) { |
+ if (e && isHTMLTableCellElement(*e)) { |
if (style->whiteSpace() == KHTML_NOWRAP) { |
// Figure out if we are really nowrapping or if we should just |
// use normal instead. If the width of the cell is fixed, then |
@@ -221,18 +223,18 @@ void StyleAdjuster::adjustRenderStyle(RenderStyle* style, RenderStyle* parentSty |
} |
// Tables never support the -webkit-* values for text-align and will reset back to the default. |
- if (e && e->hasTagName(tableTag) && (style->textAlign() == WEBKIT_LEFT || style->textAlign() == WEBKIT_CENTER || style->textAlign() == WEBKIT_RIGHT)) |
+ if (isHTMLTableElement(e) && (style->textAlign() == WEBKIT_LEFT || style->textAlign() == WEBKIT_CENTER || style->textAlign() == WEBKIT_RIGHT)) |
style->setTextAlign(TASTART); |
// Frames and framesets never honor position:relative or position:absolute. This is necessary to |
// fix a crash where a site tries to position these objects. They also never honor display. |
- if (e && (e->hasTagName(frameTag) || e->hasTagName(framesetTag))) { |
+ if (e && (isHTMLFrameElement(*e) || isHTMLFrameSetElement(*e))) { |
style->setPosition(StaticPosition); |
style->setDisplay(BLOCK); |
} |
// Ruby text does not support float or position. This might change with evolution of the specification. |
- if (e && e->hasTagName(rtTag)) { |
+ if (isHTMLRTElement(e)) { |
style->setPosition(StaticPosition); |
style->setFloating(NoFloat); |
} |
@@ -242,7 +244,7 @@ void StyleAdjuster::adjustRenderStyle(RenderStyle* style, RenderStyle* parentSty |
if (e && e->hasTagName(thTag) && style->textAlign() == TASTART) |
style->setTextAlign(CENTER); |
- if (e && e->hasTagName(legendTag)) |
+ if (isHTMLLegendElement(e)) |
style->setDisplay(BLOCK); |
// Per the spec, position 'static' and 'relative' in the top layer compute to 'absolute'. |
@@ -316,13 +318,13 @@ void StyleAdjuster::adjustRenderStyle(RenderStyle* style, RenderStyle* parentSty |
} |
// Textarea considers overflow visible as auto. |
- if (e && e->hasTagName(textareaTag)) { |
+ if (isHTMLTextAreaElement(e)) { |
style->setOverflowX(style->overflowX() == OVISIBLE ? OAUTO : style->overflowX()); |
style->setOverflowY(style->overflowY() == OVISIBLE ? OAUTO : style->overflowY()); |
} |
// For now, <marquee> requires an overflow clip to work properly. |
- if (e && e->hasTagName(marqueeTag)) { |
+ if (isHTMLMarqueeElement(e)) { |
style->setOverflowX(OHIDDEN); |
style->setOverflowY(OHIDDEN); |
} |
@@ -367,7 +369,7 @@ void StyleAdjuster::adjustRenderStyle(RenderStyle* style, RenderStyle* parentSty |
if (e && e->isFormControlElement() && style->fontSize() >= 11) { |
// Don't apply intrinsic margins to image buttons. The designer knows how big the images are, |
// so we have to treat all image buttons as though they were explicitly sized. |
- if (!e->hasTagName(inputTag) || !toHTMLInputElement(e)->isImageButton()) |
+ if (!isHTMLInputElement(*e) || !toHTMLInputElement(e)->isImageButton()) |
addIntrinsicMargins(style); |
} |
@@ -400,16 +402,16 @@ void StyleAdjuster::adjustRenderStyle(RenderStyle* style, RenderStyle* parentSty |
style->setOverflowX(OVISIBLE); |
// Only the root <svg> element in an SVG document fragment tree honors css position |
- if (!(e->hasTagName(SVGNames::svgTag) && e->parentNode() && !e->parentNode()->isSVGElement())) |
+ if (!(isSVGSVGElement(*e) && e->parentNode() && !e->parentNode()->isSVGElement())) |
style->setPosition(RenderStyle::initialPosition()); |
// RenderSVGRoot handles zooming for the whole SVG subtree, so foreignObject content should |
// not be scaled again. |
- if (e->hasTagName(SVGNames::foreignObjectTag)) |
+ if (isSVGForeignObjectElement(*e)) |
style->setEffectiveZoom(RenderStyle::initialZoom()); |
// SVG text layout code expects us to be a block-level style element. |
- if ((e->hasTagName(SVGNames::foreignObjectTag) || e->hasTagName(SVGNames::textTag)) && style->isDisplayInlineType()) |
+ if ((isSVGForeignObjectElement(*e) || isSVGTextElement(*e)) && style->isDisplayInlineType()) |
style->setDisplay(BLOCK); |
} |
} |