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

Side by Side Diff: Source/WebCore/rendering/RenderCounter.cpp

Issue 7049017: Merge 86358 - 2011-05-12 Carol Szabo <carol@webkit.org> (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/742/
Patch Set: Created 9 years, 7 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 unified diff | Download patch
OLDNEW
1 /** 1 /**
2 * Copyright (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 2 * Copyright (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
3 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. 3 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 // directives must occur, in which case, RenderCounter::destroyCounterNodes( ) 568 // directives must occur, in which case, RenderCounter::destroyCounterNodes( )
569 // must be called. 569 // must be called.
570 // The destruction of the Renderer (possibly caused by the removal of its 570 // The destruction of the Renderer (possibly caused by the removal of its
571 // associated DOM node) is the other case that leads to the permanent 571 // associated DOM node) is the other case that leads to the permanent
572 // destruction of all counters attached to a Renderer. In this case 572 // destruction of all counters attached to a Renderer. In this case
573 // RenderCounter::destroyCounterNodes() must be and is now called, too. 573 // RenderCounter::destroyCounterNodes() must be and is now called, too.
574 // RenderCounter::destroyCounterNodes() handles destruction of the counter 574 // RenderCounter::destroyCounterNodes() handles destruction of the counter
575 // map associated with a renderer, so there is no risk in leaking the map. 575 // map associated with a renderer, so there is no risk in leaking the map.
576 } 576 }
577 577
578 void RenderCounter::rendererRemovedFromTree(RenderObject* removedRenderer)
579 {
580 RenderObject* currentRenderer = removedRenderer->lastLeafChild();
581 if (!currentRenderer)
582 currentRenderer = removedRenderer;
583 while (true) {
584 destroyCounterNodes(currentRenderer);
585 if (currentRenderer == removedRenderer)
586 break;
587 currentRenderer = currentRenderer->previousInPreOrder();
588 }
589 }
590
578 static void updateCounters(RenderObject* renderer) 591 static void updateCounters(RenderObject* renderer)
579 { 592 {
580 ASSERT(renderer->style()); 593 ASSERT(renderer->style());
581 const CounterDirectiveMap* directiveMap = renderer->style()->counterDirectiv es(); 594 const CounterDirectiveMap* directiveMap = renderer->style()->counterDirectiv es();
582 if (!directiveMap) 595 if (!directiveMap)
583 return; 596 return;
584 CounterDirectiveMap::const_iterator end = directiveMap->end(); 597 CounterDirectiveMap::const_iterator end = directiveMap->end();
585 if (!renderer->m_hasCounterNodeMap) { 598 if (!renderer->m_hasCounterNodeMap) {
586 for (CounterDirectiveMap::const_iterator it = directiveMap->begin(); it != end; ++it) 599 for (CounterDirectiveMap::const_iterator it = directiveMap->begin(); it != end; ++it)
587 makeCounterNode(renderer, AtomicString(it->first.get()), false); 600 makeCounterNode(renderer, AtomicString(it->first.get()), false);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 fprintf(stderr, " "); 699 fprintf(stderr, " ");
687 fprintf(stderr, "%p N:%p P:%p PS:%p NS:%p C:%p\n", 700 fprintf(stderr, "%p N:%p P:%p PS:%p NS:%p C:%p\n",
688 current, current->node(), current->parent(), current->previousSiblin g(), 701 current, current->node(), current->parent(), current->previousSiblin g(),
689 current->nextSibling(), current->m_hasCounterNodeMap? 702 current->nextSibling(), current->m_hasCounterNodeMap?
690 counterName ? WebCore::counterMaps().get(current)->get(identifier.im pl()).get() : (WebCore::CounterNode*)1 : (WebCore::CounterNode*)0); 703 counterName ? WebCore::counterMaps().get(current)->get(identifier.im pl()).get() : (WebCore::CounterNode*)1 : (WebCore::CounterNode*)0);
691 } 704 }
692 fflush(stderr); 705 fflush(stderr);
693 } 706 }
694 707
695 #endif // NDEBUG 708 #endif // NDEBUG
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/RenderCounter.h ('k') | Source/WebCore/rendering/RenderObjectChildList.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698