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

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

Issue 68523014: Update remaining NodeTraversal / ElementTraversal methods to take references (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix build Created 7 years, 1 month 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/RenderCounter.h ('k') | Source/core/rendering/RenderListItem.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderCounter.cpp
diff --git a/Source/core/rendering/RenderCounter.cpp b/Source/core/rendering/RenderCounter.cpp
index 8880e82d2b5b76bc58c12ca1426eccba353384cb..5aac629a947fe053b577fe29d43640c6d95c0198 100644
--- a/Source/core/rendering/RenderCounter.cpp
+++ b/Source/core/rendering/RenderCounter.cpp
@@ -45,7 +45,7 @@ using namespace HTMLNames;
typedef HashMap<AtomicString, RefPtr<CounterNode> > CounterMap;
typedef HashMap<const RenderObject*, OwnPtr<CounterMap> > CounterMaps;
-static CounterNode* makeCounterNode(RenderObject*, const AtomicString& identifier, bool alwaysCreateCounter);
+static CounterNode* makeCounterNode(RenderObject&, const AtomicString& identifier, bool alwaysCreateCounter);
static CounterMaps& counterMaps()
{
@@ -55,9 +55,9 @@ static CounterMaps& counterMaps()
// This function processes the renderer tree in the order of the DOM tree
// including pseudo elements as defined in CSS 2.1.
-static RenderObject* previousInPreOrder(const RenderObject* object)
+static RenderObject* previousInPreOrder(const RenderObject& object)
{
- Element* self = toElement(object->node());
+ Element* self = toElement(object.node());
ASSERT(self);
Element* previous = ElementTraversal::previousIncludingPseudo(*self);
while (previous && !previous->renderer())
@@ -67,9 +67,9 @@ static RenderObject* previousInPreOrder(const RenderObject* object)
// This function processes the renderer tree in the order of the DOM tree
// including pseudo elements as defined in CSS 2.1.
-static RenderObject* previousSiblingOrParent(const RenderObject* object)
+static RenderObject* previousSiblingOrParent(const RenderObject& object)
{
- Element* self = toElement(object->node());
+ Element* self = toElement(object.node());
ASSERT(self);
Element* previous = ElementTraversal::pseudoAwarePreviousSibling(*self);
while (previous && !previous->renderer())
@@ -80,47 +80,46 @@ static RenderObject* previousSiblingOrParent(const RenderObject* object)
return previous ? previous->renderer() : 0;
}
-static inline Element* parentElement(RenderObject* object)
+static inline Element* parentElement(RenderObject& object)
{
- return toElement(object->node())->parentElement();
+ return toElement(object.node())->parentElement();
}
-static inline bool areRenderersElementsSiblings(RenderObject* first, RenderObject* second)
+static inline bool areRenderersElementsSiblings(RenderObject& first, RenderObject& second)
{
return parentElement(first) == parentElement(second);
}
// This function processes the renderer tree in the order of the DOM tree
// including pseudo elements as defined in CSS 2.1.
-static RenderObject* nextInPreOrder(const RenderObject* object, const Element* stayWithin, bool skipDescendants = false)
+static RenderObject* nextInPreOrder(const RenderObject& object, const Element* stayWithin, bool skipDescendants = false)
{
- Element* self = toElement(object->node());
- Element* next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(self, stayWithin) : ElementTraversal::nextIncludingPseudo(self, stayWithin);
+ Element* self = toElement(object.node());
+ ASSERT(self);
+ Element* next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(*self, stayWithin) : ElementTraversal::nextIncludingPseudo(*self, stayWithin);
while (next && !next->renderer())
- next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(next, stayWithin) : ElementTraversal::nextIncludingPseudo(next, stayWithin);
+ next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(*next, stayWithin) : ElementTraversal::nextIncludingPseudo(*next, stayWithin);
return next ? next->renderer() : 0;
}
-static bool planCounter(RenderObject* object, const AtomicString& identifier, bool& isReset, int& value)
+static bool planCounter(RenderObject& object, const AtomicString& identifier, bool& isReset, int& value)
{
- ASSERT(object);
-
// Real text nodes don't have their own style so they can't have counters.
// We can't even look at their styles or we'll see extra resets and increments!
- if (object->isText() && !object->isBR())
+ if (object.isText() && !object.isBR())
return false;
- Node* generatingNode = object->generatingNode();
+ Node* generatingNode = object.generatingNode();
// We must have a generating node or else we cannot have a counter.
if (!generatingNode)
return false;
- RenderStyle* style = object->style();
+ RenderStyle* style = object.style();
ASSERT(style);
switch (style->styleType()) {
case NOPSEUDO:
// Sometimes nodes have more then one renderer. Only the first one gets the counter
// LayoutTests/http/tests/css/counter-crash.html
- if (generatingNode->renderer() != object)
+ if (generatingNode->renderer() != &object)
return false;
break;
case BEFORE:
@@ -138,9 +137,9 @@ static bool planCounter(RenderObject* object, const AtomicString& identifier, bo
}
if (identifier == "list-item") {
- if (object->isListItem()) {
- if (toRenderListItem(object)->hasExplicitValue()) {
- value = toRenderListItem(object)->explicitValue();
+ if (object.isListItem()) {
+ if (toRenderListItem(object).hasExplicitValue()) {
+ value = toRenderListItem(object).explicitValue();
isReset = true;
return true;
}
@@ -148,7 +147,7 @@ static bool planCounter(RenderObject* object, const AtomicString& identifier, bo
isReset = false;
return true;
}
- if (Node* e = object->node()) {
+ if (Node* e = object.node()) {
if (e->hasTagName(olTag)) {
value = toHTMLOListElement(e)->start();
isReset = true;
@@ -181,7 +180,7 @@ static bool planCounter(RenderObject* object, const AtomicString& identifier, bo
// reset node.
// - Non-reset CounterNodes cannot have descendants.
-static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString& identifier, bool isReset, RefPtr<CounterNode>& parent, RefPtr<CounterNode>& previousSibling)
+static bool findPlaceForCounter(RenderObject& counterOwner, const AtomicString& identifier, bool isReset, RefPtr<CounterNode>& parent, RefPtr<CounterNode>& previousSibling)
{
// We cannot stop searching for counters with the same identifier before we also
// check this renderer, because it may affect the positioning in the tree of our counter.
@@ -194,7 +193,7 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
RefPtr<CounterNode> previousSiblingProtector = 0;
while (currentRenderer) {
- CounterNode* currentCounter = makeCounterNode(currentRenderer, identifier, false);
+ CounterNode* currentCounter = makeCounterNode(*currentRenderer, identifier, false);
if (searchEndRenderer == currentRenderer) {
// We may be at the end of our search.
if (currentCounter) {
@@ -202,7 +201,7 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
if (previousSiblingProtector) { // But we already found another counter that we come after.
if (currentCounter->actsAsReset()) {
// We found a reset counter that is on a renderer that is a sibling of ours or a parent.
- if (isReset && areRenderersElementsSiblings(currentRenderer, counterOwner)) {
+ if (isReset && areRenderersElementsSiblings(*currentRenderer, counterOwner)) {
// We are also a reset counter and the previous reset was on a sibling renderer
// hence we are the next sibling of that counter if that reset is not a root or
// we are a root node if that reset is a root.
@@ -223,7 +222,7 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
return true;
}
// CurrentCounter, the counter at the EndSearchRenderer, is not reset.
- if (!isReset || !areRenderersElementsSiblings(currentRenderer, counterOwner)) {
+ if (!isReset || !areRenderersElementsSiblings(*currentRenderer, counterOwner)) {
// If the node we are placing is not reset or we have found a counter that is attached
// to an ancestor of the placed counter's owner renderer we know we are a sibling of that node.
if (currentCounter->parent() != previousSiblingProtector->parent())
@@ -239,7 +238,7 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
// previousSibling, and when we are a sibling of the end counter we must set previousSibling
// to currentCounter.
if (currentCounter->actsAsReset()) {
- if (isReset && areRenderersElementsSiblings(currentRenderer, counterOwner)) {
+ if (isReset && areRenderersElementsSiblings(*currentRenderer, counterOwner)) {
parent = currentCounter->parent();
previousSibling = currentCounter;
return parent;
@@ -248,7 +247,7 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
previousSibling = previousSiblingProtector.get();
return true;
}
- if (!isReset || !areRenderersElementsSiblings(currentRenderer, counterOwner)) {
+ if (!isReset || !areRenderersElementsSiblings(*currentRenderer, counterOwner)) {
parent = currentCounter->parent();
previousSibling = currentCounter;
return true;
@@ -260,7 +259,7 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
// good counter, or we are a reset node and the counter on the previous sibling
// of our owner renderer was not a reset counter.
// Set a new goal for the end of the search.
- searchEndRenderer = previousSiblingOrParent(currentRenderer);
+ searchEndRenderer = previousSiblingOrParent(*currentRenderer);
} else {
// We are searching descendants of a previous sibling of the renderer that the
// counter being placed is attached to.
@@ -273,12 +272,12 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
previousSiblingProtector = currentCounter;
// We are no longer interested in previous siblings of the currentRenderer or their children
// as counters they may have attached cannot be the previous sibling of the counter we are placing.
- currentRenderer = parentElement(currentRenderer)->renderer();
+ currentRenderer = parentElement(*currentRenderer)->renderer();
continue;
}
} else
previousSiblingProtector = currentCounter;
- currentRenderer = previousSiblingOrParent(currentRenderer);
+ currentRenderer = previousSiblingOrParent(*currentRenderer);
continue;
}
}
@@ -287,19 +286,17 @@ static bool findPlaceForCounter(RenderObject* counterOwner, const AtomicString&
// performance improvement would create more code duplication than is worthwhile in my oppinion and may further
// impede the readability of this already complex algorithm.
if (previousSiblingProtector)
- currentRenderer = previousSiblingOrParent(currentRenderer);
+ currentRenderer = previousSiblingOrParent(*currentRenderer);
else
- currentRenderer = previousInPreOrder(currentRenderer);
+ currentRenderer = previousInPreOrder(*currentRenderer);
}
return false;
}
-static CounterNode* makeCounterNode(RenderObject* object, const AtomicString& identifier, bool alwaysCreateCounter)
+static CounterNode* makeCounterNode(RenderObject& object, const AtomicString& identifier, bool alwaysCreateCounter)
{
- ASSERT(object);
-
- if (object->hasCounterNodeMap()) {
- if (CounterMap* nodeMap = counterMaps().get(object)) {
+ if (object.hasCounterNodeMap()) {
+ if (CounterMap* nodeMap = counterMaps().get(&object)) {
if (CounterNode* node = nodeMap->get(identifier))
return node;
}
@@ -316,12 +313,12 @@ static CounterNode* makeCounterNode(RenderObject* object, const AtomicString& id
if (findPlaceForCounter(object, identifier, isReset, newParent, newPreviousSibling))
newParent->insertAfter(newNode.get(), newPreviousSibling.get(), identifier);
CounterMap* nodeMap;
- if (object->hasCounterNodeMap())
- nodeMap = counterMaps().get(object);
+ if (object.hasCounterNodeMap())
+ nodeMap = counterMaps().get(&object);
else {
nodeMap = new CounterMap;
- counterMaps().set(object, adoptPtr(nodeMap));
- object->setHasCounterNodeMap(true);
+ counterMaps().set(&object, adoptPtr(nodeMap));
+ object.setHasCounterNodeMap(true);
}
nodeMap->set(identifier, newNode);
if (newNode->parent())
@@ -331,7 +328,7 @@ static CounterNode* makeCounterNode(RenderObject* object, const AtomicString& id
CounterMaps& maps = counterMaps();
Element* stayWithin = parentElement(object);
bool skipDescendants;
- for (RenderObject* currentRenderer = nextInPreOrder(object, stayWithin); currentRenderer; currentRenderer = nextInPreOrder(currentRenderer, stayWithin, skipDescendants)) {
+ for (RenderObject* currentRenderer = nextInPreOrder(object, stayWithin); currentRenderer; currentRenderer = nextInPreOrder(*currentRenderer, stayWithin, skipDescendants)) {
skipDescendants = false;
if (!currentRenderer->hasCounterNodeMap())
continue;
@@ -341,7 +338,7 @@ static CounterNode* makeCounterNode(RenderObject* object, const AtomicString& id
skipDescendants = true;
if (currentCounter->parent())
continue;
- if (stayWithin == parentElement(currentRenderer) && currentCounter->hasResetType())
+ if (stayWithin == parentElement(*currentRenderer) && currentCounter->hasResetType())
break;
newNode->insertAfter(currentCounter, newNode->lastChild(), identifier);
}
@@ -396,7 +393,7 @@ PassRefPtr<StringImpl> RenderCounter::originalText() const
break;
beforeAfterContainer = beforeAfterContainer->parent();
}
- makeCounterNode(beforeAfterContainer, m_counter.identifier(), true)->addRenderer(const_cast<RenderCounter*>(this));
+ makeCounterNode(*beforeAfterContainer, m_counter.identifier(), true)->addRenderer(const_cast<RenderCounter*>(this));
ASSERT(m_counterNode);
}
CounterNode* child = m_counterNode;
@@ -437,17 +434,17 @@ static void destroyCounterNodeWithoutMapRemoval(const AtomicString& identifier,
for (RefPtr<CounterNode> child = node->lastDescendant(); child && child != node; child = previous) {
previous = child->previousInPreOrder();
child->parent()->removeChild(child.get());
- ASSERT(counterMaps().get(child->owner())->get(identifier) == child);
- counterMaps().get(child->owner())->remove(identifier);
+ ASSERT(counterMaps().get(&child->owner())->get(identifier) == child);
+ counterMaps().get(&child->owner())->remove(identifier);
}
if (CounterNode* parent = node->parent())
parent->removeChild(node);
}
-void RenderCounter::destroyCounterNodes(RenderObject* owner)
+void RenderCounter::destroyCounterNodes(RenderObject& owner)
{
CounterMaps& maps = counterMaps();
- CounterMaps::iterator mapsIterator = maps.find(owner);
+ CounterMaps::iterator mapsIterator = maps.find(&owner);
if (mapsIterator == maps.end())
return;
CounterMap* map = mapsIterator->value.get();
@@ -456,12 +453,12 @@ void RenderCounter::destroyCounterNodes(RenderObject* owner)
destroyCounterNodeWithoutMapRemoval(it->key, it->value.get());
}
maps.remove(mapsIterator);
- owner->setHasCounterNodeMap(false);
+ owner.setHasCounterNodeMap(false);
}
-void RenderCounter::destroyCounterNode(RenderObject* owner, const AtomicString& identifier)
+void RenderCounter::destroyCounterNode(RenderObject& owner, const AtomicString& identifier)
{
- CounterMap* map = counterMaps().get(owner);
+ CounterMap* map = counterMaps().get(&owner);
if (!map)
return;
CounterMap::iterator mapIterator = map->find(identifier);
@@ -491,26 +488,26 @@ void RenderCounter::rendererRemovedFromTree(RenderObject* renderer)
if (!currentRenderer)
currentRenderer = renderer;
while (true) {
- destroyCounterNodes(currentRenderer);
+ destroyCounterNodes(*currentRenderer);
if (currentRenderer == renderer)
break;
currentRenderer = currentRenderer->previousInPreOrder();
}
}
-static void updateCounters(RenderObject* renderer)
+static void updateCounters(RenderObject& renderer)
{
- ASSERT(renderer->style());
- const CounterDirectiveMap* directiveMap = renderer->style()->counterDirectives();
+ ASSERT(renderer.style());
+ const CounterDirectiveMap* directiveMap = renderer.style()->counterDirectives();
if (!directiveMap)
return;
CounterDirectiveMap::const_iterator end = directiveMap->end();
- if (!renderer->hasCounterNodeMap()) {
+ if (!renderer.hasCounterNodeMap()) {
for (CounterDirectiveMap::const_iterator it = directiveMap->begin(); it != end; ++it)
makeCounterNode(renderer, it->key, false);
return;
}
- CounterMap* counterMap = counterMaps().get(renderer);
+ CounterMap* counterMap = counterMaps().get(&renderer);
ASSERT(counterMap);
for (CounterDirectiveMap::const_iterator it = directiveMap->begin(); it != end; ++it) {
RefPtr<CounterNode> node = counterMap->get(it->key);
@@ -547,12 +544,12 @@ void RenderCounter::rendererSubtreeAttached(RenderObject* renderer)
if (node && node->needsAttach())
return; // No need to update if the parent is not attached yet
for (RenderObject* descendant = renderer; descendant; descendant = descendant->nextInPreOrder(renderer))
- updateCounters(descendant);
+ updateCounters(*descendant);
}
-void RenderCounter::rendererStyleChanged(RenderObject* renderer, const RenderStyle* oldStyle, const RenderStyle* newStyle)
+void RenderCounter::rendererStyleChanged(RenderObject& renderer, const RenderStyle* oldStyle, const RenderStyle* newStyle)
{
- Node* node = renderer->generatingNode();
+ Node* node = renderer.generatingNode();
if (!node || node->needsAttach())
return; // cannot have generated content or if it can have, it will be handled during attaching
const CounterDirectiveMap* newCounterDirectives;
@@ -579,7 +576,7 @@ void RenderCounter::rendererStyleChanged(RenderObject* renderer, const RenderSty
RenderCounter::destroyCounterNode(renderer, it->key);
}
} else {
- if (renderer->hasCounterNodeMap())
+ if (renderer.hasCounterNodeMap())
RenderCounter::destroyCounterNodes(renderer);
}
} else if (newStyle && (newCounterDirectives = newStyle->counterDirectives())) {
« no previous file with comments | « Source/core/rendering/RenderCounter.h ('k') | Source/core/rendering/RenderListItem.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698