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

Side by Side Diff: third_party/WebKit/Source/core/style/ComputedStyle.cpp

Issue 1809643008: Adding or changing any of box-shadow, outline, or border-image-outset does not need a layout.. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated Created 4 years, 9 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) 1999 Antti Koivisto (koivisto@kde.org) 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. 4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 return true; 528 return true;
529 529
530 if (rareNonInheritedData->m_deprecatedFlexibleBox.get() != other.rareNon InheritedData->m_deprecatedFlexibleBox.get() 530 if (rareNonInheritedData->m_deprecatedFlexibleBox.get() != other.rareNon InheritedData->m_deprecatedFlexibleBox.get()
531 && *rareNonInheritedData->m_deprecatedFlexibleBox.get() != *other.ra reNonInheritedData->m_deprecatedFlexibleBox.get()) 531 && *rareNonInheritedData->m_deprecatedFlexibleBox.get() != *other.ra reNonInheritedData->m_deprecatedFlexibleBox.get())
532 return true; 532 return true;
533 533
534 if (rareNonInheritedData->m_flexibleBox.get() != other.rareNonInheritedD ata->m_flexibleBox.get() 534 if (rareNonInheritedData->m_flexibleBox.get() != other.rareNonInheritedD ata->m_flexibleBox.get()
535 && *rareNonInheritedData->m_flexibleBox.get() != *other.rareNonInher itedData->m_flexibleBox.get()) 535 && *rareNonInheritedData->m_flexibleBox.get() != *other.rareNonInher itedData->m_flexibleBox.get())
536 return true; 536 return true;
537 537
538 // FIXME: We should add an optimized form of layout that just recomputes visual overflow.
539 if (!rareNonInheritedData->shadowDataEquivalent(*other.rareNonInheritedD ata.get()))
540 return true;
541
542 if (!rareNonInheritedData->reflectionDataEquivalent(*other.rareNonInheri tedData.get())) 538 if (!rareNonInheritedData->reflectionDataEquivalent(*other.rareNonInheri tedData.get()))
543 return true; 539 return true;
544 540
545 if (rareNonInheritedData->m_multiCol.get() != other.rareNonInheritedData ->m_multiCol.get() 541 if (rareNonInheritedData->m_multiCol.get() != other.rareNonInheritedData ->m_multiCol.get()
546 && *rareNonInheritedData->m_multiCol.get() != *other.rareNonInherite dData->m_multiCol.get()) 542 && *rareNonInheritedData->m_multiCol.get() != *other.rareNonInherite dData->m_multiCol.get())
547 return true; 543 return true;
548 544
549 // If the counter directives change, trigger a relayout to re-calculate counter values and rebuild the counter node tree. 545 // If the counter directives change, trigger a relayout to re-calculate counter values and rebuild the counter node tree.
550 const CounterDirectiveMap* mapA = rareNonInheritedData->m_counterDirecti ves.get(); 546 const CounterDirectiveMap* mapA = rareNonInheritedData->m_counterDirecti ves.get();
551 const CounterDirectiveMap* mapB = other.rareNonInheritedData->m_counterD irectives.get(); 547 const CounterDirectiveMap* mapB = other.rareNonInheritedData->m_counterD irectives.get();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 return true; 648 return true;
653 } else if (noninherited_flags.effectiveDisplay == LIST_ITEM) { 649 } else if (noninherited_flags.effectiveDisplay == LIST_ITEM) {
654 if (inherited_flags._list_style_type != other.inherited_flags._list_styl e_type 650 if (inherited_flags._list_style_type != other.inherited_flags._list_styl e_type
655 || inherited_flags._list_style_position != other.inherited_flags._li st_style_position) 651 || inherited_flags._list_style_position != other.inherited_flags._li st_style_position)
656 return true; 652 return true;
657 } 653 }
658 654
659 if ((visibility() == COLLAPSE) != (other.visibility() == COLLAPSE)) 655 if ((visibility() == COLLAPSE) != (other.visibility() == COLLAPSE))
660 return true; 656 return true;
661 657
662 if (!m_background->outline().visuallyEqual(other.m_background->outline())) {
663 // FIXME: We only really need to recompute the overflow but we don't hav e an optimized layout for it.
664 return true;
665 }
666
667 if (hasPseudoStyle(PseudoIdScrollbar) != other.hasPseudoStyle(PseudoIdScroll bar)) 658 if (hasPseudoStyle(PseudoIdScrollbar) != other.hasPseudoStyle(PseudoIdScroll bar))
668 return true; 659 return true;
669 660
670 // Movement of non-static-positioned object is special cased in ComputedStyl e::visualInvalidationDiff(). 661 // Movement of non-static-positioned object is special cased in ComputedStyl e::visualInvalidationDiff().
671 662
672 return false; 663 return false;
673 } 664 }
674 665
675 bool ComputedStyle::diffNeedsFullLayout(const ComputedStyle& other) const 666 bool ComputedStyle::diffNeedsFullLayout(const ComputedStyle& other) const
676 { 667 {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 if (rareNonInheritedData->m_mask != other.rareNonInheritedData->m_mask 717 if (rareNonInheritedData->m_mask != other.rareNonInheritedData->m_mask
727 || rareNonInheritedData->m_maskBoxImage != other.rareNonInheritedDat a->m_maskBoxImage) 718 || rareNonInheritedData->m_maskBoxImage != other.rareNonInheritedDat a->m_maskBoxImage)
728 return true; 719 return true;
729 } 720 }
730 721
731 return false; 722 return false;
732 } 723 }
733 724
734 bool ComputedStyle::diffNeedsPaintInvalidationObject(const ComputedStyle& other) const 725 bool ComputedStyle::diffNeedsPaintInvalidationObject(const ComputedStyle& other) const
735 { 726 {
727 if (!m_background->outline().visuallyEqual(other.m_background->outline()))
728 return true;
Xianzhu 2016/03/22 17:02:05 We can avoid this check by adjusting visualOverflo
Xianzhu 2016/03/23 20:28:26 Please ignore this comment if you take the StyleDi
736 if (inherited_flags._visibility != other.inherited_flags._visibility 729 if (inherited_flags._visibility != other.inherited_flags._visibility
737 || inherited_flags.m_printColorAdjust != other.inherited_flags.m_printCo lorAdjust 730 || inherited_flags.m_printColorAdjust != other.inherited_flags.m_printCo lorAdjust
738 || inherited_flags._insideLink != other.inherited_flags._insideLink 731 || inherited_flags._insideLink != other.inherited_flags._insideLink
739 || !surround->border.visuallyEqual(other.surround->border) 732 || !surround->border.visuallyEqual(other.surround->border)
740 || !m_background->visuallyEqual(*other.m_background)) 733 || !m_background->visuallyEqual(*other.m_background))
741 return true; 734 return true;
742 735
743 if (rareInheritedData.get() != other.rareInheritedData.get()) { 736 if (rareInheritedData.get() != other.rareInheritedData.get()) {
744 if (rareInheritedData->userModify != other.rareInheritedData->userModify 737 if (rareInheritedData->userModify != other.rareInheritedData->userModify
745 || rareInheritedData->userSelect != other.rareInheritedData->userSel ect 738 || rareInheritedData->userSelect != other.rareInheritedData->userSel ect
746 || rareInheritedData->m_imageRendering != other.rareInheritedData->m _imageRendering) 739 || rareInheritedData->m_imageRendering != other.rareInheritedData->m _imageRendering)
747 return true; 740 return true;
748 } 741 }
749 742
750 if (rareNonInheritedData.get() != other.rareNonInheritedData.get()) { 743 if (rareNonInheritedData.get() != other.rareNonInheritedData.get()) {
751 if (rareNonInheritedData->userDrag != other.rareNonInheritedData->userDr ag 744 if (rareNonInheritedData->userDrag != other.rareNonInheritedData->userDr ag
752 || rareNonInheritedData->m_objectFit != other.rareNonInheritedData-> m_objectFit 745 || rareNonInheritedData->m_objectFit != other.rareNonInheritedData-> m_objectFit
753 || rareNonInheritedData->m_objectPosition != other.rareNonInheritedD ata->m_objectPosition 746 || rareNonInheritedData->m_objectPosition != other.rareNonInheritedD ata->m_objectPosition
747 || !rareNonInheritedData->shadowDataEquivalent(*other.rareNonInherit edData.get())
Xianzhu 2016/03/22 17:02:05 Ditto.
754 || !rareNonInheritedData->shapeOutsideDataEquivalent(*other.rareNonI nheritedData.get()) 748 || !rareNonInheritedData->shapeOutsideDataEquivalent(*other.rareNonI nheritedData.get())
755 || !rareNonInheritedData->clipPathDataEquivalent(*other.rareNonInher itedData.get()) 749 || !rareNonInheritedData->clipPathDataEquivalent(*other.rareNonInher itedData.get())
756 || (visitedLinkBorderLeftColor() != other.visitedLinkBorderLeftColor () && borderLeftWidth()) 750 || (visitedLinkBorderLeftColor() != other.visitedLinkBorderLeftColor () && borderLeftWidth())
757 || (visitedLinkBorderRightColor() != other.visitedLinkBorderRightCol or() && borderRightWidth()) 751 || (visitedLinkBorderRightColor() != other.visitedLinkBorderRightCol or() && borderRightWidth())
758 || (visitedLinkBorderBottomColor() != other.visitedLinkBorderBottomC olor() && borderBottomWidth()) 752 || (visitedLinkBorderBottomColor() != other.visitedLinkBorderBottomC olor() && borderBottomWidth())
759 || (visitedLinkBorderTopColor() != other.visitedLinkBorderTopColor() && borderTopWidth()) 753 || (visitedLinkBorderTopColor() != other.visitedLinkBorderTopColor() && borderTopWidth())
760 || (visitedLinkOutlineColor() != other.visitedLinkOutlineColor() && outlineWidth()) 754 || (visitedLinkOutlineColor() != other.visitedLinkOutlineColor() && outlineWidth())
761 || (visitedLinkBackgroundColor() != other.visitedLinkBackgroundColor ())) 755 || (visitedLinkBackgroundColor() != other.visitedLinkBackgroundColor ()))
762 return true; 756 return true;
763 } 757 }
(...skipping 13 matching lines...) Expand all
777 if (rareNonInheritedData.get() != other.rareNonInheritedData.get()) { 771 if (rareNonInheritedData.get() != other.rareNonInheritedData.get()) {
778 if (!transformDataEquivalent(other)) 772 if (!transformDataEquivalent(other))
779 diff.setTransformChanged(); 773 diff.setTransformChanged();
780 774
781 if (rareNonInheritedData->opacity != other.rareNonInheritedData->opacity ) 775 if (rareNonInheritedData->opacity != other.rareNonInheritedData->opacity )
782 diff.setOpacityChanged(); 776 diff.setOpacityChanged();
783 777
784 if (rareNonInheritedData->m_filter != other.rareNonInheritedData->m_filt er) 778 if (rareNonInheritedData->m_filter != other.rareNonInheritedData->m_filt er)
785 diff.setFilterChanged(); 779 diff.setFilterChanged();
786 780
781 if (!rareNonInheritedData->shadowDataEquivalent(*other.rareNonInheritedD ata.get()))
782 diff.setVisualOverflowChanged();
Xianzhu 2016/03/23 20:28:26 Move this to diffNeedsRecomputeOverflow() if you t
783
787 if (rareNonInheritedData->m_backdropFilter != other.rareNonInheritedData ->m_backdropFilter) 784 if (rareNonInheritedData->m_backdropFilter != other.rareNonInheritedData ->m_backdropFilter)
788 diff.setBackdropFilterChanged(); 785 diff.setBackdropFilterChanged();
789 } 786 }
790 787
788 if (!m_background->outline().visuallyEqual(other.m_background->outline()) || !surround->border.visualOverflowEqual(other.surround->border))
789 diff.setVisualOverflowChanged();
Xianzhu 2016/03/23 20:28:26 Ditto.
790
791 if (!diff.needsPaintInvalidation()) { 791 if (!diff.needsPaintInvalidation()) {
792 if (inherited->color != other.inherited->color 792 if (inherited->color != other.inherited->color
793 || inherited->visitedLinkColor != other.inherited->visitedLinkColor 793 || inherited->visitedLinkColor != other.inherited->visitedLinkColor
794 || inherited_flags.m_textUnderline != other.inherited_flags.m_textUn derline 794 || inherited_flags.m_textUnderline != other.inherited_flags.m_textUn derline
795 || visual->textDecoration != other.visual->textDecoration) { 795 || visual->textDecoration != other.visual->textDecoration) {
796 diff.setTextDecorationOrColorChanged(); 796 diff.setTextDecorationOrColorChanged();
797 } else if (rareNonInheritedData.get() != other.rareNonInheritedData.get( ) 797 } else if (rareNonInheritedData.get() != other.rareNonInheritedData.get( )
798 && (rareNonInheritedData->m_textDecorationStyle != other.rareNonInhe ritedData->m_textDecorationStyle 798 && (rareNonInheritedData->m_textDecorationStyle != other.rareNonInhe ritedData->m_textDecorationStyle
799 || rareNonInheritedData->m_textDecorationColor != other.rareNonI nheritedData->m_textDecorationColor 799 || rareNonInheritedData->m_textDecorationColor != other.rareNonI nheritedData->m_textDecorationColor
800 || rareNonInheritedData->m_visitedLinkTextDecorationColor != oth er.rareNonInheritedData->m_visitedLinkTextDecorationColor)) { 800 || rareNonInheritedData->m_visitedLinkTextDecorationColor != oth er.rareNonInheritedData->m_visitedLinkTextDecorationColor)) {
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after
1881 if (!shadowList) 1881 if (!shadowList)
1882 return false; 1882 return false;
1883 for (size_t i = shadowList->shadows().size(); i--; ) { 1883 for (size_t i = shadowList->shadows().size(); i--; ) {
1884 if (shadowList->shadows()[i].color().isCurrentColor()) 1884 if (shadowList->shadows()[i].color().isCurrentColor())
1885 return true; 1885 return true;
1886 } 1886 }
1887 return false; 1887 return false;
1888 } 1888 }
1889 1889
1890 } // namespace blink 1890 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698