Modified: trunk/Source/WebCore/ChangeLog (156914 => 156915)
--- trunk/Source/WebCore/ChangeLog 2013-10-04 21:59:32 UTC (rev 156914)
+++ trunk/Source/WebCore/ChangeLog 2013-10-04 22:22:00 UTC (rev 156915)
@@ -1,3 +1,13 @@
+2013-10-04 Andreas Kling <[email protected]>
+
+ Tighten typing in some RenderLayer code.
+ <https://webkit.org/b/122342>
+
+ Reviewed by Antti Koivisto.
+
+ Use tighter types instead of Node and RenderObject inside RenderLayer
+ where applicable.
+
2013-10-04 Ralph Thomas <[email protected]>
Inserting a JS generated keyframe animation shouldn't trigger a whole document style recalc
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (156914 => 156915)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2013-10-04 21:59:32 UTC (rev 156914)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2013-10-04 22:22:00 UTC (rev 156915)
@@ -87,6 +87,8 @@
#include "RenderSVGResourceClipper.h"
#include "RenderScrollbar.h"
#include "RenderScrollbarPart.h"
+#include "RenderTableCell.h"
+#include "RenderTableRow.h"
#include "RenderTheme.h"
#include "RenderTreeAsText.h"
#include "RenderView.h"
@@ -1240,7 +1242,7 @@
if (!renderer().isOutOfFlowPositioned() && renderer().parent()) {
// We must adjust our position by walking up the render tree looking for the
// nearest enclosing object with a layer.
- RenderObject* curr = renderer().parent();
+ RenderElement* curr = renderer().parent();
while (curr && !curr->hasLayer()) {
if (curr->isBox() && !curr->isTableRow()) {
// Rows and cells share the same coordinate space (that of the section).
@@ -1375,7 +1377,7 @@
if (!ownerElement)
return 0;
- RenderObject* ownerRenderer = ownerElement->renderer();
+ RenderElement* ownerRenderer = ownerElement->renderer();
if (!ownerRenderer)
return 0;
@@ -2283,7 +2285,7 @@
renderer().repaintUsingContainer(repaintContainer, pixelSnappedIntRect(m_repaintRect));
// Schedule the scroll DOM event.
- if (Node* element = renderer().element())
+ if (Element* element = renderer().element())
element->document().eventQueue().enqueueOrDispatchScrollEvent(*element);
InspectorInstrumentation::didScrollLayer(&frame);
@@ -2859,25 +2861,25 @@
m_resizer->repaintRectangle(rect);
}
-static inline RenderObject* rendererForScrollbar(RenderObject* renderer)
+static inline RenderElement* rendererForScrollbar(RenderLayerModelObject& renderer)
{
- if (Node* node = renderer->node()) {
- if (ShadowRoot* shadowRoot = node->containingShadowRoot()) {
+ if (Element* element = renderer.element()) {
+ if (ShadowRoot* shadowRoot = element->containingShadowRoot()) {
if (shadowRoot->type() == ShadowRoot::UserAgentShadowRoot)
return shadowRoot->hostElement()->renderer();
}
}
- return renderer;
+ return &renderer;
}
PassRefPtr<Scrollbar> RenderLayer::createScrollbar(ScrollbarOrientation orientation)
{
RefPtr<Scrollbar> widget;
- RenderObject* actualRenderer = rendererForScrollbar(&renderer());
+ RenderElement* actualRenderer = rendererForScrollbar(renderer());
bool hasCustomScrollbarStyle = actualRenderer->isBox() && actualRenderer->style()->hasPseudoStyle(SCROLLBAR);
if (hasCustomScrollbarStyle)
- widget = RenderScrollbar::createCustomScrollbar(this, orientation, actualRenderer->node());
+ widget = RenderScrollbar::createCustomScrollbar(this, orientation, actualRenderer->element());
else {
widget = Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar);
didAddScrollbar(widget.get(), orientation);
@@ -4418,11 +4420,6 @@
}
}
-static inline LayoutRect frameVisibleRect(const RenderObject& renderer)
-{
- return renderer.view().frameView().visibleContentRect();
-}
-
bool RenderLayer::hitTest(const HitTestRequest& request, HitTestResult& result)
{
return hitTest(request, result.hitTestLocation(), result);
@@ -4436,7 +4433,7 @@
LayoutRect hitTestArea = isOutOfFlowRenderFlowThread() ? toRenderFlowThread(renderer()).borderBoxRect() : renderer().view().documentRect();
if (!request.ignoreClipping())
- hitTestArea.intersect(frameVisibleRect(renderer()));
+ hitTestArea.intersect(renderer().view().frameView().visibleContentRect());
RenderLayer* insideLayer = hitTestLayer(this, 0, request, result, hitTestArea, hitTestLocation, false);
if (!insideLayer) {
@@ -4459,10 +4456,10 @@
return insideLayer;
}
-Node* RenderLayer::enclosingElement() const
+Element* RenderLayer::enclosingElement() const
{
- for (RenderObject* r = &renderer(); r; r = r->parent()) {
- if (Node* e = r->node())
+ for (RenderElement* r = &renderer(); r; r = r->parent()) {
+ if (Element* e = r->element())
return e;
}
ASSERT_NOT_REACHED();
@@ -4887,7 +4884,7 @@
// the content in the layer has an element. So just walk up
// the tree.
if (!result.innerNode() || !result.innerNonSharedNode()) {
- Node* e = enclosingElement();
+ Element* e = enclosingElement();
if (!result.innerNode())
result.setInnerNode(e);
if (!result.innerNonSharedNode())
@@ -5373,15 +5370,14 @@
if (renderer().isInline() && renderer().isRenderInline())
result = toRenderInline(renderer()).linesVisualOverflowBoundingBox();
else if (renderer().isTableRow()) {
+ RenderTableRow& tableRow = toRenderTableRow(renderer());
// Our bounding box is just the union of all of our cells' border/overflow rects.
- for (RenderObject* child = renderer().firstChild(); child; child = child->nextSibling()) {
- if (child->isTableCell()) {
- LayoutRect bbox = toRenderBox(child)->borderBoxRect();
- result.unite(bbox);
- LayoutRect overflowRect = renderBox()->visualOverflowRect();
- if (bbox != overflowRect)
- result.unite(overflowRect);
- }
+ for (RenderTableCell* cell = tableRow.firstCell(); cell; cell = cell->nextCell()) {
+ LayoutRect bbox = cell->borderBoxRect();
+ result.unite(bbox);
+ LayoutRect overflowRect = tableRow.visualOverflowRect();
+ if (bbox != overflowRect)
+ result.unite(overflowRect);
}
} else {
RenderBox* box = renderBox();
@@ -6129,7 +6125,7 @@
updateScrollableAreaSet(hasScrollableHorizontalOverflow() || hasScrollableVerticalOverflow());
}
-void RenderLayer::setAncestorChainHasOutOfFlowPositionedDescendant(RenderObject* containingBlock)
+void RenderLayer::setAncestorChainHasOutOfFlowPositionedDescendant(RenderBlock* containingBlock)
{
for (RenderLayer* layer = this; layer; layer = layer->parent()) {
if (!layer->m_hasOutOfFlowPositionedDescendantDirty && layer->hasOutOfFlowPositionedDescendant())
@@ -6297,7 +6293,7 @@
void RenderLayer::updateScrollCornerStyle()
{
- RenderObject* actualRenderer = rendererForScrollbar(&renderer());
+ RenderElement* actualRenderer = rendererForScrollbar(renderer());
RefPtr<RenderStyle> corner = renderer().hasOverflowClip() ? actualRenderer->getUncachedPseudoStyle(PseudoStyleRequest(SCROLLBAR_CORNER), actualRenderer->style()) : PassRefPtr<RenderStyle>(0);
if (corner) {
if (!m_scrollCorner) {
@@ -6313,7 +6309,7 @@
void RenderLayer::updateResizerStyle()
{
- RenderObject* actualRenderer = rendererForScrollbar(&renderer());
+ RenderElement* actualRenderer = rendererForScrollbar(renderer());
RefPtr<RenderStyle> resizer = renderer().hasOverflowClip() ? actualRenderer->getUncachedPseudoStyle(PseudoStyleRequest(RESIZER), actualRenderer->style()) : PassRefPtr<RenderStyle>(0);
if (resizer) {
if (!m_resizer) {
Modified: trunk/Source/WebCore/rendering/RenderLayer.h (156914 => 156915)
--- trunk/Source/WebCore/rendering/RenderLayer.h 2013-10-04 21:59:32 UTC (rev 156914)
+++ trunk/Source/WebCore/rendering/RenderLayer.h 2013-10-04 22:22:00 UTC (rev 156915)
@@ -806,7 +806,7 @@
void setLayerListMutationAllowed(bool flag) { m_layerListMutationAllowed = flag; }
#endif
- Node* enclosingElement() const;
+ Element* enclosingElement() const;
#if USE(ACCELERATED_COMPOSITING)
enum ViewportConstrainedNotCompositedReason {
@@ -861,7 +861,7 @@
void updateScrollbarsAfterStyleChange(const RenderStyle* oldStyle);
void updateScrollbarsAfterLayout();
- void setAncestorChainHasOutOfFlowPositionedDescendant(RenderObject* containingBlock);
+ void setAncestorChainHasOutOfFlowPositionedDescendant(RenderBlock* containingBlock);
void dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus();
void updateOutOfFlowPositioned(const RenderStyle* oldStyle);
Modified: trunk/Source/WebCore/rendering/RenderTableRow.h (156914 => 156915)
--- trunk/Source/WebCore/rendering/RenderTableRow.h 2013-10-04 21:59:32 UTC (rev 156914)
+++ trunk/Source/WebCore/rendering/RenderTableRow.h 2013-10-04 22:22:00 UTC (rev 156915)
@@ -119,6 +119,12 @@
unsigned m_rowIndex : 31;
};
+inline RenderTableRow& toRenderTableRow(RenderObject& object)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(object.isTableRow());
+ return static_cast<RenderTableRow&>(object);
+}
+
inline RenderTableRow* toRenderTableRow(RenderObject* object)
{
ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isTableRow());