Diff
Modified: trunk/Source/WebCore/ChangeLog (156118 => 156119)
--- trunk/Source/WebCore/ChangeLog 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/ChangeLog 2013-09-19 22:03:01 UTC (rev 156119)
@@ -1,3 +1,12 @@
+2013-09-19 Antti Koivisto <[email protected]>
+
+ Add covariant RenderElement* Element::renderer()
+ https://bugs.webkit.org/show_bug.cgi?id=121638
+
+ Reviewed by Andreas Kling.
+
+ Also add isRenderElement() test and casting functions.
+
2013-09-19 Andreas Kling <[email protected]>
Streamline JSMainThreadNullState.
Modified: trunk/Source/WebCore/accessibility/AccessibilitySpinButton.cpp (156118 => 156119)
--- trunk/Source/WebCore/accessibility/AccessibilitySpinButton.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/accessibility/AccessibilitySpinButton.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -27,7 +27,7 @@
#include "AccessibilitySpinButton.h"
#include "AXObjectCache.h"
-#include "RenderObject.h"
+#include "RenderElement.h"
namespace WebCore {
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm (156118 => 156119)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm 2013-09-19 22:03:01 UTC (rev 156119)
@@ -1289,7 +1289,7 @@
unless ($interfaceName eq "HTMLImageElement") {
push(@customGetterContent, " if (!IMPL->renderer() || !IMPL->renderer()->isImage())\n");
push(@customGetterContent, " return nil;\n");
- $implIncludes{"RenderObject.h"} = 1;
+ $implIncludes{"RenderElement.h"} = 1;
}
}
$implIncludes{"DOMPrivate.h"} = 1;
Modified: trunk/Source/WebCore/css/SelectorChecker.cpp (156118 => 156119)
--- trunk/Source/WebCore/css/SelectorChecker.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/css/SelectorChecker.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -48,7 +48,7 @@
#include "InspectorInstrumentation.h"
#include "NodeRenderStyle.h"
#include "Page.h"
-#include "RenderObject.h"
+#include "RenderElement.h"
#include "RenderScrollbar.h"
#include "RenderStyle.h"
#include "ScrollableArea.h"
Modified: trunk/Source/WebCore/dom/ContainerNode.h (156118 => 156119)
--- trunk/Source/WebCore/dom/ContainerNode.h 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/dom/ContainerNode.h 2013-09-19 22:03:01 UTC (rev 156119)
@@ -33,7 +33,7 @@
namespace WebCore {
class FloatPoint;
-
+
typedef void (*NodeCallback)(Node*, unsigned);
namespace Private {
Modified: trunk/Source/WebCore/dom/Element.h (156118 => 156119)
--- trunk/Source/WebCore/dom/Element.h 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/dom/Element.h 2013-09-19 22:03:01 UTC (rev 156119)
@@ -44,6 +44,7 @@
class IntSize;
class Locale;
class PseudoElement;
+class RenderElement;
class RenderRegion;
class ShadowRoot;
@@ -127,6 +128,8 @@
DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitfullscreenerror);
#endif
+ RenderElement* renderer() const;
+
bool hasAttribute(const QualifiedName&) const;
const AtomicString& getAttribute(const QualifiedName&) const;
void setAttribute(const QualifiedName&, const AtomicString& value);
Modified: trunk/Source/WebCore/dom/PseudoElement.cpp (156118 => 156119)
--- trunk/Source/WebCore/dom/PseudoElement.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/dom/PseudoElement.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -29,7 +29,7 @@
#include "ContentData.h"
#include "InspectorInstrumentation.h"
-#include "RenderObject.h"
+#include "RenderElement.h"
#include "RenderQuote.h"
namespace WebCore {
@@ -78,7 +78,7 @@
void PseudoElement::didAttachRenderers()
{
- RenderObject* renderer = this->renderer();
+ RenderElement* renderer = this->renderer();
if (!renderer || !renderer->style()->regionThread().isEmpty())
return;
Modified: trunk/Source/WebCore/editing/SplitTextNodeContainingElementCommand.cpp (156118 => 156119)
--- trunk/Source/WebCore/editing/SplitTextNodeContainingElementCommand.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/editing/SplitTextNodeContainingElementCommand.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -27,8 +27,8 @@
#include "SplitTextNodeContainingElementCommand.h"
#include "Element.h"
+#include "RenderElement.h"
#include "Text.h"
-#include "RenderObject.h"
#include <wtf/Assertions.h>
namespace WebCore {
@@ -53,7 +53,7 @@
if (!parent || !parent->parentElement() || !parent->parentElement()->rendererIsEditable())
return;
- RenderObject* parentRenderer = parent->renderer();
+ RenderElement* parentRenderer = parent->renderer();
if (!parentRenderer || !parentRenderer->isInline()) {
wrapContentsInDummySpan(parent);
Node* firstChild = parent->firstChild();
Modified: trunk/Source/WebCore/editing/TypingCommand.cpp (156118 => 156119)
--- trunk/Source/WebCore/editing/TypingCommand.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/editing/TypingCommand.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -37,7 +37,7 @@
#include "InsertLineBreakCommand.h"
#include "InsertParagraphSeparatorCommand.h"
#include "InsertTextCommand.h"
-#include "RenderObject.h"
+#include "RenderElement.h"
#include "TextIterator.h"
#include "VisiblePosition.h"
#include "VisibleUnits.h"
Modified: trunk/Source/WebCore/html/ImageDocument.cpp (156118 => 156119)
--- trunk/Source/WebCore/html/ImageDocument.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/html/ImageDocument.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -42,6 +42,7 @@
#include "NotImplemented.h"
#include "Page.h"
#include "RawDataDocumentParser.h"
+#include "RenderElement.h"
#include "ResourceBuffer.h"
#include "Settings.h"
Modified: trunk/Source/WebCore/page/PageSerializer.cpp (156118 => 156119)
--- trunk/Source/WebCore/page/PageSerializer.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/page/PageSerializer.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -50,6 +50,7 @@
#include "MIMETypeRegistry.h"
#include "MarkupAccumulator.h"
#include "Page.h"
+#include "RenderElement.h"
#include "StyleCachedImage.h"
#include "StyleImage.h"
#include "StylePropertySet.h"
Modified: trunk/Source/WebCore/rendering/RenderElement.h (156118 => 156119)
--- trunk/Source/WebCore/rendering/RenderElement.h 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/rendering/RenderElement.h 2013-09-19 22:03:01 UTC (rev 156119)
@@ -47,6 +47,39 @@
void generatingNode() const WTF_DELETED_FUNCTION;
};
+inline RenderElement& toRenderElement(RenderObject& object)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(object.isRenderElement());
+ return static_cast<RenderElement&>(object);
+}
+
+inline const RenderElement& toRenderElement(const RenderObject& object)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(object.isRenderElement());
+ return static_cast<const RenderElement&>(object);
+}
+
+inline RenderElement* toRenderElement(RenderObject* object)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isRenderElement());
+ return static_cast<RenderElement*>(object);
+}
+
+inline const RenderElement* toRenderElement(const RenderObject* object)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isRenderElement());
+ return static_cast<const RenderElement*>(object);
+}
+
+// This will catch anyone doing an unnecessary cast.
+void toRenderElement(const RenderElement*);
+void toRenderElement(const RenderElement&);
+
+inline RenderElement* Element::renderer() const
+{
+ return toRenderElement(Node::renderer());
+}
+
} // namespace WebCore
#endif // RenderElement_h
Modified: trunk/Source/WebCore/rendering/RenderObject.h (156118 => 156119)
--- trunk/Source/WebCore/rendering/RenderObject.h 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2013-09-19 22:03:01 UTC (rev 156119)
@@ -342,6 +342,7 @@
bool isPseudoElement() const { return node() && node()->isPseudoElement(); }
+ bool isRenderElement() const { return !isText(); }
virtual bool isBoxModelObject() const { return false; }
virtual bool isCounter() const { return false; }
virtual bool isQuote() const { return false; }
Modified: trunk/Source/WebCore/svg/SVGAnimatedColor.cpp (156118 => 156119)
--- trunk/Source/WebCore/svg/SVGAnimatedColor.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/svg/SVGAnimatedColor.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -23,7 +23,7 @@
#include "SVGAnimatedColor.h"
#include "ColorDistance.h"
-#include "RenderObject.h"
+#include "RenderElement.h"
#include "SVGAnimateElement.h"
#include "SVGColor.h"
@@ -52,7 +52,7 @@
{
ASSERT(targetElement);
- if (RenderObject* targetRenderer = targetElement->renderer())
+ if (RenderElement* targetRenderer = targetElement->renderer())
color = targetRenderer->style()->visitedDependentColor(CSSPropertyColor);
else
color = Color();
Modified: trunk/Source/WebCore/svg/SVGLocatable.cpp (156118 => 156119)
--- trunk/Source/WebCore/svg/SVGLocatable.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/svg/SVGLocatable.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -25,7 +25,7 @@
#if ENABLE(SVG)
#include "SVGLocatable.h"
-#include "RenderObject.h"
+#include "RenderElement.h"
#include "SVGException.h"
#include "SVGGraphicsElement.h"
#include "SVGImageElement.h"
Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp (156118 => 156119)
--- trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp 2013-09-19 22:03:01 UTC (rev 156119)
@@ -28,7 +28,7 @@
#include "AffineTransform.h"
#include "Filter.h"
#include "GraphicsContext.h"
-#include "RenderObject.h"
+#include "RenderElement.h"
#include "RenderTreeAsText.h"
#include "SVGElement.h"
#include "SVGFilter.h"
@@ -74,7 +74,7 @@
if (m_image) {
srcRect.setSize(m_image->size());
m_preserveAspectRatio.transformRect(paintRect, srcRect);
- } else if (RenderObject* renderer = referencedRenderer())
+ } else if (RenderElement* renderer = referencedRenderer())
srcRect = svgFilter->absoluteTransform().mapRect(renderer->repaintRectInLocalCoordinates());
if (clipsToBounds())
@@ -84,7 +84,7 @@
setAbsolutePaintRect(enclosingIntRect(paintRect));
}
-RenderObject* FEImage::referencedRenderer() const
+RenderElement* FEImage::referencedRenderer() const
{
if (!m_document)
return 0;
Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.h (156118 => 156119)
--- trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.h 2013-09-19 21:42:44 UTC (rev 156118)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.h 2013-09-19 22:03:01 UTC (rev 156119)
@@ -31,7 +31,7 @@
class Document;
class Image;
-class RenderObject;
+class RenderElement;
class FEImage : public FilterEffect {
public:
@@ -54,7 +54,7 @@
virtual ~FEImage() { }
FEImage(Filter*, PassRefPtr<Image>, const SVGPreserveAspectRatio&);
FEImage(Filter*, Document*, const String&, const SVGPreserveAspectRatio&);
- RenderObject* referencedRenderer() const;
+ RenderElement* referencedRenderer() const;
RefPtr<Image> m_image;