Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: Source/core/rendering/RenderObject.cpp

Issue 143323014: *** DO NOT LAND *** Attempt to understand Regions complexity Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/RenderObject.h ('k') | Source/core/rendering/RenderRegion.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderObject.cpp
diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp
index 42db6c33d9265f130246fe0a0600e5bc976a9e7e..9b0a8b7bcfaffcaa1e4422d57f7896967474687e 100644
--- a/Source/core/rendering/RenderObject.cpp
+++ b/Source/core/rendering/RenderObject.cpp
@@ -49,7 +49,6 @@
#include "core/frame/UseCounter.h"
#include "core/frame/animation/AnimationController.h"
#include "core/rendering/CompositedLayerMapping.h"
-#include "core/rendering/FlowThreadController.h"
#include "core/rendering/HitTestResult.h"
#include "core/rendering/LayoutRectRecorder.h"
#include "core/rendering/RenderCounter.h"
@@ -64,9 +63,6 @@
#include "core/rendering/RenderLayerCompositor.h"
#include "core/rendering/RenderListItem.h"
#include "core/rendering/RenderMarquee.h"
-#include "core/rendering/RenderMultiColumnBlock.h"
-#include "core/rendering/RenderNamedFlowThread.h"
-#include "core/rendering/RenderRegion.h"
#include "core/rendering/RenderRuby.h"
#include "core/rendering/RenderRubyText.h"
#include "core/rendering/RenderScrollbarPart.h"
@@ -141,8 +137,6 @@ void RenderObject::operator delete(void* ptr)
RenderObject* RenderObject::createObject(Element* element, RenderStyle* style)
{
- Document& doc = element->document();
-
// Minimal support for content properties replacing an entire element.
// Works only if we have exactly one piece of content and it's a URL.
// Otherwise acts as if we didn't support this feature.
@@ -182,8 +176,6 @@ RenderObject* RenderObject::createObject(Element* element, RenderStyle* style)
return new RenderInline(element);
case BLOCK:
case INLINE_BLOCK:
- if ((!style->hasAutoColumnCount() || !style->hasAutoColumnWidth()) && doc.regionBasedColumnsEnabled())
- return new RenderMultiColumnBlock(element);
return new RenderBlockFlow(element);
case LIST_ITEM:
return new RenderListItem(element);
@@ -282,19 +274,6 @@ bool RenderObject::isLegend() const
return node() && node()->hasTagName(legendTag);
}
-void RenderObject::setFlowThreadStateIncludingDescendants(FlowThreadState state)
-{
- setFlowThreadState(state);
-
- for (RenderObject* child = firstChild(); child; child = child->nextSibling()) {
- // If the child is a fragmentation context it already updated the descendants flag accordingly.
- if (child->isRenderFlowThread())
- continue;
- ASSERT(state != child->flowThreadState());
- child->setFlowThreadStateIncludingDescendants(state);
- }
-}
-
bool RenderObject::requiresAnonymousTableWrappers(const RenderObject* newChild) const
{
// Check should agree with:
@@ -607,34 +586,6 @@ RenderBox* RenderObject::enclosingScrollableBox() const
return 0;
}
-RenderFlowThread* RenderObject::locateFlowThreadContainingBlock() const
-{
- ASSERT(flowThreadState() != NotInsideFlowThread);
-
- // See if we have the thread cached because we're in the middle of layout.
- RenderFlowThread* flowThread = view()->flowThreadController()->currentRenderFlowThread();
- if (flowThread)
- return flowThread;
-
- // Not in the middle of layout so have to find the thread the slow way.
- RenderObject* curr = const_cast<RenderObject*>(this);
- while (curr) {
- if (curr->isRenderFlowThread())
- return toRenderFlowThread(curr);
- curr = curr->containingBlock();
- }
- return 0;
-}
-
-RenderNamedFlowThread* RenderObject::renderNamedFlowThreadWrapper() const
-{
- RenderObject* object = const_cast<RenderObject*>(this);
- while (object && object->isAnonymousBlock() && !object->isRenderNamedFlowThread())
- object = object->parent();
-
- return object && object->isRenderNamedFlowThread() ? toRenderNamedFlowThread(object) : 0;
-}
-
RenderBlock* RenderObject::firstLineBlock() const
{
return 0;
@@ -1362,22 +1313,6 @@ RenderLayerModelObject* RenderObject::containerForRepaint() const
return enclosingFilterLayer->renderer();
}
}
-
- // If we have a flow thread, then we need to do individual repaints within the RenderRegions instead.
- // Return the flow thread as a repaint container in order to create a chokepoint that allows us to change
- // repainting to do individual region repaints.
- RenderFlowThread* parentRenderFlowThread = flowThreadContainingBlock();
- if (parentRenderFlowThread) {
- // The ancestor document will do the reparenting when the repaint propagates further up.
- // We're just a seamless child document, and we don't need to do the hacking.
- if (parentRenderFlowThread->document() != document())
- return repaintContainer;
- // If we have already found a repaint container then we will repaint into that container only if it is part of the same
- // flow thread. Otherwise we will need to catch the repaint call and send it to the flow thread.
- RenderFlowThread* repaintContainerFlowThread = repaintContainer ? repaintContainer->flowThreadContainingBlock() : 0;
- if (!repaintContainerFlowThread || repaintContainerFlowThread != parentRenderFlowThread)
- repaintContainer = parentRenderFlowThread;
- }
return repaintContainer;
}
@@ -1416,11 +1351,6 @@ void RenderObject::repaintUsingContainer(const RenderLayerModelObject* repaintCo
return;
}
- if (repaintContainer->isRenderFlowThread()) {
- toRenderFlowThread(repaintContainer)->repaintRectangleInRegions(r);
- return;
- }
-
if (repaintContainer->hasFilter() && repaintContainer->layer()->requiresFullLayerImageForFilters()) {
repaintContainer->layer()->repainter().setFilterBackendNeedsRepaintingInRect(r);
return;
@@ -2323,7 +2253,7 @@ LayoutSize RenderObject::offsetFromContainer(RenderObject* o, const LayoutPoint&
offset -= toRenderBox(o)->scrolledContentOffset();
if (offsetDependsOnPoint)
- *offsetDependsOnPoint = hasColumns() || o->isRenderFlowThread();
+ *offsetDependsOnPoint = hasColumns();
return offset;
}
@@ -2578,18 +2508,6 @@ void RenderObject::willBeDestroyed()
if (AXObjectCache* cache = document().existingAXObjectCache())
cache->remove(this);
-#ifndef NDEBUG
- if (!documentBeingDestroyed() && view() && view()->hasRenderNamedFlowThreads()) {
- // After remove, the object and the associated information should not be in any flow thread.
- const RenderNamedFlowThreadList* flowThreadList = view()->flowThreadController()->renderNamedFlowThreadList();
- for (RenderNamedFlowThreadList::const_iterator iter = flowThreadList->begin(); iter != flowThreadList->end(); ++iter) {
- const RenderNamedFlowThread* renderFlowThread = *iter;
- ASSERT(!renderFlowThread->hasChild(this));
- ASSERT(!renderFlowThread->hasChildInfo(this));
- }
- }
-#endif
-
// If this renderer had a parent, remove should have destroyed any counters
// attached to this renderer and marked the affected other counters for
// reevaluation. This apparently redundant check is here for the case when
@@ -2626,9 +2544,6 @@ void RenderObject::insertedIntoTree()
if (!isFloating() && parent()->childrenInline())
parent()->dirtyLinesFromChangedChild(this);
-
- if (RenderNamedFlowThread* containerFlowThread = parent()->renderNamedFlowThreadWrapper())
- containerFlowThread->addFlowChild(this);
}
void RenderObject::willBeRemovedFromTree()
@@ -2652,43 +2567,11 @@ void RenderObject::willBeRemovedFromTree()
if (isOutOfFlowPositioned() && parent()->childrenInline())
parent()->dirtyLinesFromChangedChild(this);
- removeFromRenderFlowThread();
-
- if (RenderNamedFlowThread* containerFlowThread = parent()->renderNamedFlowThreadWrapper())
- containerFlowThread->removeFlowChild(this);
-
// Update cached boundaries in SVG renderers if a child is removed.
if (parent()->isSVG())
parent()->setNeedsBoundariesUpdate();
}
-void RenderObject::removeFromRenderFlowThread()
-{
- if (flowThreadState() == NotInsideFlowThread)
- return;
-
- // Sometimes we remove the element from the flow, but it's not destroyed at that time.
- // It's only until later when we actually destroy it and remove all the children from it.
- // Currently, that happens for firstLetter elements and list markers.
- // Pass in the flow thread so that we don't have to look it up for all the children.
- removeFromRenderFlowThreadRecursive(flowThreadContainingBlock());
-}
-
-void RenderObject::removeFromRenderFlowThreadRecursive(RenderFlowThread* renderFlowThread)
-{
- if (const RenderObjectChildList* children = virtualChildren()) {
- for (RenderObject* child = children->firstChild(); child; child = child->nextSibling())
- child->removeFromRenderFlowThreadRecursive(renderFlowThread);
- }
-
- RenderFlowThread* localFlowThread = renderFlowThread;
- if (flowThreadState() == InsideInFlowThread)
- localFlowThread = flowThreadContainingBlock(); // We have to ask. We can't just assume we are in the same flow thread.
- if (localFlowThread)
- localFlowThread->removeFlowChildInfo(this);
- setFlowThreadState(NotInsideFlowThread);
-}
-
void RenderObject::destroyAndCleanupAnonymousWrappers()
{
// If the tree is destroyed, there is no need for a clean-up phase.
@@ -2702,9 +2585,8 @@ void RenderObject::destroyAndCleanupAnonymousWrappers()
// Anonymous block continuations are tracked and destroyed elsewhere (see the bottom of RenderBlock::removeChild)
if (destroyRootParent->isRenderBlock() && toRenderBlock(destroyRootParent)->isAnonymousBlockContinuation())
break;
- // Render flow threads are tracked by the FlowThreadController, so we can't destroy them here.
// Column spans are tracked elsewhere.
- if (destroyRootParent->isRenderFlowThread() || destroyRootParent->isAnonymousColumnSpanBlock())
+ if (destroyRootParent->isAnonymousColumnSpanBlock())
break;
if (destroyRootParent->firstChild() != this || destroyRootParent->lastChild() != this)
@@ -3162,29 +3044,8 @@ void RenderObject::imageChanged(ImageResource* image, const IntRect* rect)
RenderObject* RenderObject::hoverAncestor() const
{
- // When searching for the hover ancestor and encountering a named flow thread,
- // the search will continue with the DOM ancestor of the top-most element
- // in the named flow thread.
- // See https://code.google.com/p/chromium/issues/detail?id=243278
- RenderObject* hoverAncestor = parent();
-
- // Skip anonymous blocks directly flowed into flow threads as it would
- // prevent us from continuing the search on the DOM tree when reaching the named flow thread.
- if (hoverAncestor && hoverAncestor->isAnonymousBlock() && hoverAncestor->parent() && hoverAncestor->parent()->isRenderNamedFlowThread())
- hoverAncestor = hoverAncestor->parent();
-
- if (hoverAncestor && hoverAncestor->isRenderNamedFlowThread()) {
- hoverAncestor = 0;
-
- Node* node = this->node();
- if (node) {
- Node* domAncestorNode = node->parentNode();
- if (domAncestorNode)
- hoverAncestor = domAncestorNode->renderer();
- }
- }
-
- return hoverAncestor;
+ // FIXME: Remove.
+ return parent();
}
Element* RenderObject::offsetParent() const
@@ -3204,10 +3065,6 @@ Element* RenderObject::offsetParent() const
for (RenderObject* ancestor = parent(); ancestor; ancestor = ancestor->parent()) {
// Spec: http://www.w3.org/TR/cssom-view/#offset-attributes
- // CSS regions specification says that region flows should return the body element as their offsetParent.
- if (ancestor->isRenderNamedFlowThread())
- return document().body();
-
node = ancestor->node();
if (!node)
@@ -3365,11 +3222,6 @@ bool RenderObject::isRelayoutBoundaryForInspector() const
return objectIsRelayoutBoundary(this);
}
-bool RenderObject::isRenderNamedFlowFragmentContainer() const
-{
- return isRenderBlockFlow() && toRenderBlockFlow(this)->renderNamedFlowFragment();
-}
-
} // namespace WebCore
#ifndef NDEBUG
« no previous file with comments | « Source/core/rendering/RenderObject.h ('k') | Source/core/rendering/RenderRegion.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698