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

Side by Side Diff: Source/core/layout/LayoutCounter.cpp

Issue 884483003: Rename/move counter rendering code to layout. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/layout/LayoutCounter.h ('k') | Source/core/rendering/CounterNode.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details. 13 * Library General Public License for more details.
14 * 14 *
15 * You should have received a copy of the GNU Library General Public License 15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to 16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA. 18 * Boston, MA 02110-1301, USA.
19 * 19 *
20 */ 20 */
21 21
22 #include "config.h" 22 #include "config.h"
23 #include "core/rendering/RenderCounter.h" 23 #include "core/layout/LayoutCounter.h"
24 24
25 #include "core/HTMLNames.h" 25 #include "core/HTMLNames.h"
26 #include "core/dom/Element.h" 26 #include "core/dom/Element.h"
27 #include "core/dom/ElementTraversal.h" 27 #include "core/dom/ElementTraversal.h"
28 #include "core/html/HTMLOListElement.h" 28 #include "core/html/HTMLOListElement.h"
29 #include "core/rendering/CounterNode.h" 29 #include "core/layout/CounterNode.h"
30 #include "core/rendering/RenderListItem.h" 30 #include "core/rendering/RenderListItem.h"
31 #include "core/rendering/RenderListMarker.h" 31 #include "core/rendering/RenderListMarker.h"
32 #include "core/rendering/RenderView.h" 32 #include "core/rendering/RenderView.h"
33 #include "core/rendering/style/RenderStyle.h" 33 #include "core/rendering/style/RenderStyle.h"
34 #include "wtf/StdLibExtras.h" 34 #include "wtf/StdLibExtras.h"
35 35
36 #ifndef NDEBUG 36 #ifndef NDEBUG
37 #include <stdio.h> 37 #include <stdio.h>
38 #endif 38 #endif
39 39
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 if (previousSiblingProtector) { 267 if (previousSiblingProtector) {
268 // Since we had a suitable previous counter before, we shoul d only consider this one as our 268 // Since we had a suitable previous counter before, we shoul d only consider this one as our
269 // previousSibling if it is a reset counter and hence the cu rrent previousSibling is its child. 269 // previousSibling if it is a reset counter and hence the cu rrent previousSibling is its child.
270 if (currentCounter->actsAsReset()) { 270 if (currentCounter->actsAsReset()) {
271 previousSiblingProtector = currentCounter; 271 previousSiblingProtector = currentCounter;
272 // We are no longer interested in previous siblings of t he currentRenderer or their children 272 // We are no longer interested in previous siblings of t he currentRenderer or their children
273 // as counters they may have attached cannot be the prev ious sibling of the counter we are placing. 273 // as counters they may have attached cannot be the prev ious sibling of the counter we are placing.
274 currentRenderer = parentElement(*currentRenderer)->rende rer(); 274 currentRenderer = parentElement(*currentRenderer)->rende rer();
275 continue; 275 continue;
276 } 276 }
277 } else 277 } else {
278 previousSiblingProtector = currentCounter; 278 previousSiblingProtector = currentCounter;
279 }
279 currentRenderer = previousSiblingOrParent(*currentRenderer); 280 currentRenderer = previousSiblingOrParent(*currentRenderer);
280 continue; 281 continue;
281 } 282 }
282 } 283 }
283 // This function is designed so that the same test is not done twice in an iteration, except for this one 284 // This function is designed so that the same test is not done twice in an iteration, except for this one
284 // which may be done twice in some cases. Rearranging the decision point s though, to accommodate this 285 // which may be done twice in some cases. Rearranging the decision point s though, to accommodate this
285 // performance improvement would create more code duplication than is wo rthwhile in my oppinion and may further 286 // performance improvement would create more code duplication than is wo rthwhile in my oppinion and may further
286 // impede the readability of this already complex algorithm. 287 // impede the readability of this already complex algorithm.
287 if (previousSiblingProtector) 288 if (previousSiblingProtector)
288 currentRenderer = previousSiblingOrParent(*currentRenderer); 289 currentRenderer = previousSiblingOrParent(*currentRenderer);
(...skipping 16 matching lines...) Expand all
305 int value = 0; 306 int value = 0;
306 if (!planCounter(object, identifier, isReset, value) && !alwaysCreateCounter ) 307 if (!planCounter(object, identifier, isReset, value) && !alwaysCreateCounter )
307 return 0; 308 return 0;
308 309
309 RefPtr<CounterNode> newParent = nullptr; 310 RefPtr<CounterNode> newParent = nullptr;
310 RefPtr<CounterNode> newPreviousSibling = nullptr; 311 RefPtr<CounterNode> newPreviousSibling = nullptr;
311 RefPtr<CounterNode> newNode = CounterNode::create(object, isReset, value); 312 RefPtr<CounterNode> newNode = CounterNode::create(object, isReset, value);
312 if (findPlaceForCounter(object, identifier, isReset, newParent, newPreviousS ibling)) 313 if (findPlaceForCounter(object, identifier, isReset, newParent, newPreviousS ibling))
313 newParent->insertAfter(newNode.get(), newPreviousSibling.get(), identifi er); 314 newParent->insertAfter(newNode.get(), newPreviousSibling.get(), identifi er);
314 CounterMap* nodeMap; 315 CounterMap* nodeMap;
315 if (object.hasCounterNodeMap()) 316 if (object.hasCounterNodeMap()) {
316 nodeMap = counterMaps().get(&object); 317 nodeMap = counterMaps().get(&object);
317 else { 318 } else {
318 nodeMap = new CounterMap; 319 nodeMap = new CounterMap;
319 counterMaps().set(&object, adoptPtr(nodeMap)); 320 counterMaps().set(&object, adoptPtr(nodeMap));
320 object.setHasCounterNodeMap(true); 321 object.setHasCounterNodeMap(true);
321 } 322 }
322 nodeMap->set(identifier, newNode); 323 nodeMap->set(identifier, newNode);
323 if (newNode->parent()) 324 if (newNode->parent())
324 return newNode.get(); 325 return newNode.get();
325 // Checking if some nodes that were previously counter tree root nodes 326 // Checking if some nodes that were previously counter tree root nodes
326 // should become children of this node now. 327 // should become children of this node now.
327 CounterMaps& maps = counterMaps(); 328 CounterMaps& maps = counterMaps();
328 Element* stayWithin = parentElement(object); 329 Element* stayWithin = parentElement(object);
329 bool skipDescendants; 330 bool skipDescendants;
330 for (RenderObject* currentRenderer = nextInPreOrder(object, stayWithin); cur rentRenderer; currentRenderer = nextInPreOrder(*currentRenderer, stayWithin, ski pDescendants)) { 331 for (RenderObject* currentRenderer = nextInPreOrder(object, stayWithin); cur rentRenderer; currentRenderer = nextInPreOrder(*currentRenderer, stayWithin, ski pDescendants)) {
331 skipDescendants = false; 332 skipDescendants = false;
332 if (!currentRenderer->hasCounterNodeMap()) 333 if (!currentRenderer->hasCounterNodeMap())
333 continue; 334 continue;
334 CounterNode* currentCounter = maps.get(currentRenderer)->get(identifier) ; 335 CounterNode* currentCounter = maps.get(currentRenderer)->get(identifier) ;
335 if (!currentCounter) 336 if (!currentCounter)
336 continue; 337 continue;
337 skipDescendants = true; 338 skipDescendants = true;
338 if (currentCounter->parent()) 339 if (currentCounter->parent())
339 continue; 340 continue;
340 if (stayWithin == parentElement(*currentRenderer) && currentCounter->has ResetType()) 341 if (stayWithin == parentElement(*currentRenderer) && currentCounter->has ResetType())
341 break; 342 break;
342 newNode->insertAfter(currentCounter, newNode->lastChild(), identifier); 343 newNode->insertAfter(currentCounter, newNode->lastChild(), identifier);
343 } 344 }
344 return newNode.get(); 345 return newNode.get();
345 } 346 }
346 347
347 RenderCounter::RenderCounter(Document* node, const CounterContent& counter) 348 LayoutCounter::LayoutCounter(Document* node, const CounterContent& counter)
348 : RenderText(node, StringImpl::empty()) 349 : RenderText(node, StringImpl::empty())
349 , m_counter(counter) 350 , m_counter(counter)
350 , m_counterNode(0) 351 , m_counterNode(0)
351 , m_nextForSameCounter(0) 352 , m_nextForSameCounter(0)
352 { 353 {
353 view()->addRenderCounter(); 354 view()->addLayoutCounter();
354 } 355 }
355 356
356 RenderCounter::~RenderCounter() 357 LayoutCounter::~LayoutCounter()
357 { 358 {
358 } 359 }
359 360
360 void RenderCounter::destroy() 361 void LayoutCounter::destroy()
361 { 362 {
362 if (m_counterNode) { 363 if (m_counterNode) {
363 m_counterNode->removeRenderer(this); 364 m_counterNode->removeRenderer(this);
364 ASSERT(!m_counterNode); 365 ASSERT(!m_counterNode);
365 } 366 }
366 RenderText::destroy(); 367 RenderText::destroy();
367 } 368 }
368 369
369 void RenderCounter::willBeDestroyed() 370 void LayoutCounter::willBeDestroyed()
370 { 371 {
371 if (view()) 372 if (view())
372 view()->removeRenderCounter(); 373 view()->removeLayoutCounter();
373 RenderText::willBeDestroyed(); 374 RenderText::willBeDestroyed();
374 } 375 }
375 376
376 const char* RenderCounter::renderName() const 377 const char* LayoutCounter::renderName() const
377 { 378 {
378 return "RenderCounter"; 379 return "LayoutCounter";
379 } 380 }
380 381
381 PassRefPtr<StringImpl> RenderCounter::originalText() const 382 PassRefPtr<StringImpl> LayoutCounter::originalText() const
382 { 383 {
383 if (!m_counterNode) { 384 if (!m_counterNode) {
384 RenderObject* beforeAfterContainer = parent(); 385 RenderObject* beforeAfterContainer = parent();
385 while (true) { 386 while (true) {
386 if (!beforeAfterContainer) 387 if (!beforeAfterContainer)
387 return nullptr; 388 return nullptr;
388 if (!beforeAfterContainer->isAnonymous() && !beforeAfterContainer->i sPseudoElement()) 389 if (!beforeAfterContainer->isAnonymous() && !beforeAfterContainer->i sPseudoElement())
389 return nullptr; // RenderCounters are restricted to before and a fter pseudo elements 390 return nullptr; // LayoutCounters are restricted to before and a fter pseudo elements
390 PseudoId containerStyle = beforeAfterContainer->style()->styleType() ; 391 PseudoId containerStyle = beforeAfterContainer->style()->styleType() ;
391 if ((containerStyle == BEFORE) || (containerStyle == AFTER)) 392 if ((containerStyle == BEFORE) || (containerStyle == AFTER))
392 break; 393 break;
393 beforeAfterContainer = beforeAfterContainer->parent(); 394 beforeAfterContainer = beforeAfterContainer->parent();
394 } 395 }
395 makeCounterNode(*beforeAfterContainer, m_counter.identifier(), true)->ad dRenderer(const_cast<RenderCounter*>(this)); 396 makeCounterNode(*beforeAfterContainer, m_counter.identifier(), true)->ad dRenderer(const_cast<LayoutCounter*>(this));
396 ASSERT(m_counterNode); 397 ASSERT(m_counterNode);
397 } 398 }
398 CounterNode* child = m_counterNode; 399 CounterNode* child = m_counterNode;
399 int value = child->actsAsReset() ? child->value() : child->countInParent(); 400 int value = child->actsAsReset() ? child->value() : child->countInParent();
400 401
401 String text = listMarkerText(m_counter.listStyle(), value); 402 String text = listMarkerText(m_counter.listStyle(), value);
402 403
403 if (!m_counter.separator().isNull()) { 404 if (!m_counter.separator().isNull()) {
404 if (!child->actsAsReset()) 405 if (!child->actsAsReset())
405 child = child->parent(); 406 child = child->parent();
406 while (CounterNode* parent = child->parent()) { 407 while (CounterNode* parent = child->parent()) {
407 text = listMarkerText(m_counter.listStyle(), child->countInParent()) 408 text = listMarkerText(m_counter.listStyle(), child->countInParent())
408 + m_counter.separator() + text; 409 + m_counter.separator() + text;
409 child = parent; 410 child = parent;
410 } 411 }
411 } 412 }
412 413
413 return text.impl(); 414 return text.impl();
414 } 415 }
415 416
416 void RenderCounter::updateCounter() 417 void LayoutCounter::updateCounter()
417 { 418 {
418 setText(originalText()); 419 setText(originalText());
419 } 420 }
420 421
421 void RenderCounter::invalidate() 422 void LayoutCounter::invalidate()
422 { 423 {
423 m_counterNode->removeRenderer(this); 424 m_counterNode->removeRenderer(this);
424 ASSERT(!m_counterNode); 425 ASSERT(!m_counterNode);
425 if (documentBeingDestroyed()) 426 if (documentBeingDestroyed())
426 return; 427 return;
427 setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); 428 setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation();
428 } 429 }
429 430
430 static void destroyCounterNodeWithoutMapRemoval(const AtomicString& identifier, CounterNode* node) 431 static void destroyCounterNodeWithoutMapRemoval(const AtomicString& identifier, CounterNode* node)
431 { 432 {
432 CounterNode* previous; 433 CounterNode* previous;
433 for (RefPtr<CounterNode> child = node->lastDescendant(); child && child != n ode; child = previous) { 434 for (RefPtr<CounterNode> child = node->lastDescendant(); child && child != n ode; child = previous) {
434 previous = child->previousInPreOrder(); 435 previous = child->previousInPreOrder();
435 child->parent()->removeChild(child.get()); 436 child->parent()->removeChild(child.get());
436 ASSERT(counterMaps().get(&child->owner())->get(identifier) == child); 437 ASSERT(counterMaps().get(&child->owner())->get(identifier) == child);
437 counterMaps().get(&child->owner())->remove(identifier); 438 counterMaps().get(&child->owner())->remove(identifier);
438 } 439 }
439 if (CounterNode* parent = node->parent()) 440 if (CounterNode* parent = node->parent())
440 parent->removeChild(node); 441 parent->removeChild(node);
441 } 442 }
442 443
443 void RenderCounter::destroyCounterNodes(RenderObject& owner) 444 void LayoutCounter::destroyCounterNodes(RenderObject& owner)
444 { 445 {
445 CounterMaps& maps = counterMaps(); 446 CounterMaps& maps = counterMaps();
446 CounterMaps::iterator mapsIterator = maps.find(&owner); 447 CounterMaps::iterator mapsIterator = maps.find(&owner);
447 if (mapsIterator == maps.end()) 448 if (mapsIterator == maps.end())
448 return; 449 return;
449 CounterMap* map = mapsIterator->value.get(); 450 CounterMap* map = mapsIterator->value.get();
450 CounterMap::const_iterator end = map->end(); 451 CounterMap::const_iterator end = map->end();
451 for (CounterMap::const_iterator it = map->begin(); it != end; ++it) { 452 for (CounterMap::const_iterator it = map->begin(); it != end; ++it) {
452 destroyCounterNodeWithoutMapRemoval(it->key, it->value.get()); 453 destroyCounterNodeWithoutMapRemoval(it->key, it->value.get());
453 } 454 }
454 maps.remove(mapsIterator); 455 maps.remove(mapsIterator);
455 owner.setHasCounterNodeMap(false); 456 owner.setHasCounterNodeMap(false);
456 } 457 }
457 458
458 void RenderCounter::destroyCounterNode(RenderObject& owner, const AtomicString& identifier) 459 void LayoutCounter::destroyCounterNode(RenderObject& owner, const AtomicString& identifier)
459 { 460 {
460 CounterMap* map = counterMaps().get(&owner); 461 CounterMap* map = counterMaps().get(&owner);
461 if (!map) 462 if (!map)
462 return; 463 return;
463 CounterMap::iterator mapIterator = map->find(identifier); 464 CounterMap::iterator mapIterator = map->find(identifier);
464 if (mapIterator == map->end()) 465 if (mapIterator == map->end())
465 return; 466 return;
466 destroyCounterNodeWithoutMapRemoval(identifier, mapIterator->value.get()); 467 destroyCounterNodeWithoutMapRemoval(identifier, mapIterator->value.get());
467 map->remove(mapIterator); 468 map->remove(mapIterator);
468 // We do not delete "map" here even if empty because we expect to reuse 469 // We do not delete "map" here even if empty because we expect to reuse
469 // it soon. In order for a renderer to lose all its counters permanently, 470 // it soon. In order for a renderer to lose all its counters permanently,
470 // a style change for the renderer involving removal of all counter 471 // a style change for the renderer involving removal of all counter
471 // directives must occur, in which case, RenderCounter::destroyCounterNodes( ) 472 // directives must occur, in which case, LayoutCounter::destroyCounterNodes( )
472 // must be called. 473 // must be called.
473 // The destruction of the Renderer (possibly caused by the removal of its 474 // The destruction of the Renderer (possibly caused by the removal of its
474 // associated DOM node) is the other case that leads to the permanent 475 // associated DOM node) is the other case that leads to the permanent
475 // destruction of all counters attached to a Renderer. In this case 476 // destruction of all counters attached to a Renderer. In this case
476 // RenderCounter::destroyCounterNodes() must be and is now called, too. 477 // LayoutCounter::destroyCounterNodes() must be and is now called, too.
477 // RenderCounter::destroyCounterNodes() handles destruction of the counter 478 // LayoutCounter::destroyCounterNodes() handles destruction of the counter
478 // map associated with a renderer, so there is no risk in leaking the map. 479 // map associated with a renderer, so there is no risk in leaking the map.
479 } 480 }
480 481
481 void RenderCounter::rendererRemovedFromTree(RenderObject* renderer) 482 void LayoutCounter::rendererRemovedFromTree(RenderObject* renderer)
482 { 483 {
483 ASSERT(renderer->view()); 484 ASSERT(renderer->view());
484 if (!renderer->view()->hasRenderCounters()) 485 if (!renderer->view()->hasLayoutCounters())
485 return; 486 return;
486 RenderObject* currentRenderer = renderer->lastLeafChild(); 487 RenderObject* currentRenderer = renderer->lastLeafChild();
487 if (!currentRenderer) 488 if (!currentRenderer)
488 currentRenderer = renderer; 489 currentRenderer = renderer;
489 while (true) { 490 while (true) {
490 destroyCounterNodes(*currentRenderer); 491 destroyCounterNodes(*currentRenderer);
491 if (currentRenderer == renderer) 492 if (currentRenderer == renderer)
492 break; 493 break;
493 currentRenderer = currentRenderer->previousInPreOrder(); 494 currentRenderer = currentRenderer->previousInPreOrder();
494 } 495 }
(...skipping 28 matching lines...) Expand all
523 CounterNode* parent = node->parent(); 524 CounterNode* parent = node->parent();
524 if (newParent == parent && newPreviousSibling == node->previousSibling() ) 525 if (newParent == parent && newPreviousSibling == node->previousSibling() )
525 continue; 526 continue;
526 if (parent) 527 if (parent)
527 parent->removeChild(node.get()); 528 parent->removeChild(node.get());
528 if (newParent) 529 if (newParent)
529 newParent->insertAfter(node.get(), newPreviousSibling.get(), it->key ); 530 newParent->insertAfter(node.get(), newPreviousSibling.get(), it->key );
530 } 531 }
531 } 532 }
532 533
533 void RenderCounter::rendererSubtreeAttached(RenderObject* renderer) 534 void LayoutCounter::rendererSubtreeAttached(RenderObject* renderer)
534 { 535 {
535 ASSERT(renderer->view()); 536 ASSERT(renderer->view());
536 if (!renderer->view()->hasRenderCounters()) 537 if (!renderer->view()->hasLayoutCounters())
537 return; 538 return;
538 Node* node = renderer->node(); 539 Node* node = renderer->node();
539 if (node) 540 if (node)
540 node = node->parentNode(); 541 node = node->parentNode();
541 else 542 else
542 node = renderer->generatingNode(); 543 node = renderer->generatingNode();
543 if (node && node->needsAttach()) 544 if (node && node->needsAttach())
544 return; // No need to update if the parent is not attached yet 545 return; // No need to update if the parent is not attached yet
545 for (RenderObject* descendant = renderer; descendant; descendant = descendan t->nextInPreOrder(renderer)) 546 for (RenderObject* descendant = renderer; descendant; descendant = descendan t->nextInPreOrder(renderer))
546 updateCounters(*descendant); 547 updateCounters(*descendant);
547 } 548 }
548 549
549 void RenderCounter::rendererStyleChanged(RenderObject& renderer, const RenderSty le* oldStyle, const RenderStyle* newStyle) 550 void LayoutCounter::rendererStyleChanged(RenderObject& renderer, const RenderSty le* oldStyle, const RenderStyle* newStyle)
550 { 551 {
551 Node* node = renderer.generatingNode(); 552 Node* node = renderer.generatingNode();
552 if (!node || node->needsAttach()) 553 if (!node || node->needsAttach())
553 return; // cannot have generated content or if it can have, it will be h andled during attaching 554 return; // cannot have generated content or if it can have, it will be h andled during attaching
554 const CounterDirectiveMap* oldCounterDirectives = oldStyle ? oldStyle->count erDirectives() : 0; 555 const CounterDirectiveMap* oldCounterDirectives = oldStyle ? oldStyle->count erDirectives() : 0;
555 const CounterDirectiveMap* newCounterDirectives = newStyle ? newStyle->count erDirectives() : 0; 556 const CounterDirectiveMap* newCounterDirectives = newStyle ? newStyle->count erDirectives() : 0;
556 if (oldCounterDirectives) { 557 if (oldCounterDirectives) {
557 if (newCounterDirectives) { 558 if (newCounterDirectives) {
558 CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives ->end(); 559 CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives ->end();
559 CounterDirectiveMap::const_iterator oldMapEnd = oldCounterDirectives ->end(); 560 CounterDirectiveMap::const_iterator oldMapEnd = oldCounterDirectives ->end();
560 for (CounterDirectiveMap::const_iterator it = newCounterDirectives-> begin(); it != newMapEnd; ++it) { 561 for (CounterDirectiveMap::const_iterator it = newCounterDirectives-> begin(); it != newMapEnd; ++it) {
561 CounterDirectiveMap::const_iterator oldMapIt = oldCounterDirecti ves->find(it->key); 562 CounterDirectiveMap::const_iterator oldMapIt = oldCounterDirecti ves->find(it->key);
562 if (oldMapIt != oldMapEnd) { 563 if (oldMapIt != oldMapEnd) {
563 if (oldMapIt->value == it->value) 564 if (oldMapIt->value == it->value)
564 continue; 565 continue;
565 RenderCounter::destroyCounterNode(renderer, it->key); 566 LayoutCounter::destroyCounterNode(renderer, it->key);
566 } 567 }
567 // We must create this node here, because the changed node may b e a node with no display such as 568 // We must create this node here, because the changed node may b e a node with no display such as
568 // as those created by the increment or reset directives and the re-layout that will happen will 569 // as those created by the increment or reset directives and the re-layout that will happen will
569 // not catch the change if the node had no children. 570 // not catch the change if the node had no children.
570 makeCounterNode(renderer, it->key, false); 571 makeCounterNode(renderer, it->key, false);
571 } 572 }
572 // Destroying old counters that do not exist in the new counterDirec tive map. 573 // Destroying old counters that do not exist in the new counterDirec tive map.
573 for (CounterDirectiveMap::const_iterator it = oldCounterDirectives-> begin(); it !=oldMapEnd; ++it) { 574 for (CounterDirectiveMap::const_iterator it = oldCounterDirectives-> begin(); it !=oldMapEnd; ++it) {
574 if (!newCounterDirectives->contains(it->key)) 575 if (!newCounterDirectives->contains(it->key))
575 RenderCounter::destroyCounterNode(renderer, it->key); 576 LayoutCounter::destroyCounterNode(renderer, it->key);
576 } 577 }
577 } else { 578 } else {
578 if (renderer.hasCounterNodeMap()) 579 if (renderer.hasCounterNodeMap())
579 RenderCounter::destroyCounterNodes(renderer); 580 LayoutCounter::destroyCounterNodes(renderer);
580 } 581 }
581 } else if (newCounterDirectives) { 582 } else if (newCounterDirectives) {
582 CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives->en d(); 583 CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives->en d();
583 for (CounterDirectiveMap::const_iterator it = newCounterDirectives->begi n(); it != newMapEnd; ++it) { 584 for (CounterDirectiveMap::const_iterator it = newCounterDirectives->begi n(); it != newMapEnd; ++it) {
584 // We must create this node here, because the added node may be a no de with no display such as 585 // We must create this node here, because the added node may be a no de with no display such as
585 // as those created by the increment or reset directives and the re- layout that will happen will 586 // as those created by the increment or reset directives and the re- layout that will happen will
586 // not catch the change if the node had no children. 587 // not catch the change if the node had no children.
587 makeCounterNode(renderer, it->key, false); 588 makeCounterNode(renderer, it->key, false);
588 } 589 }
589 } 590 }
(...skipping 18 matching lines...) Expand all
608 fprintf(stderr, " "); 609 fprintf(stderr, " ");
609 fprintf(stderr, "%p N:%p P:%p PS:%p NS:%p C:%p\n", 610 fprintf(stderr, "%p N:%p P:%p PS:%p NS:%p C:%p\n",
610 current, current->node(), current->parent(), current->previousSiblin g(), 611 current, current->node(), current->parent(), current->previousSiblin g(),
611 current->nextSibling(), current->hasCounterNodeMap() ? 612 current->nextSibling(), current->hasCounterNodeMap() ?
612 counterName ? blink::counterMaps().get(current)->get(identifier) : ( blink::CounterNode*)1 : (blink::CounterNode*)0); 613 counterName ? blink::counterMaps().get(current)->get(identifier) : ( blink::CounterNode*)1 : (blink::CounterNode*)0);
613 } 614 }
614 fflush(stderr); 615 fflush(stderr);
615 } 616 }
616 617
617 #endif // NDEBUG 618 #endif // NDEBUG
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutCounter.h ('k') | Source/core/rendering/CounterNode.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698