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

Side by Side Diff: Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp

Issue 869583002: [New Multicolumn] Support dynamic insertion and removal of multicol content. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "core/rendering/RenderMultiColumnFlowThread.h" 7 #include "core/rendering/RenderMultiColumnFlowThread.h"
8 8
9 #include "core/rendering/RenderMultiColumnSet.h" 9 #include "core/rendering/RenderMultiColumnSet.h"
10 #include "core/rendering/RenderMultiColumnSpannerPlaceholder.h" 10 #include "core/rendering/RenderMultiColumnSpannerPlaceholder.h"
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(599)), firstRow); // empty content in last column in first row 334 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(599)), firstRow); // empty content in last column in first row
335 RenderMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet(); 335 RenderMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet();
336 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(600)), secondRow); 336 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(600)), secondRow);
337 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), secondRow); 337 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), secondRow);
338 RenderMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet(); 338 RenderMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet();
339 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(800)), thirdRow); 339 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(800)), thirdRow);
340 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(899)), thirdRow); // bottom of last row 340 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(899)), thirdRow); // bottom of last row
341 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow); // overflow 341 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow); // overflow
342 } 342 }
343 343
344 class MultiColumnTreeModifyingTest : public MultiColumnRenderingTest {
345 public:
346 void setMulticolHTML(const char*);
347 void reparentRenderer(const char* newParentId, const char* childId, const ch ar* insertBeforeId = 0);
348 void destroyRenderer(RenderObject* child);
349 void destroyRenderer(const char* childId);
350 };
351
352 void MultiColumnTreeModifyingTest::setMulticolHTML(const char* html)
353 {
354 MultiColumnRenderingTest::setMulticolHTML(html);
355 // Allow modifications to the render tree structure, because that's what we want to test.
356 document().lifecycle().advanceTo(DocumentLifecycle::InStyleRecalc);
357 }
358
359 void MultiColumnTreeModifyingTest::reparentRenderer(const char* newParentId, con st char* childId, const char* insertBeforeId)
360 {
361 RenderObject* newParent = document().getElementById(newParentId)->renderer() ;
362 RenderObject* child = document().getElementById(childId)->renderer();
363 RenderObject* insertBefore = insertBeforeId ? document().getElementById(inse rtBeforeId)->renderer() : 0;
364 child->remove();
365 newParent->addChild(child, insertBefore);
366 }
367
368 void MultiColumnTreeModifyingTest::destroyRenderer(RenderObject* child)
369 {
370 // Remove and destroy in separate steps, so that we get to test removal of s ubtrees.
371 child->remove();
372 child->node()->detach();
373 }
374
375 void MultiColumnTreeModifyingTest::destroyRenderer(const char* childId)
376 {
377 destroyRenderer(document().getElementById(childId)->renderer());
378 }
379
380 TEST_F(MultiColumnTreeModifyingTest, InsertFirstContentAndRemove)
381 {
382 setMulticolHTML("<div id='block'></div><div id='mc'></div>");
383 RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
384 RenderBlockFlow* block = toRenderBlockFlow(document().getElementById("block" )->renderer());
385 RenderBlockFlow* multicolContainer = toRenderBlockFlow(document().getElement ById("mc")->renderer());
386 block->remove();
387 multicolContainer->addChild(block);
388 EXPECT_EQ(block->parent(), flowThread);
389 // A set should have appeared, now that the multicol container has content.
390 EXPECT_EQ(columnSetSignature(flowThread), "c");
391
392 destroyRenderer(block);
393 // The set should be gone again now, since there's nothing inside the multic ol container anymore.
394 EXPECT_EQ(columnSetSignature("mc"), "");
395 }
396
397 TEST_F(MultiColumnTreeModifyingTest, InsertContentBeforeContentAndRemove)
398 {
399 setMulticolHTML("<div id='block'></div><div id='mc'><div id='insertBefore'>< /div></div>");
400 EXPECT_EQ(columnSetSignature("mc"), "c");
401 reparentRenderer("mc", "block", "insertBefore");
402 // There was already some content prior to our insertion, so no new set shou ld be inserted.
403 EXPECT_EQ(columnSetSignature("mc"), "c");
404 destroyRenderer("block");
405 // There's still some content after the removal, so the set should remain.
406 EXPECT_EQ(columnSetSignature("mc"), "c");
407 }
408
409 TEST_F(MultiColumnTreeModifyingTest, InsertContentAfterContentAndRemove)
410 {
411 setMulticolHTML("<div id='block'></div><div id='mc'><div></div></div>");
412 EXPECT_EQ(columnSetSignature("mc"), "c");
413 reparentRenderer("mc", "block");
414 // There was already some content prior to our insertion, so no new set shou ld be inserted.
415 EXPECT_EQ(columnSetSignature("mc"), "c");
416 destroyRenderer("block");
417 // There's still some content after the removal, so the set should remain.
418 EXPECT_EQ(columnSetSignature("mc"), "c");
419 }
420
421 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerAndRemove)
422 {
423 setMulticolHTML("<div id='spanner'></div><div id='mc'></div>");
424 RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
425 RenderBlockFlow* spanner = toRenderBlockFlow(document().getElementById("span ner")->renderer());
426 RenderBlockFlow* multicolContainer = toRenderBlockFlow(document().getElement ById("mc")->renderer());
427 spanner->remove();
428 multicolContainer->addChild(spanner);
429 EXPECT_EQ(spanner->parent(), flowThread);
430 // We should now have a spanner placeholder, since we just moved a spanner i nto the multicol container.
431 EXPECT_EQ(columnSetSignature(flowThread), "s");
432 destroyRenderer(spanner);
433 EXPECT_EQ(columnSetSignature(flowThread), "");
434 }
435
436 TEST_F(MultiColumnTreeModifyingTest, InsertTwoSpannersAndRemove)
437 {
438 setMulticolHTML("<div id='block'>ee<div class='s'></div><div class='s'></div ></div><div id='mc'></div>");
439 reparentRenderer("mc", "block");
440 EXPECT_EQ(columnSetSignature("mc"), "css");
441 destroyRenderer("block");
442 EXPECT_EQ(columnSetSignature("mc"), "");
443 }
444
445 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerAfterContentAndRemove)
446 {
447 setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div></div>");
448 reparentRenderer("mc", "spanner");
449 // We should now have a spanner placeholder, since we just moved a spanner i nto the multicol container.
450 EXPECT_EQ(columnSetSignature("mc"), "cs");
451 destroyRenderer("spanner");
452 EXPECT_EQ(columnSetSignature("mc"), "c");
453 }
454
455 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerBeforeContentAndRemove)
456 {
457 setMulticolHTML("<div id='spanner'></div><div id='mc'><div id='columnContent '></div></div>");
458 reparentRenderer("mc", "spanner", "columnContent");
459 // We should now have a spanner placeholder, since we just moved a spanner i nto the multicol container.
460 EXPECT_EQ(columnSetSignature("mc"), "sc");
461 destroyRenderer("spanner");
462 EXPECT_EQ(columnSetSignature("mc"), "c");
463 }
464
465 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerBetweenContentAndRemove)
466 {
467 setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div id='in sertBefore'></div></div>");
468 reparentRenderer("mc", "spanner", "insertBefore");
469 // Since the spanner was inserted in the middle of column content, what used to be one column
470 // set had to be split in two, in order to get a spot to insert the spanner placeholder.
471 EXPECT_EQ(columnSetSignature("mc"), "csc");
472 destroyRenderer("spanner");
473 // The spanner placeholder should be gone again now, and the two sets be mer ged into one.
474 EXPECT_EQ(columnSetSignature("mc"), "c");
475 }
476
477 TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithContentAndSpannerAndRemove )
478 {
479 setMulticolHTML("<div id='block'>text<div id='spanner'></div>text</div><div id='mc'></div>");
480 reparentRenderer("mc", "block");
481 EXPECT_EQ(columnSetSignature("mc"), "csc");
482 destroyRenderer("block");
483 EXPECT_EQ(columnSetSignature("mc"), "");
484 }
485
486 TEST_F(MultiColumnTreeModifyingTest, InsertInsideSpannerAndRemove)
487 {
488 setMulticolHTML("<div id='block'>text</div><div id='mc'><div id='spanner'></ div></div>");
489 reparentRenderer("spanner", "block");
490 EXPECT_EQ(columnSetSignature("mc"), "s");
491 destroyRenderer("block");
492 EXPECT_EQ(columnSetSignature("mc"), "s");
493 }
494
495 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerInContentBeforeSpannerAndRemov e)
496 {
497 setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div id='in sertBefore'></div><div class='s'></div></div>");
498 EXPECT_EQ(columnSetSignature("mc"), "cs");
499 reparentRenderer("mc", "spanner", "insertBefore");
500 EXPECT_EQ(columnSetSignature("mc"), "cscs");
501 destroyRenderer("spanner");
502 EXPECT_EQ(columnSetSignature("mc"), "cs");
503 }
504
505 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerInContentAfterSpannerAndRemove )
506 {
507 setMulticolHTML("<div id='spanner'></div><div id='mc'><div class='s'></div>< div></div><div id='insertBefore'></div></div>");
508 EXPECT_EQ(columnSetSignature("mc"), "sc");
509 reparentRenderer("mc", "spanner", "insertBefore");
510 EXPECT_EQ(columnSetSignature("mc"), "scsc");
511 destroyRenderer("spanner");
512 EXPECT_EQ(columnSetSignature("mc"), "sc");
513 }
514
515 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerAfterSpannerAndRemove)
516 {
517 setMulticolHTML("<div id='spanner'></div><div id='mc'><div class='s'></div>< /div>");
518 reparentRenderer("mc", "spanner");
519 EXPECT_EQ(columnSetSignature("mc"), "ss");
520 destroyRenderer("spanner");
521 EXPECT_EQ(columnSetSignature("mc"), "s");
522 }
523
524 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerBeforeSpannerAndRemove)
525 {
526 setMulticolHTML("<div id='spanner'></div><div id='mc'><div id='insertBefore' class='s'></div></div>");
527 reparentRenderer("mc", "spanner", "insertBefore");
528 EXPECT_EQ(columnSetSignature("mc"), "ss");
529 destroyRenderer("spanner");
530 EXPECT_EQ(columnSetSignature("mc"), "s");
531 }
532
533 TEST_F(MultiColumnTreeModifyingTest, InsertContentBeforeSpannerAndRemove)
534 {
535 setMulticolHTML("<div id='block'></div><div id='mc'><div id='insertBefore' c lass='s'></div></div>");
536 reparentRenderer("mc", "block", "insertBefore");
537 EXPECT_EQ(columnSetSignature("mc"), "cs");
538 destroyRenderer("block");
539 EXPECT_EQ(columnSetSignature("mc"), "s");
540 }
541
542 TEST_F(MultiColumnTreeModifyingTest, InsertContentAfterContentBeforeSpannerAndRe move)
543 {
544 setMulticolHTML("<div id='block'></div><div id='mc'>text<div id='insertBefor e' class='s'></div></div>");
545 EXPECT_EQ(columnSetSignature("mc"), "cs");
546 reparentRenderer("mc", "block", "insertBefore");
547 // There was already some content before the spanner prior to our insertion, so no new set
548 // should be inserted.
549 EXPECT_EQ(columnSetSignature("mc"), "cs");
550 destroyRenderer("block");
551 EXPECT_EQ(columnSetSignature("mc"), "cs");
552 }
553
554 TEST_F(MultiColumnTreeModifyingTest, InsertContentAfterContentAndSpannerAndRemov e)
555 {
556 setMulticolHTML("<div id='block'></div><div id='mc'>content<div class='s'></ div></div>");
557 EXPECT_EQ(columnSetSignature("mc"), "cs");
558 reparentRenderer("mc", "block");
559 EXPECT_EQ(columnSetSignature("mc"), "csc");
560 destroyRenderer("block");
561 EXPECT_EQ(columnSetSignature("mc"), "cs");
562 }
563
564 TEST_F(MultiColumnTreeModifyingTest, InsertContentBeforeSpannerAndContentAndRemo ve)
565 {
566 setMulticolHTML("<div id='block'></div><div id='mc'><div id='insertBefore' c lass='s'></div>content</div>");
567 EXPECT_EQ(columnSetSignature("mc"), "sc");
568 reparentRenderer("mc", "block", "insertBefore");
569 EXPECT_EQ(columnSetSignature("mc"), "csc");
570 destroyRenderer("block");
571 EXPECT_EQ(columnSetSignature("mc"), "sc");
572 }
573
574 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerIntoContentBeforeSpannerAndRem ove)
575 {
576 setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div id='in sertBefore'></div><div class='s'></div><div class='s'></div><div></div></div>");
577 EXPECT_EQ(columnSetSignature("mc"), "cssc");
578 reparentRenderer("mc", "spanner", "insertBefore");
579 EXPECT_EQ(columnSetSignature("mc"), "cscssc");
580 destroyRenderer("spanner");
581 EXPECT_EQ(columnSetSignature("mc"), "cssc");
582 }
583
584 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerIntoContentAfterSpannerAndRemo ve)
585 {
586 setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div class= 's'></div><div class='s'></div><div></div><div id='insertBefore'></div></div>");
587 EXPECT_EQ(columnSetSignature("mc"), "cssc");
588 reparentRenderer("mc", "spanner", "insertBefore");
589 EXPECT_EQ(columnSetSignature("mc"), "csscsc");
590 destroyRenderer("spanner");
591 EXPECT_EQ(columnSetSignature("mc"), "cssc");
592 }
593
594 TEST_F(MultiColumnTreeModifyingTest, InsertInvalidSpannerAndRemove)
595 {
596 setMulticolHTML("<div class='s' id='invalidSpanner'></div><div id='mc'><div id='spanner'></div></div>");
597 EXPECT_EQ(columnSetSignature("mc"), "s");
598 reparentRenderer("spanner", "invalidSpanner");
599 // It's not allowed to nest spanners.
600 EXPECT_EQ(columnSetSignature("mc"), "s");
601 destroyRenderer("invalidSpanner");
602 EXPECT_EQ(columnSetSignature("mc"), "s");
603 }
604
605 TEST_F(MultiColumnTreeModifyingTest, InsertSpannerWithInvalidSpannerAndRemove)
606 {
607 setMulticolHTML("<div id='spanner'><div class='s' id='invalidSpanner'></div> </div><div id='mc'></div>");
608 reparentRenderer("mc", "spanner");
609 // It's not allowed to nest spanners.
610 EXPECT_EQ(columnSetSignature("mc"), "s");
611 destroyRenderer("spanner");
612 EXPECT_EQ(columnSetSignature("mc"), "");
613 }
614
615 TEST_F(MultiColumnTreeModifyingTest, InsertInvalidSpannerInSpannerBetweenContent AndRemove)
616 {
617 setMulticolHTML("<div class='s' id='invalidSpanner'></div><div id='mc'>text< div id='spanner'></div>text</div>");
618 EXPECT_EQ(columnSetSignature("mc"), "csc");
619 reparentRenderer("spanner", "invalidSpanner");
620 EXPECT_EQ(columnSetSignature("mc"), "csc");
621 destroyRenderer("invalidSpanner");
622 EXPECT_EQ(columnSetSignature("mc"), "csc");
623 }
624
625 TEST_F(MultiColumnTreeModifyingTest, InsertContentAndSpannerAndRemove)
626 {
627 setMulticolHTML("<div id='block'>text<div id='spanner'></div></div><div id=' mc'>text</div>");
628 reparentRenderer("mc", "block");
629 EXPECT_EQ(columnSetSignature("mc"), "cs");
630 destroyRenderer("block");
631 EXPECT_EQ(columnSetSignature("mc"), "c");
632 }
633
634 TEST_F(MultiColumnTreeModifyingTest, InsertContentAndSpannerAndContentAndRemove)
635 {
636 setMulticolHTML("<div id='block'><div id='spanner'></div>text</div><div id=' mc'></div>");
637 reparentRenderer("mc", "block");
638 EXPECT_EQ(columnSetSignature("mc"), "csc");
639 destroyRenderer("block");
640 EXPECT_EQ(columnSetSignature("mc"), "");
641 }
642
643 TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerAndRemove)
644 {
645 setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id= 'mc'></div>");
646 reparentRenderer("mc", "block");
647 EXPECT_EQ(columnSetSignature("mc"), "csc");
648 destroyRenderer("block");
649 EXPECT_EQ(columnSetSignature("mc"), "");
650 }
651
652 TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerAfterContentAndRemo ve)
653 {
654 setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id= 'mc'>column content</div>");
655 reparentRenderer("mc", "block");
656 EXPECT_EQ(columnSetSignature("mc"), "csc");
657 destroyRenderer("block");
658 EXPECT_EQ(columnSetSignature("mc"), "c");
659 }
660
661 TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerBeforeContentAndRem ove)
662 {
663 setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id= 'mc'><div id='insertBefore'>column content</div></div>");
664 reparentRenderer("mc", "block", "insertBefore");
665 EXPECT_EQ(columnSetSignature("mc"), "csc");
666 destroyRenderer("block");
667 EXPECT_EQ(columnSetSignature("mc"), "c");
668 }
669
670 TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerInsideContentAndRem ove)
671 {
672 setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id= 'mc'><div>outside<div id='insertBefore'>outside</div></div></div>");
673 EXPECT_EQ(columnSetSignature("mc"), "c");
674 reparentRenderer("mc", "block", "insertBefore");
675 EXPECT_EQ(columnSetSignature("mc"), "csc");
676 destroyRenderer("block");
677 EXPECT_EQ(columnSetSignature("mc"), "c");
678 }
679
680 TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerAfterSpannerAndRemo ve)
681 {
682 setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id= 'mc'><div class='s'></div></div>");
683 EXPECT_EQ(columnSetSignature("mc"), "s");
684 reparentRenderer("mc", "block");
685 EXPECT_EQ(columnSetSignature("mc"), "scsc");
686 destroyRenderer("block");
687 EXPECT_EQ(columnSetSignature("mc"), "s");
688 }
689
690 TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerBeforeSpannerAndRem ove)
691 {
692 setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id= 'mc'><div id='insertBefore' class='s'></div></div>");
693 EXPECT_EQ(columnSetSignature("mc"), "s");
694 reparentRenderer("mc", "block", "insertBefore");
695 EXPECT_EQ(columnSetSignature("mc"), "cscs");
696 destroyRenderer("block");
697 EXPECT_EQ(columnSetSignature("mc"), "s");
698 }
699
700 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContent)
701 {
702 setMulticolHTML("<div id='mc'><div id='block'>text<div class='s'></div>text< /div></div>");
703 EXPECT_EQ(columnSetSignature("mc"), "csc");
704 destroyRenderer("block");
705 EXPECT_EQ(columnSetSignature("mc"), "");
706 }
707
708 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndSomeContentBefore)
709 {
710 setMulticolHTML("<div id='mc'>text<div id='block'>text<div class='s'></div>< /div></div>");
711 EXPECT_EQ(columnSetSignature("mc"), "cs");
712 destroyRenderer("block");
713 EXPECT_EQ(columnSetSignature("mc"), "c");
714 }
715
716 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentBefore)
717 {
718 setMulticolHTML("<div id='mc'><div id='block'>text<div class='s'></div></div ></div>");
719 EXPECT_EQ(columnSetSignature("mc"), "cs");
720 destroyRenderer("block");
721 EXPECT_EQ(columnSetSignature("mc"), "");
722 }
723
724 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentBeforeWithContent After)
725 {
726 setMulticolHTML("<div id='mc'><div id='block'>text<div class='s'></div></div >text</div>");
727 EXPECT_EQ(columnSetSignature("mc"), "csc");
728 destroyRenderer("block");
729 EXPECT_EQ(columnSetSignature("mc"), "c");
730 }
731
732 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndSomeContentAfter)
733 {
734 setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text</div >text</div>");
735 EXPECT_EQ(columnSetSignature("mc"), "csc");
736 destroyRenderer("block");
737 EXPECT_EQ(columnSetSignature("mc"), "c");
738 }
739
740 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentAfter)
741 {
742 setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text</div ></div>");
743 EXPECT_EQ(columnSetSignature("mc"), "csc");
744 destroyRenderer("block");
745 EXPECT_EQ(columnSetSignature("mc"), "");
746 }
747
748 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentAfterWithContentB efore)
749 {
750 setMulticolHTML("<div id='mc'>text<div id='block'><div class='s'></div>text< /div></div>");
751 EXPECT_EQ(columnSetSignature("mc"), "csc");
752 destroyRenderer("block");
753 EXPECT_EQ(columnSetSignature("mc"), "c");
754 }
755
756 TEST_F(MultiColumnTreeModifyingTest, RemoveTwoSpannersBeforeContent)
757 {
758 setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div><div clas s='s'></div></div>text</div>");
759 EXPECT_EQ(columnSetSignature("mc"), "cssc");
760 destroyRenderer("block");
761 EXPECT_EQ(columnSetSignature("mc"), "c");
762 }
763
764 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContentAndSpanner)
765 {
766 setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text<div class='s'></div>text</div></div>");
767 EXPECT_EQ(columnSetSignature("mc"), "cscsc");
768 destroyRenderer("block");
769 EXPECT_EQ(columnSetSignature("mc"), "");
770 }
771
772 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContentAndSpannerBeforeCont ent)
773 {
774 setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text<div class='s'></div></div>text</div>");
775 EXPECT_EQ(columnSetSignature("mc"), "cscsc");
776 destroyRenderer("block");
777 EXPECT_EQ(columnSetSignature("mc"), "c");
778 }
779
780 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContentAndSpannerAfterConte nt)
781 {
782 setMulticolHTML("<div id='mc'>text<div id='block'><div class='s'></div>text< div class='s'></div></div></div>");
783 EXPECT_EQ(columnSetSignature("mc"), "cscs");
784 destroyRenderer("block");
785 EXPECT_EQ(columnSetSignature("mc"), "c");
786 }
787
788 TEST_F(MultiColumnTreeModifyingTest, RemoveInvalidSpannerInSpannerBetweenContent )
789 {
790 setMulticolHTML("<div id='mc'>text<div class='s'><div id='spanner'></div></d iv>text</div>");
791 EXPECT_EQ(columnSetSignature("mc"), "csc");
792 destroyRenderer("spanner");
793 EXPECT_EQ(columnSetSignature("mc"), "csc");
794 }
795
796 TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerWithInvalidSpannerBetweenConte nt)
797 {
798 setMulticolHTML("<div id='mc'>text<div id='spanner'><div class='s'></div></d iv>text</div>");
799 EXPECT_EQ(columnSetSignature("mc"), "csc");
800 destroyRenderer("spanner");
801 EXPECT_EQ(columnSetSignature("mc"), "c");
802 }
803
344 } // anonymous namespace 804 } // anonymous namespace
345 805
346 } // namespace blink 806 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698